Docker 安裝 Nginx
docker pull nginx 命令安裝
查找 Docker Hub 上的 nginx 鏡像:
docker search nginx
這里我們拉取官方的鏡像
docker pull nginx
等待下載完成后,我們就可以在本地鏡像列表里查到 REPOSITORY 為 nginx 的鏡像
docker images nginx
以下命令使用 Nginx 默認的配置,來啟動一個 Nginx 容器實例
docker run --name nginx-test1 -p 8081:80 -d nginx
nginx-test1
:
容器名稱-d:
設置容器在后台一直運行-p:
端口進行映射,將本地 8081 端口映射到容器內部的 80 端口(host port:container port)
執行以上命令會生成一串字符串,類似 13afb35cbc98ebd8ad451f0fda9bec24e814916c1e929b89363e7ca92c1746eb,這個表示容器的 ID,一般可作為日志的文件名。
我們可以使用 docker ps 命令查看容器是否有在運行:
docker ps
PORTS 部分表示端口映射,本地的 8081 端口映射到容器內部的 80 端口。
在瀏覽器中打開 http://機器IP:8081/,效果如下:
nginx 部署
首先,創建目錄 nginx, 用於存放后面的相關東西:
mkdir -p ./nginx/www ./nginx/logs ./nginx/conf
拷貝容器內 Nginx 默認配置文件到本地當前目錄下的 conf 目錄,容器 ID 可以查看 docker ps 命令輸入中的第一列:
docker cp 13afb35cbc98:/etc/nginx/nginx.conf ./nginx/conf
- www: 目錄將映射為 nginx 容器配置的虛擬目錄
- logs: 目錄將映射為 nginx 容器的日志目錄
- conf: 目錄里的配置文件將映射為 nginx 容器的配置文件
部署命令
docker run -d -p 8081:80 --name nginx-web-test -v /opt/miracleTest/nginx/www:/usr/share/nginx/html -v /opt/miracleTest/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /opt/miracleTest/nginx/logs:/var/log/nginx nginx
或者
docker run -d -p 8081:80 --name nginx-web-test -v $PWD/nginx/www:/usr/share/nginx/html -v $PWD/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v $PWD/nginx/logs:/var/log/nginx nginx
此命令中的機器目錄要是全路徑!!
命令說明:
-
-p 8081:80: 將主機的 8081 端口 映射到 容器的 80 端口
-
--name nginx-web-test:將容器命名為 nginx-web-test
-
-v $PWD/nginx/www:/usr/share/nginx/html:將我們自己創建的 www 目錄掛載到容器的 /usr/share/nginx/html
-
-v $PWD/nginx/conf/nginx.conf:/etc/nginx/nginx.conf:將我們自己創建的 nginx.conf 掛載到容器的 /etc/nginx/nginx.conf
-
-v $PWD/nginx/logs:/var/log/nginx:將我們自己創建的 logs 掛載到容器的 /var/log/nginx
啟動以上命令后進入 ./nginx/www 目錄:
cd $PWD/nginx/www
創建 index.html 文件,內容如下:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Docker Nginx</title> </head> <body> <h1>我的第一個標題: Docker Nginx</h1> <p>我的第一個段落: Hello, Nginx.</p> </body> </html>
刷新頁面,輸出結果為:
相關命令
如果要重新載入 Nginx 可以使用以下命令發送 HUP 信號到容器
docker kill -s HUP container-name
停止 Nginx 容器命令:
docker stop container-name
啟動 Nginx 容器命令:
docker start container-name
重啟 Nginx 容器命令:
docker restart container-name
PS: