我想运行docker:dind并得到一个shell。
如果我运行docker run --privileged docker:dind sh,它就会退出。
解决办法是运行:docker run -d --privileged docker:dind
它从后台开始,然后我可以运行docker exec -it <container> sh并获得一个shell。
但我希望它能从一个壳开始。
我创建了一个Dockerfile:
FROM docker:dind
ENTRYPOINT sh 我建造了它
docker build -t dind2 -f Dockerfile .
当我运行docker run --rm -it --privileged dind2时,我得到了一个shell,但是当我试图运行简单的容器docker run busybox echo hi时,它失败了:
docker: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?. 是否知道如何使docker:dind从一个shell开始,而不需要在后台运行它,然后使用exec获得一个shell。
发布于 2019-01-11 10:29:15
您需要告诉docker运行交互式,并使用tty来使用shell。
docker run --interactive --tty docker:dind sh或者,简称
docker run -it docker:dind sh发布于 2019-01-11 12:23:43
就像安德烈亚斯·韦德布兰德说的。你可以
docker run -it docker:dind sh如果你想使用Dockerfile。就这样写吧。
FROM docker:dind
CMD ["sh"]它不应该覆盖ENTRYPOINT。您可以尝试检查docker:dind图像。
docker inspect docker:dind您可以看到entrypoint是一个shell脚本文件。
"Entrypoint": [
"dockerd-entrypoint.sh"
],当然,我们可以在容器中找到这个文件。进入码头
docker run -it docker:dind sh然后
cat /usr/local/bin/dockerd-entrypoint.sh更多关于入口点的信息,你可以看到
https://medium.freecodecamp.org/docker-entrypoint-cmd-dockerfile-best-practices-abc591c30e21
发布于 2022-12-03 09:27:20
你得跑
码头运行-it码头:dind sh
然后在后台进程中启动dockerd服务:
./usr/local/bin/dockerd-entrypoint.sh&
别忘了结尾的"&“。
https://stackoverflow.com/questions/54144630
复制相似问题