是否重新启动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会记得。

使用startstoprestart不会破坏容器,因此记住一切,包括数据(甚至在重新启动主机之间)。 什么stop是停止在容器内运行的进程。 就这样。

另外,Docker以内部格式存储所有上下文,variables等。 您不必再次指定命令行参数。 要了解Docker知道您的容器的内容,可以运行docker inspect

相反, rm会破坏所有的东西,包括没有持久化的数据,并且需要重新创build容器(这次再次提供参数)。

最后要说明的是,在命令行中引用容器时,应该使用名称而不是SHA1