目的:
在阿里云ECS服務器上的docker下建立一個nginx的web服務器,并啟動它,讓外網(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-列出容器內的目錄結構(非必要操作)
docker container run nginx:1.17.5-alpine ls
# 可以看到這應該是一個小型linux的目錄結構

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 在本地服務器端口和啟動的容器內端口做映射。本地對外端口99, nginx容器端口80
# 可以看到返回了一串哈希碼,表明啟動成功了

05
06-檢查一下nginx容器是否真的啟動了
docker container ls
# 或
docker container ps
# 或
docker ps

06
07-檢查一下nginx的web服務是否啟動了
# 先用ifconfig檢查一下當前服務器的ip地址,找出來后用curl命令來檢測
curl http://172.16.130.208:99
# 或
curl http://127.0.0.1:99
# 可以看到web服務器已經(jīng)啟動了, 能看到默認的index.html文件內容。

07
08-復制服務器文件到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容器內了

10
11-解壓復制進來的文件
把原目錄下的其它文件刪除掉

11-01
解壓web文件

11-02
12-在阿里云ECS控制面板上放行99端口

12
13-現(xiàn)在可以用瀏覽器訪問了

13
補充:
從以上步驟來看, 其實有一個步驟非常繁瑣, 就是將外部web文件復制進nginx容器的默認html存儲路徑, 如果我們需要經(jīng)常性維護該網(wǎng)站, 需要來回的復制解壓, 劃不來.
可以采用路徑映射的形式來操作, web文件還是放置在服務器的常規(guī)路徑上, 讓這個路徑與nginx的html路徑進行映射對應就可以. 維護時只需要維護服務器該路徑下的文件即可.
- 停止當前的nginx容器
docker stop mynginx
- 移除nginx容器
docker rm mynginx
- 啟動nginx容器, 并指定端口, 做好服務器端路徑和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除, 謝謝!