Docker容器打包成镜像 丢失配置 丢失文件、页面问题
未找到原因前:
一开始不知道因为什么,每次容器打包成镜像,之前配置好的conf内容及页面都会消失。 具体操作如下:
- 将docker中的容器打包成镜像使用如下命令:
#将容器提交为镜像
sudo docker commit 容器ID pms-nginx:1.0
- 打包好的容器镜像可以使用
docker images 查看
#查看docker中的镜像
sudo docker images
- 但是此时运行容器会发现之前的配置都消失不见了
#运行容器
sudo docker run -d -p 80:80 pms-nginx:1.0
找到原因:
由于之前是使用挂载数据卷 的方式运行的nginx,因为nginx挂载数据卷后方便操作conf文件及页面。 其实挂载类似软连接性质 ,因此我在宿主机中操作的文件及配置并不实际存在容器中 ,容器只是引用 了挂载目录的文件。所以要使用docker的拷贝命令将宿主机上的文件拷贝到对应容器的目录中。 具体操作如下:
- 首先这是我一开始挂载运行的nginx
#运行nginx且挂载 前提要建好宿主机文件夹及文件
sudo docker run --name nginx -d -p 8000:80 --restart=always --privileged=true --net=host -v /volume1/中转站/pms前后端镜像/挂载目录/data:/usr/share/nginx/html -v /volume1/中转站/pms前后端镜像/挂载目录/conf/nginx.conf:/etc/nginx/nginx.conf -v /volume1/中转站/pms前后端镜像/挂载目录/logs:/var/log/nginx -v /volume1/中转站/pms前后端镜像/挂载目录/conf.d:/etc/nginx/conf.d -d nginx
- 由于是挂载上去的数据卷,所以想要打包完整的镜像需要将宿主机的文件拷贝过去
sudo docker cp /volume1/中转站/pms前后端镜像/default.conf 容器ID:/etc/nginx/conf.d/
sudo docker cp /volume1/中转站/pms前后端镜像/nginx.conf 容器ID:/etc/nginx/
sudo docker cp /volume1/中转站/pms前后端镜像/html/ 容器ID:/usr/share/nginx/html/
- 这样之后,再进行容器打包成镜像的话,所有的数据都不会丢失
sudo docker commit 容器ID pms-nginx:1.0
欢迎尝试!
|