例如,如果我使用docker run -it alpine /bin/sh命令,它会启动一个终端,之后我可以安装软件包和所有。现在,当我使用exit命令,它会返回到终端。(主一)那么我怎样才能再次访问同一个容器呢?当我再次运行那个命令时,我得到了一个新的alpine。请帮帮忙
docker run -it alpine /bin/sh
exit
oyxsuwqo1#
只要指定的run命令进程还在运行,容器就会一直存在。当您指定运行/bin/sh时,一旦退出,sh进程就会死亡,容器也会死亡。如果你想让你的容器保持运行,你必须让容器内的进程保持运行。对于你的情况(我不确定你想实现什么,我假设你只是在测试),下面的代码将保持它运行
/bin/sh
docker run -d --name alpine alpine tail -f /dev/null
然后可以使用以下命令将sh导入容器
sh
docker exec -it alpine sh
q1qsirdb2#
拉取图像
docker image pull alpine
看到那个图像了吗
docker image ls OR just docker images
看看阿尔卑斯山里面有什么
docker run alpine ls -al
现在你的问题是如何保持 shell
docker container run -it alpine /bin/sh
您正在使用shell脚本命令行。某些发行版可能有bash shell。
docker exec -it 5f4 sh / # (<-- you can run linux command here!)
此时,可以使用alpine命令行并执行
ls -al
键入exit来出来-你可以在分离模式下运行它,它会继续运行。使用exec命令,我们可以再次登录
docker container run -it -d alpine /bin/sh
检查它是否已打开并复制容器ID的前2位数字
docker container ls
使用exec命令登录
docker exec -it <CONTAINER ID or just 2-3 digits> sh
您将需要停止,否则它将继续运行。
docker stop <CONTAINER ID>
6ljaweal3#
$ docker run --name alpy -dit alpine $ docker ps
$ docker attach alpy
bqujaahr4#
你应该使用docker start,它允许你启动一个停止的容器。如果你没有命名你的容器,你需要使用docker ps来获得它的name/id。例如,
docker start
docker ps
$docker ps CONTAINER ID IMAGE COMMAND 4c01db0b339c alpine bash $docker start -i -a 4c01db0b339c
pxyaymoc5#
你应该做的是下面
docker run -d --name myalpine alpine tail -f /dev/null
这将确保你的容器不会死。现在无论何时你需要在里面安装包,你只要使用sh进入容器
docker exec -it myalpine /bin/sh
如果由于某种原因容器停止运行,您仍然可以使用
docker start myalpine
hpxqektj6#
另一个可能更容易记住的解决方案是,只需使用sleep infinity结尾(其他一些Linux发行版也支持),而不是其他地方建议的tail -f /dev/null结尾:
sleep infinity
tail -f /dev/null
docker run -d --name my_container alpine sleep infinity
运行容器后,可以使用exec参数将容器附加到终端会话:
exec
docker exec -it my_container /bin/sh
6条答案
按热度按时间oyxsuwqo1#
只要指定的run命令进程还在运行,容器就会一直存在。当您指定运行
/bin/sh
时,一旦退出,sh进程就会死亡,容器也会死亡。如果你想让你的容器保持运行,你必须让容器内的进程保持运行。对于你的情况(我不确定你想实现什么,我假设你只是在测试),下面的代码将保持它运行
然后可以使用以下命令将
sh
导入容器q1qsirdb2#
拉取图像
看到那个图像了吗
看看阿尔卑斯山里面有什么
现在你的问题是如何保持 shell
您正在使用shell脚本命令行。某些发行版可能有bash shell。
此时,可以使用alpine命令行并执行
键入exit来出来-你可以在分离模式下运行它,它会继续运行。
使用exec命令,我们可以再次登录
检查它是否已打开并复制容器ID的前2位数字
使用exec命令登录
您将需要停止,否则它将继续运行。
6ljaweal3#
在后台运行Alpine
依附于阿尔卑斯山
bqujaahr4#
你应该使用
docker start
,它允许你启动一个停止的容器。如果你没有命名你的容器,你需要使用docker ps
来获得它的name/id。例如,
pxyaymoc5#
你应该做的是下面
这将确保你的容器不会死。现在无论何时你需要在里面安装包,你只要使用sh进入容器
如果由于某种原因容器停止运行,您仍然可以使用
hpxqektj6#
另一个可能更容易记住的解决方案是,只需使用
sleep infinity
结尾(其他一些Linux发行版也支持),而不是其他地方建议的tail -f /dev/null
结尾:运行容器后,可以使用
exec
参数将容器附加到终端会话: