- 打包命令
docker commit -a='作者' -m='备注' 容器ID 仓库名称:[TAG]
- 挂载说明
挂载类似软连接(快捷方式),挂载目录新增文件在容器中不会新增,容器只是引用了挂载目录的新增 文件,本地容器打包为本地镜像前必须将宿主机的挂载目录新增文件拷贝到对应的容器目录中,否则 挂载目录的新增文件无法被打包到本地镜像
- 引用说明
宿主机有A文件 容器没有A文件-->容器引用宿主机A文件 容器没有A文件-->打包镜像没有A文件 宿主机没有A文件 容器有A文件-->宿主机引用容器A文件 宿主机没有A文件-->打包镜像有A文件(宿主机不能编辑A文件) 宿主机有A文件 容器有A文件-->容器引用宿主机A文件 容器A文件没有使用-->打包镜像有A文件(打包镜像使用容器A文件) 经验总结:镜像打包数据不要放到宿主机挂载目录,而是将数据直接复制到容器挂载目录,宿主机挂载目录仅用作查看容器 数据使用,编辑挂载目录文件时进入容器vim编辑(apt update、apt -y install vim),这样挂载目录中的数据就可以 被打包进镜像(进入容器:docker exec -it --user root 容器ID /bin/bash)
- Docker安装Jenkins(通关版)
https://blog.csdn.net/tongxin_tongmeng/article/details/1270457121.挂载目录/opt/jenkins_home拷贝到容器/opt目录 docker cp /opt/jenkins_home 容器ID:/opt 注:不能拷贝到/var/jenkins_home,/var/jenkins_home为Jenkins容器默认的工作目录, Jenkins容器创建时该目录会被重新初始化,导致数据丢失,挂载目录备份到容器/opt目录后 将容器打包为新镜像并被备份到阿里云,新镜像从阿里云仓库拉取后,先使用新镜像非挂载方 式创建临时容器A,将备份数据从容器A拷贝回宿主机/opt,然后删除临时容器A,最后使用新 镜像挂载 拷贝到宿主机的备份数据/opt/jenkins_home 创建容器B,这样创建的容器B数据和 新镜像原始容器一致 2.docker commit -a='作者' -m='备注' 容器ID 仓库名称:[TAG] 注:容器打包为镜像前不可删除容器源镜像,否则无法进行镜像打包 3.镜像备份阿里云 docker login --username=童心同萌 registry.cn-hangzhou.aliyuncs.com docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/test_666/jenkins:[镜像版本号] docker push registry.cn-hangzhou.aliyuncs.com/test_666/jenkins:[镜像版本号] 4.阿里云拉取镜像 docker login --username=童心同萌 registry.cn-hangzhou.aliyuncs.com docker pull registry.cn-hangzhou.aliyuncs.com/test_666/jenkins:[镜像版本号] 5.非挂载方式创建临时容器A docker run -it 镜像ID 6.备份数据从临时容器A拷贝到宿主机/opt、挂载目录/opt/jenkins_home赋权777、删除临时容器A docker cp 容器ID:/opt/jenkins_home /opt && chmod -R 777 /opt/jenkins_home && docker rm -f 容器ID 7.挂载备份数据/opt/jenkins_home创建容器B docker run -it -v /opt/jenkins_home:/var/jenkins_home -p 9090:8080 -p 50000:50000 --name my_jenkins_9090 镜像ID 8.访问测试:192.168.1.239:9090-->备份数据已经恢复
Docker镜像打包(数据丢失)
于 2022-10-01 10:07:22 首次发布