目录
现象
docker run -it -P -v /opt/ceshi/nginx:/etc/nginx -v /opt/ceshi/html:/usr/share/nginx/html nginx:1.20 bash
docker通过-v参数具象挂载启动nginx如上:-v /opt/ceshi/conf:/etc/nginx -v /opt/ceshi/html:/usr/share/nginx/html;(docker-compose 通过volumes模块挂载也一样)
docker会自动在主机创建conf和html空目录,并且覆盖容器内部的目录,导致容器内部目录被清空,nginx读取不到/etc/nginx/nignx.conf文件,则无法启动。
处理办法
方法一:
通过不挂载方式启动nginx镜像。
docker run --name=nginx -itd -P nginx:1.20 bash
将容器内部的文件拷贝出来
docker cp [nginx容器ID]:/etc/nginx /opt/ceshi
docker cp [nginx容器ID]:/etc//usr/share/nginx/html /opt/ceshi
停止上面容器并删除
docker stop [容器id] ## docker ps 可查看容器id
docker rm [容器id]
重新启动容器
docker run -it -P -v /opt/ceshi/nginx:/etc/nginx -v /opt/ceshi/html:/usr/share/nginx/html nginx:1.20 bash
方法二:
手动创建docker要挂载的目录,从其他项目将文件拷到已创建的目录中,然后启动容器,注意:挂载的目录得一致。
docker run -it -P -v /opt/ceshi/nginx:/etc/nginx -v /opt/ceshi/html:/usr/share/nginx/html nginx:1.20 bash