首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何运行docker:从shell开始的dind

如何运行docker:从shell开始的dind
EN

Stack Overflow用户
提问于 2019-01-11 10:27:05
回答 3查看 5.3K关注 0票数 5

我想运行docker:dind并得到一个shell。

如果我运行docker run --privileged docker:dind sh,它就会退出。

解决办法是运行:docker run -d --privileged docker:dind

它从后台开始,然后我可以运行docker exec -it <container> sh并获得一个shell。

但我希望它能从一个壳开始。

我创建了一个Dockerfile:

代码语言:javascript
复制
FROM docker:dind
ENTRYPOINT sh  

我建造了它

docker build -t dind2 -f Dockerfile .

当我运行docker run --rm -it --privileged dind2时,我得到了一个shell,但是当我试图运行简单的容器docker run busybox echo hi时,它失败了:

代码语言:javascript
复制
docker: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?.  

是否知道如何使docker:dind从一个shell开始,而不需要在后台运行它,然后使用exec获得一个shell。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-01-11 10:29:15

您需要告诉docker运行交互式,并使用tty来使用shell。

代码语言:javascript
复制
docker run --interactive --tty docker:dind sh

或者,简称

代码语言:javascript
复制
docker run -it docker:dind sh
票数 0
EN

Stack Overflow用户

发布于 2019-01-11 12:23:43

就像安德烈亚斯·韦德布兰德说的。你可以

代码语言:javascript
复制
docker run -it docker:dind sh

如果你想使用Dockerfile。就这样写吧。

代码语言:javascript
复制
FROM docker:dind
CMD ["sh"]

它不应该覆盖ENTRYPOINT。您可以尝试检查docker:dind图像。

代码语言:javascript
复制
docker inspect docker:dind

您可以看到entrypoint是一个shell脚本文件。

代码语言:javascript
复制
"Entrypoint": [
  "dockerd-entrypoint.sh"
   ],

当然,我们可以在容器中找到这个文件。进入码头

代码语言:javascript
复制
docker run -it docker:dind sh

然后

代码语言:javascript
复制
cat /usr/local/bin/dockerd-entrypoint.sh

更多关于入口点的信息,你可以看到

https://medium.freecodecamp.org/docker-entrypoint-cmd-dockerfile-best-practices-abc591c30e21

票数 2
EN

Stack Overflow用户

发布于 2022-12-03 09:27:20

你得跑

码头运行-it码头:dind sh

然后在后台进程中启动dockerd服务:

./usr/local/bin/dockerd-entrypoint.sh&

别忘了结尾的"&“。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54144630

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档