如何使用以前的网络和卷升级docker容器?

时间:2017-02-27 14:50:25

标签: docker docker-networking docker-volume dockerpy

我正在开发一个应用程序,我们pop containers包含卷和自定义网络。

我需要添加一个功能,管理员可以将正在运行的容器升级到最新版本。所以我希望能够从中获取各种信息,弹出一个带有旧配置的新容器。

问题

但是我不确定我真的需要抓住旧容器以及如何使用它。例如,

  • NetworkSettings.Networks是否足够,或者数据中的其他地方是否有网络信息?
  • 如何在Mounts

    中装载包含信息的音量
        {
            "Type": "volume",
            "Name": "841d6a1709b365763c85fb4b7400c87f264d468eb1691a660fe81761da6e374f",
            "Source": "/var/lib/docker/volumes/841d6a1709b365763c85fb4b7400c87f264d468eb1691a660fe81761da6e374f/_data",
            "Destination": "/home/mast/.ssh",
            "Driver": "local",
            "Mode": "",
            "RW": True,
            "Propagation": ""
        } 
    

1 个答案:

答案 0 :(得分:0)

我仍然需要检查网络部分,但是使用前一个Source的完整路径作为新源可以安装卷。

更新volumes是一个挂载点列表(目的地不是来源)。

import docker
containers = docker_api.containers()

docker_api.create_container(
    image='docker.site.fr:5000/coaxis/coaxisopt_daemon:latest', 
    volumes=['/home/mast/.ssh', '/etc/mast'], 
    host_config=docker_api.create_host_config(
        binds={
                "/var/lib/docker/volumes/841d6a1709b365763c85fb4b7400c87f264d468eb1691a660fe81761da6e374f/_data": {
                    'bind': "/home/mast/.ssh",
                    'mode': 'rw'
                },
                "/var/lib/docker/volumes/002730cbb4dd9b37ad808915a60081508885d533fe003b529b8d0ab4fa46e92e/_data": {
                    'bind': "/etc/mast",
                    'mode': 'rw'
                }
            }
    ))