0
点赞
收藏
分享

微信扫一扫

Docker容器打包成镜像 丢失配置 丢失文件、页面问题

郝春妮 2022-04-08 阅读 60
docker

Docker容器打包成镜像 丢失配置 丢失文件、页面问题

未找到原因前:

一开始不知道因为什么,每次容器打包成镜像,之前配置好的conf内容及页面都会消失。
具体操作如下:

  1. 将docker中的容器打包成镜像使用如下命令:
#将容器提交为镜像
sudo docker commit 容器ID pms-nginx:1.0
  1. 打包好的容器镜像可以使用 docker images查看
#查看docker中的镜像
sudo docker images
  1. 但是此时运行容器会发现之前的配置都消失不见了
#运行容器
sudo docker run -d -p 80:80 pms-nginx:1.0  

找到原因:

由于之前是使用挂载数据卷的方式运行的nginx,因为nginx挂载数据卷后方便操作conf文件及页面。
其实挂载类似软连接性质,因此我在宿主机中操作的文件及配置并不实际存在容器中,容器只是引用 了挂载目录的文件。所以要使用docker的拷贝命令将宿主机上的文件拷贝到对应容器的目录中。
具体操作如下:

  1. 首先这是我一开始挂载运行的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
  1. 由于是挂载上去的数据卷,所以想要打包完整的镜像需要将宿主机的文件拷贝过去
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/
  1. 这样之后,再进行容器打包成镜像的话,所有的数据都不会丢失
sudo docker commit  容器ID pms-nginx:1.0

欢迎尝试!

举报

相关推荐

0 条评论