使用“exit”后如何保留docker alpine容器?
Posted
技术标签:
【中文标题】使用“exit”后如何保留docker alpine容器?【英文标题】:How to retain docker alpine container after "exit" is used? 【发布时间】:2018-01-20 04:23:26 【问题描述】:例如,如果我使用命令docker run -it alpine /bin/sh
它启动一个终端,之后我可以安装包和所有东西。现在,当我使用 exit
命令时,它会返回到终端。 (主要)
那么我怎样才能再次访问同一个容器呢? 当我再次运行该命令时,我得到了一个新的高山。
请帮忙
【问题讨论】:
How to Keep Docker Container Running After Starting Services?的可能重复 可能不是重复问题 【参考方案1】:只要指定的运行命令进程仍在运行,容器就会存在。当你指定运行/bin/sh
时,一旦你退出,sh进程就会死掉,你的容器也会死掉。
如果您想保持容器运行,则必须保持内部进程运行。对于您的情况(我不确定您想要实现什么,我假设您只是在测试),以下将使其继续运行
docker run -d --name alpine alpine tail -f /dev/null
然后你可以sh
进入容器使用
docker exec -it alpine sh
【讨论】:
那么我怎样才能让它继续运行并稍后恢复 @user8094908 回答已更新。 这就是我想要做的......我想在 docker 中运行 alpine,然后在该命令行上安装 git、ant 和 maven。所以当我退出容器时,安装的东西应该保留,当我回来时,我可以继续我的工作...... @yamenK,我会避免ping localhost
有两个原因,一个是持续的日志输出,第二个是它实际上在做某事。您应该使用什么都不做也不打印的变体。 Bash 无限循环使用 `while true;睡觉1; done` 或更容易让我记住的那个tail -f /dev/null
【参考方案2】:
拉一张图片
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
验证它是 UP 并复制容器 ID 的 FIRST 2 -3 位
docker container ls
使用 exec 命令登录
docker exec -it <CONTAINER ID or just 2-3 digits> sh
您需要停止,否则它将继续运行。
docker stop <CONTAINER ID>
【讨论】:
【参考方案3】:您应该使用docker start
,它允许您启动已停止的容器。如果您没有为容器命名,则需要使用 docker ps
获取它的名称/ID。
例如,
$docker ps
CONTAINER ID IMAGE COMMAND
4c01db0b339c alpine bash
$docker start -i -a 4c01db0b339c
【讨论】:
只打印容器ID,什么都不做 @user8094908 啊哎呀!这只是启动容器。您还需要附加到它。我已经更新了我的答案。 非常感谢,我会将此页面添加为书签以供进一步参考。【参考方案4】:在后台运行 Alpine
$ docker run --name alpy -dit alpine
$ docker ps
附加到 Alpine
$ docker attach alpy
【讨论】:
【参考方案5】:下面是你应该做的
docker run -d --name myalpine alpine tail -f /dev/null
这将确保您的容器不会死机。现在,每当您需要在其中安装软件包时,只需使用 sh 进入容器即可
docker exec -it myalpine /bin/sh
如果你的容器由于某种原因死掉了,你仍然可以使用
重新启动它docker start myalpine
【讨论】:
它在后台启动它。我用-d
替换了你的-it
,这意味着分离模式。 -d, --detach Run container in background and print container ID
非常感谢。我想有很多方法可以做到这一点。我也会检查这个方法。以上是关于使用“exit”后如何保留docker alpine容器?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Docker 中的 Alpine 上运行 Apache 2?
Docker:如何将 bash 与基于 Alpine 的 docker 映像一起使用?
Docker:如何知道 mongo 是不是在 Alpine/node 中使用 shell 脚本文件运行