目的:
在阿里云ECS服務(wù)器上的docker下建立一個nginx的web服務(wù)器,并啟動它,讓外網(wǎng)可以看到
01-找到需要使用的鏡像
docker pull nginx:1.17.5-alpine
#可以先到nginx.org官網(wǎng)查看當前最新版本蠢挡,再到hub.docker.com查找nginx的版本春塌,以上選中的alpine版本是一個非常小的版本
02-查看當前系統(tǒng)下有多少個鏡像
docker images
# 或者
docker image ls
02
03-列出容器內(nèi)的目錄結(jié)構(gòu)(非必要操作)
docker container run nginx:1.17.5-alpine ls
# 可以看到這應該是一個小型linux的目錄結(jié)構(gòu)
03
04-確認容器的核心版本(非必要操作)
docker container run nginx:1.17.5-alpine cat /etc/os-release
# 可以看到系統(tǒng)是Alpine Linux 3.10.3
04
05-啟動nginx容器
docker container run --name mynginx -d -p 99:80 nginx:1.17.5-alpine
# container可以省略
# --name 該容器的名稱
# -d 后臺運行
# -p 99:80 在本地服務(wù)器端口和啟動的容器內(nèi)端口做映射。本地對外端口99, nginx容器端口80
# 可以看到返回了一串哈希碼,表明啟動成功了
05
06-檢查一下nginx容器是否真的啟動了
docker container ls
# 或
docker container ps
# 或
docker ps
06
07-檢查一下nginx的web服務(wù)是否啟動了
# 先用ifconfig檢查一下當前服務(wù)器的ip地址,找出來后用curl命令來檢測
curl http://172.16.130.208:99
# 或
curl http://127.0.0.1:99
# 可以看到web服務(wù)器已經(jīng)啟動了, 能看到默認的index.html文件內(nèi)容交排。
07
08-復制服務(wù)器文件到docker的nginx指定目錄下
docker cp /home/web.zip mynginx:/usr/share/nginx/html
09-檢查一下nginx容器的bin目錄下有什么自帶指令
docker exec -it mynginx ls /bin
09
10-進入到nginx的命令行操作界面, 使用sh指令操作nginx容器
alpine linux沒有附帶bash, 只有sh可用
docker exec -it mynginx sh
# 可以看到已經(jīng)進入到nginx容器內(nèi)了
10
11-解壓復制進來的文件
把原目錄下的其它文件刪除掉
11-01
解壓web文件
11-02
12-在阿里云ECS控制面板上放行99端口
12
13-現(xiàn)在可以用瀏覽器訪問了
13
補充:
從以上步驟來看, 其實有一個步驟非常繁瑣, 就是將外部web文件復制進nginx容器的默認html存儲路徑, 如果我們需要經(jīng)常性維護該網(wǎng)站, 需要來回的復制解壓, 劃不來.
可以采用路徑映射的形式來操作, web文件還是放置在服務(wù)器的常規(guī)路徑上, 讓這個路徑與nginx的html路徑進行映射對應就可以. 維護時只需要維護服務(wù)器該路徑下的文件即可.
- 停止當前的nginx容器
docker stop mynginx
- 移除nginx容器
docker rm mynginx
- 啟動nginx容器, 并指定端口, 做好服務(wù)器端路徑和nginx容器端路徑映射
docker run --name mynginx -d -p 99:80 -v /usr/local/web:/usr/share/nginx/html nginx:1.17.5-alpine
現(xiàn)在可以檢查一下了
other-01
至此, 基本完成了nginx容器的搭建和啟動, 并將web程序掛載進去了, 以后更新web程序的話,只要用ftp或xshell之類的UI界面軟件操作, 那樣更友好.
one more thing:
web文件是從網(wǎng)上隨便找的flutter生成的, 自己編譯了一下. 僅做學習使用, 如有違規(guī), 請?zhí)嵝盐覄h除, 謝謝!