使用“退出”后如何保留docker alpine容器?

shu*_*ath 8 linux docker alpine-linux

例如,如果我使用命令,docker run -it alpine /bin/sh 它将启动一个终端,之后我可以安装软件包和所有软件包。现在,当我使用exit命令时,它会返回到终端。(主要一)

那么如何再次访问同一容器?当我再次运行该命令时,我得到了一个新的高山。

请帮忙

yam*_*enk 16

只要指定的运行命令进程仍在运行,该容器就会存在。当您指定运行时/bin/sh,一旦退出,则sh进程将死亡,您的容器也将死亡。

如果要保持容器运行,则必须保持进程内部运行。对于您的情况(我不确定您要达到的目标,我假设您只是在测试),以下内容将使其继续运行

docker run -d --name alpine alpine tail -f /dev/null
Run Code Online (Sandbox Code Playgroud)

然后您可以sh使用

docker exec -it alpine sh  
Run Code Online (Sandbox Code Playgroud)

  • @yamenK,我会避免“ping localhost”,原因有两个,一是持续的日志输出,二是它实际上正在做某事。您应该使用不执行任何操作且不打印任何内容的变体。Bash 无限循环使用 ` while true; 睡觉1;完成`或者对我来说更容易记住的`tail -f / dev / null` (2认同)

vim*_*hna 11

拉取镜像

docker image pull alpine
Run Code Online (Sandbox Code Playgroud)

看到那张图片在那里

docker image ls   OR  just docker images
Run Code Online (Sandbox Code Playgroud)

看看高山里面有什么

docker run alpine ls -al
Run Code Online (Sandbox Code Playgroud)

现在你的问题是如何留在 shell 中

docker container run -it alpine /bin/sh
Run Code Online (Sandbox Code Playgroud)

您在 shell 脚本命令行中。某些发行版可能有 bash shell。

 docker exec -it 5f4 sh
 / # (<-- you can run linux command here!)
Run Code Online (Sandbox Code Playgroud)

此时,您可以使用 alpine 的命令行并执行

ls -al
Run Code Online (Sandbox Code Playgroud)

输入 exit 出来 - 您可以在分离模式下运行它,它会继续运行。

使用 exec 命令我们可以再次登录

docker container run -it -d alpine /bin/sh
Run Code Online (Sandbox Code Playgroud)

验证它是 UP 并复制容器 ID 的前 2 -3 位数字

docker container ls
Run Code Online (Sandbox Code Playgroud)

使用 exec 命令登录

docker exec -it <CONTAINER ID or just 2-3 digits> sh
Run Code Online (Sandbox Code Playgroud)

您将需要停止,否则它将继续运行。

docker stop <CONTAINER ID>
Run Code Online (Sandbox Code Playgroud)