Docker – 从图像中检索命令行

我想知道是否有方法来检查启动容器的“docker run”命令?

因为我想添加一些参数到一个停止的容器,我需要检索原始命令,添加我的新参数并启动它。

感谢您的帮助。

如果唯一要更改的是重新启动策略,则可以(在docker引擎1.11中)使用docker-update。 docker更新可以应用到运行或停止的容器,请参阅man docker-update,例如:

 # docker update --restart=unless-stopped containername 

docker ps的输出中有一些有用的信息,特别是端口映射,例如:

 # docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 75d1e6adbb37 my-fancy-image "/usr/sbin/sshd -D" 22 hours ago Up 22 minutes 0.0.0.0:8022->22/tcp fancy_torvalds 

所有其他用于启动容器的命令行参数都可以在docker inspect的输出中find,例如:

 # docker inspect containername ... "Path": "/usr/sbin/sshd", "Args": [ "-D" ], ... "HostConfig": { "Binds": [ "/home/user/workspace/thing:/home/other/workspace/thing" ], ... "PortBindings": { "22/tcp": [ { "HostIp": "", "HostPort": "8022" } ] }, "RestartPolicy": { "Name": "unless-stopped", "MaximumRetryCount": 0 }, ... 

如果不是您想要更改的重新启动策略(并且您的容器中有应用程序数据),则可以将该容器保存为图像,然后将其作为新的容器运行。 这应该不会使用重要的额外磁盘空间。 您不需要将其推送到任何存储库:

 # docker commit -m="Message" -a="Author Name" containername username/imagename:latest # docker run <new options here> username/imagename:latest 

我不得不质疑你为什么要这么做。 你是否将所有的应用程序数据都包含在与应用程序本身相同的容器中,使你不愿意只删除容器,并用你喜欢的选项创build一个新的容器? 关于这个问题有很多优秀的讨论可以find,特别是:

  • 如何处理docker中的永久存储(如数据库)
  • 更改镜像后如何升级Docker容器
  • pipe理容器中的数据