如何使用容器标识重新启动容器?

我使用该命令创build了一个容器

docker run ubuntu /bin/bash -c "echo 'cool content' > /tmp/cool-file" 

现在我看到容器已经退出

 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9e5017aef3f9 ubuntu "/bin/bash -c 'echo '" 38 seconds ago Exited (0) 36 seconds ago elegant_euler 

问题:如何使用其容器标识重新启动并获取此容器的交互模式?
我不能使用docker run -it <image_name>因为这需要图像名称,而不是容器ID。 我尝试使用docker附加,但我认为这只适用于运行容器。 我不想提交这个容器,所以,我怎么能重新启动,并进入交互模式使用它的容器id的这个容器?
编辑:我能够进入其他容器使用docker start {container-id} ,然后运行docker attach {container-id} 。 我想知道是否有什么特别的方式,我创造了容器,这将导致这种行为。 我刚刚开始与docker工人,所以如果我失去了一些基本的一点指导我正确的方向。

一个容器在完成其命令时退出。 所以容器开始了

 docker run ubuntu /bin/bash -c "echo 'cool content' > /tmp/cool-file" 

将在命令echo完成后立即退出。 在这种情况下重新启动该容器是没有意义的。

如果您以独立模式运行新的容器,则可以保留该容器并再次将其连接。

所以,在你的情况下,你应该运行一个像/bin/bash这样的命令在分离模式下从映像运行一个新的容器,然后你可以运行echo并附加它

 docker run -d -ti ubuntu /bin/bash docker exec -ti <containerId> /bin/bash -c "echo 'cool content' > /tmp/cool-file" 

容器将保持活着,所以你可以执行更多的命令,例如docker exec -ti / bin / bash -c“cat / tmp / cool-file”

或者运行一个新的/ bin / bash来“附加”你的容器并作为命令提示符工作

 docker exec -ti <containerId> /bin/bash root@<containerId>:/# cat /tmp/cool-file cool content 

您可以成功停止/启动/重新启动此容器

 docker stop <containerId> && docker start <containerId> 

要么

 docker restart <containerId> 

提醒,当你重新启动一个容器时,它会再次执行它的原始命令。 所以如果你能够重新启动你的用例的容器(但你不会),它会再次运行/bin/bash -c "cat /tmp/cool-file"

重新启动使用命令/ bin / bash运行的容器,它将在重新启动时再次运行相同的命令。

重新启动现有容器时,通常不能将命令更改为RUN; 要做到这一点,你可以尝试一些技巧, 如何如何启动一个停止的docker容器与不同的命令build议 。

检查Docker 启动命令

 docker stop {containerId} && doicker start -i {containerId} 

我尝试了自己:

 docker restart <container_id> docker exec -it <container_id> bash 

既能完美重启,又能进入交互式terminal。