是否重新启动Docker容器“记得”初始运行参数?
我运行了一个非常 (8行)的参数列表的Docker容器:
docker run -d -p 5000:5000 --restart=always --name registry \ -v `pwd`/auth:/auth \ -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \ -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd \ -v `pwd`/certs:/certs \ -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/registry.crt \ -e REGISTRY_HTTP_TLS_KEY=/certs/registry.key \ registry:2
我确认这是通过docker ps
运行docker ps
:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES ff9c654bfc39 registry:2 "/bin/registry /etc/d" 2 days ago Up 13 minutes 0.0.0.0:5000->5000/tcp registry
然后,我通过docker stop ff9c654bfc39
停止了这个容器。 然后,我尝试通过发出与我第一次完全相同的docker run ...
(8class轮)重新运行集装箱:
Error response from daemon: Conflict. The name "registry" is already in use by container ff9c654bfc39. You have to delete (or rename) that container to be able to reuse that name.
所以然后我只是尝试docker restart ff9c654bfc39
,这似乎工作,但我不是100%确定的Docker“记得”我从最初运行容器时的8个参数行。 任何想法是否记住? 如果没有,那么包含这8行的正确的重启命令是什么?
正如@gabowsky在评论中解释的那样,是的,Docker会记得。
使用start
, stop
和restart
不会破坏容器,因此记住一切,包括数据(甚至在重新启动主机之间)。 什么stop
是停止在容器内运行的进程。 就这样。
另外,Docker以内部格式存储所有上下文,variables等。 您不必再次指定命令行参数。 要了解Docker知道您的容器的内容,可以运行docker inspect
。
相反, rm
会破坏所有的东西,包括没有持久化的数据,并且需要重新创build容器(这次再次提供参数)。
最后要说明的是,在命令行中引用容器时,应该使用名称而不是SHA1