如何运行 docker:dind 以启动 shell

E23*_*235 5 docker dockerfile

我想跑docker:dind去拿一个shell。
如果我运行docker run --privileged docker:dind sh它就退出。
解决方法是运行:docker run -d --privileged docker:dind
它在后台启动,然后我可以运行docker exec -it <container> sh并获取 shell。

但我希望它能从一个 shell 开始。
我创建了一个 Dockerfile:

FROM docker:dind
ENTRYPOINT sh  
Run Code Online (Sandbox Code Playgroud)

我建造了它:
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?.  
Run Code Online (Sandbox Code Playgroud)

知道如何 makedocker:dind从 shell 开始,而不需要在后台运行它然后使用它exec来获取 shell 的解决方法。

And*_*and 0

您需要告诉 docker 以交互方式运行并使用tty才能使用 shell。

docker run --interactive --tty docker:dind sh
Run Code Online (Sandbox Code Playgroud)

或者,简称

docker run -it docker:dind sh
Run Code Online (Sandbox Code Playgroud)