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

在使用Docker打包容器为镜像时遇到配置文件和页面丢失的问题,原因是之前通过数据卷挂载的方式运行nginx,导致镜像中并未包含实际文件。解决方法是使用docker cp命令将宿主机中的配置文件和页面复制到容器内,然后再提交为镜像,这样打包后的镜像将包含所有所需数据。
摘要由CSDN通过智能技术生成

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

欢迎尝试!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值