有没有办法将容器及其数据克隆到具有不同启动参数的新容器中?
目前我只能在没有数据的情况下启动一个新的克隆容器(来自自定义图像).
我告诉你我要做什么:我启动了一个带有一些启动参数的"docker-jenkins"容器然后配置它,但现在我注意到我忘记了一些重要的启动参数,所以我想重新启动相同的容器添加更多的启动参数. ..
问题是(如果我理解的话)我无法修改现有运行容器的起始参数,所以我的想法是启动一个克隆的(数据包含)具有不同的参数,但我不明白该怎么做...
有人能帮我吗?
1.使用卷
如果您的唯一要点是保留数据,则需要使用Volumes.
数据卷是绕过Union文件系统的一个或多个容器中的特殊指定目录.数据卷为持久性或共享数据提供了几个有用的功能:
- 创建容器时初始化卷.如果容器的基本映像包含指定安装点的数据,则在卷初始化时将现有数据复制到新卷中.(请注意,安装主机目录时不适用.)
- 可以在容器之间共享和重用数据卷.
- 直接对数据卷进行更改.
- 更新映像时,不会包括对数据卷的更改.
- 即使删除容器本身,数据量仍然存在.
资源:
基本上,您将机器中的文件夹映射到容器中.当您终止容器并生成一个新实例(使用已修改的参数)时,将重新映射您的卷(使用现有数据).
例:
docker run -p 8080:8080 -p 50000:50000 -v /your/home:/var/jenkins_home jenkins
Run Code Online (Sandbox Code Playgroud)
资源:
2.使用commit创建快照
另一种方法是使用docker commit命令.
将容器的文件更改或设置提交到新映像中会很有用.这允许您通过运行交互式shell来调试容器,或将工作数据集导出到另一个服务器.通常,最好使用Dockerfiles以文档化和可维护的方式管理图像.
提交操作将不包括容器内安装的卷中包含的任何数据. https://docs.docker.com/engine/reference/commandline/commit/
$ docker ps
ID IMAGE COMMAND CREATED STATUS PORTS
c3f279d17e0a ubuntu:12.04 /bin/bash 7 days ago Up 25 hours
197387f1b436 ubuntu:12.04 /bin/bash 7 days ago Up 25 hours
$ docker commit c3f279d17e0a svendowideit/testimage:version3
f5283438590d
$ docker images
REPOSITORY TAG ID CREATED SIZE
svendowideit/testimage version3 f5283438590d 16 seconds ago 335.7 MB
Run Code Online (Sandbox Code Playgroud)
也可以使用更改的配置进行提交:
docker commit --change='CMD ["apachectl", "-DFOREGROUND"]' -c "EXPOSE 80" c3f279d17e0a svendowideit/testimage:version4
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18238 次 |
| 最近记录: |