如何再次执行docker run,保持容器id 和容器name 不变

对于一个已经存在的 container ,再次执行 docker run 有没有一种方式可以保持 container id 和 container name 不变。
例如:
第一次执行:
docker run -itd uccent /bash

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS      PORTS      NAMES
0c91234630f9        mydocker            "/bin/bash"         9 days ago          Up 9 days              uccent

现在想要加参数 -v,或者别的参数:
docker run -itd -v a:b ucent /bash

现在发现者之前的命令,参数是不够,想要加参数重新执行,怎么保持 container id 和 container name 不变呢?

阅读 8k
3 个回答

id不可能保持不变的,name可以使用--name参数指定

你要区分如下情况:

  1. 已有name,想要新起一个命名为name的容器
  2. 没有name,需要新起一个命名为name的容器
  3. 已有name的容器,但暂停了,重新启动起来

这里1两种情况,你是没有办法命名为name,且容器ID和已有的name容器ID肯定不同
对于2,可以起命名为name的容器,但容器ID和以往可能存在过的name命名容器的ID也不会相同(因为容器ID是类似UUID算法动态生成,而不能指定)
对于3,这个启动的容器命名还是name,ID还是原来的。

你想追加挂载数据文件目录映射,这对已经启动的容器来说是不可能的,因为docker官方并没有提供给你运行容器修改/添加挂载配置的操作

你唯一可行的方法是通过 docker cp 把相应已运行容器目录下数据备份到某个地方,再在新启动的容器中 通过 -v 挂载进去。

既然要新启一个容器为啥要Id和name保持不变?换个id和name不是一样用吗?docker的最佳实践里,更改了镜像就应该重新打一个tag生成一个新的镜像,有需要持久化的数据就应该创建卷挂载出来。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏