2017-08-11 116 views
2

像例如,如果我使用命令docker run -it alpine /bin/sh 它启动一个终端之后,我可以安装包和所有。现在当我使用exit命令时,它会返回到终端。 (主要的)如何使用“退出”后保留码头高山容器?

那么我怎样才能再次访问相同的容器? 当我再次运行该命令时,我得到一个新的阿尔卑斯山。

请帮

+1

的可能的复制[如何保持码头工人容器中运行启动服务后?(https://stackoverflow.com/questions/25775266/how-to-keep-docker-container - 运行后启动服务) –

回答

0

容器住,只要在指定运行命令进程仍在运行。当你指定运行/bin/sh时,一旦你退出,sh进程将会死亡,你的容器也会死掉。

如果你想保持你的容器运行,你必须保持进程内运行。对于你的情况(我不知道你想acheive什么,我以为你只是测试),下面就然后你就可以sh入容器使用保持运行

docker run -d --name alpine alpine ping localhost 

docker exec -it alpine sh 
+0

所以我怎么能让它保持运行,并在以后回复 –

+0

@ user8094908回答udpated。 – yamenk

+0

这是我想要做的...我想在docker中运行alpine,然后在该命令行上安装git,ant和maven。所以当我退出容器时,安装的东西应该留下,当我回来时我可以继续我的工作... –

0

你应该做的是低于

docker run -d --name myalpine alpine tail -f /dev/null 

这将确保你的容器不会死亡。现在,每当你需要安装在你里面包的容器内只得到使用SH

docker exec -it myalpine /bin/sh 

如果由于某种原因,你的容器死了,你仍然可以再次使用

docker start myalpine 
+0

这只是回应单词myalpine,并没有启动容器... –

+0

它在背景中启动它。我用'-d'替换了'-it',这意味着分离模式。 '-d,--detach在后台运行容器并打印容器ID' –

+0

非常感谢。我想有很多方法可以做到这一点。我也会检查这个方法。 –

0

您应该使用docker start启动它,它允许你启动一个停止的容器。如果您未指定容器名称,则需要使用docker ps来获取名称/ ID。

例如,

$docker ps 
CONTAINER ID  IMAGE      COMMAND 
4c01db0b339c  alpine      bash  

$docker start -i -a 4c01db0b339c 
+0

只是打印容器ID,什么都不做 –

+0

@ user8094908啊哎呀!这只是启动容器。你也需要重视它。我已经更新了我的答案。 – logix

+0

非常感谢我将此页面加入书签以供进一步参考。 –

相关问题