我想知道是否有办法检索启动容器的“docker run”命令?
因为我想将一些参数添加到已停止的容器中,我需要检索原始命令,添加我的新参数并启动它。
感谢您的帮助。
答案 0 :(得分:1)
如果您想要更改的唯一内容是重启策略,您现在可以(在docker引擎1.11中)使用docker-update。 docker-update可以应用于正在运行或已停止的容器,请参阅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的输出中找到,例如:
# 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
我必须质疑你为什么要这样做。您是否将所有应用程序数据包含在与应用程序本身相同的容器中,这使您不愿意删除容器并使用您的首选选项启动新容器?关于这个主题有很多很好的讨论,特别是: