nginx挂载配置文件和日志-静态目录-方式一
环境说明
linux系统版本:lsb_release -a
docker 版本: docker -v
不同的操作系统以及软件版本,可能会遇到不一样的问题,一定要注意版本问题。
.a.使用命令启动一个容器。
错误命令: 下面的方式,启动容器时,-d 后面跟一个指定容器ID的参数写在前面,导致容器不能正常启动,出现异常
docker run --name testnginx -d 7f0fd59e0094 -p 8080:80
问题演示如
先删除该容器,
docker rm testnginx
解决办法: 将 -d 容器id的参数放在最后面即可
docker run --name testnginx -p 8080:80 -d 7f0fd59e0094
至于为什么,不知道原因,还请大佬指教。
测试结果如下,
.b.创建一些需要挂载的必要的目录和文件。
mkdir -p /opt/u01/exam/nginx/{conf.d,log}
touch nginx.conf
.c.从nginx容器中复制nginx相关的配置文件和目录到宿主机中。
docker cp testnginx:/etc/nginx/nginx.conf /opt/u01/exam/nginx/nginx.conf
docker cp testnginx:/etc/nginx/conf.d/ /opt/u01/exam/nginx/conf.d/
docker cp testnginx:/usr/share/nginx/html/ /opt/u01/exam/nginx/
注意路径: 第二个命令有/,第三个命令路径没有html后缀,否则路径后缀就会多一级,如下图所示,出现问题。
.d.删除原有容器,重新启动容器。
停止原来的容器
docker stop testnginx
删除原来的容器
docker rm testnginx
修改首页内容,
重新启动容器
docker run --name testnginx -p 8080:80 \
-v /opt/u01/exam/nginx/html:/usr/share/nginx/html \
-v /opt/u01/exam/nginx/conf.d:/etc/nginx/conf.d \
-v /opt/u01/exam/nginx/log:/var/log/nginx \
-v /opt/u01/exam/nginx/nginx.conf:/etc/nginx/nginx.conf \
-d 7f0fd59e0094 \
注意:指令最后面不需要添加nginx指令!!!,很多博主都表示需要添加nginx指令,实际上不需要该指令!
如下指令亲测有问题,最后面的nginx指令多余。
docker run --name testnginx -p 8080:80 \
-v /opt/u01/exam/nginx/html:/usr/share/nginx/html \
-v /opt/u01/exam/nginx/conf.d:/etc/nginx/conf.d \
-v /opt/u01/exam/nginx/log:/var/log/nginx \
-v /opt/u01/exam/nginx/nginx.conf:/etc/nginx/nginx.conf \
-d 7f0fd59e0094 \
nginx
最终nginx服务成功运行起来,自己也收获很多,认识到docker技术的博大精深,还有待好好学习。