拉取 nginx 最新版鏡像,然后簡單啟動一個 nginx 容器:
docker pull nginx:latest
docker run --name nginx01 -d -p 80:80 nginx
這樣就安裝並運行好了 nginx,可以使用瀏覽器訪問 ip 地址即可看到 nginx 服務。
如果要對 nginx 進行配置,就需要通過交互模式進入容器:
docker exec -it nginx01 bash
在容器內部就可以訪問到完整的 nginx 程序文件,可以找到:
html文件目錄:/usr/share/nginx/html
nginx.conf 配置文件:/etc/nginx/nginx.conf
default.conf 配置文件:/etc/nginx/conf.d/default.conf
log日志文件目錄:/var/log/nginx
ssl配置目錄:/ssl
每一次都要進入容器內部去編輯配置文件有些不方便,而且還需要在容器內部安裝 vi 或 vim,所以最好將容器與主機磁盤進行掛載。
掛載之前,我們在主機上創建好 nginx 文件目錄:
sudo mkdir -p /home/docker/nginx/{log,ssl,html,conf/conf.d}
sudo chmod -R 755 /home/docker/nginx/html
然后通過 docker cp 命令將容器內的 nginx 配置文件 copy 到剛創建的主機文件目錄中:
docker cp nginx01:/etc/nginx/nginx.conf /home/docker/nginx/conf/nginx.conf
docker cp nginx01:/etc/nginx/conf.d/default.conf /home/docker/nginx/conf/conf.d/default.conf
接着,我們停止並刪除 nginx01 容器:
docker stop nginx01
docker rm nginx01
好了,我們要重新啟動一個 nginx 容器了:
docker run --name nginx02 -d --restart=always --privileged=true -v /home/docker/nginx/html:/usr/share/nginx/html -v /home/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /home/docker/nginx/conf/conf.d/default.conf:/etc/nginx/conf.d/default.conf -v /home/docker/nginx/log:/var/log/nginx -v /home/docker/nginx/ssl:/ssl/ -p 443:443 -p 80:80 nginx
使用 --privileged=true 參數,容器內的 root 用戶才擁有真正的 root 權限,否則容器內的 root 只是主機上的一個普通用戶。
使用 -v path1:path2 參數,其中 path1 是主機的磁盤地址,path2 是 docker 容器的虛擬磁盤地址,可以定義多個 -v 映射多個文件夾。
最后,通過 docker ps 命令查看 nginx 容器是否已成功運行。
通常,我們在 nginx 中部署項目的時候,都喜歡在 conf.d/ 目錄下創建新的配置文件(如:xxx.conf),但在 docker 中,你需要注意新建的 xxx.conf 文件是否被成功映射,否則可能就無法被 nginx 正常讀取到,也就無法生效。
一個簡單的記錄,希望有所幫助!