如何在docker容器中安装docker?

Jol*_*y23 10 debian docker dockerfile

这是我的Dockerfile:

FROM golang
# RUN cat /etc/*release
RUN apt-get update
RUN apt-get -y install apt-transport-https ca-certificates curl gnupg2 software-properties-common
RUN curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add -
RUN add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"

RUN apt-get update
RUN apt-get -y install docker-ce
RUN docker run hello-world
Run Code Online (Sandbox Code Playgroud)

golang Dockerfile是官方的,它基于

Debian GNU/Linux 8 (jessie)
Run Code Online (Sandbox Code Playgroud)

所以我通过检查Docker Install Tutor(Debian)的安装步骤写下了这个Dockerfile

但输出是

Step 8/8 : RUN docker run hello-world
 ---> Running in b183b8cc5d10
docker: Cannot connect to the Docker daemon at 
unix:///var/run/docker.sock. Is the docker daemon running?.
See 'docker run --help'.
Run Code Online (Sandbox Code Playgroud)

如何解决这个问题呢?我想在主机docker容器中建立docker容器.

Fel*_*ati 11

我在尝试在 Bamboo Server 映像中安装 Docker 时遇到了类似的问题。要解决这个问题:

  1. 首先删除该行:RUN docker run hello-world从您的Dockerfile
  2. 最简单的方法是公开 Docker 套接字,通过使用-v标志绑定挂载它或使用Docker Compose以下命令挂载卷:

docker run -v /var/run/docker.sock:/var/run/docker.sock ...

  • 由于 jonashackt 的链接中引用的原因,这在许多情况下比运行 Docker-in-Docker 更可取:https://jpetazzo.github.io/2015/09/03/do-not-use-docker-in-docker- for-ci/ (2认同)
  • 这不起作用,因为它要求您已经构建了容器(例如“docker run”)。如果 Dockerfile 配方包含调用 Docker 的步骤(“docker build ...”),那么这将无济于事。 (2认同)

dux*_*ux2 11

在您.dockerfile添加此行来安装 Docker:

RUN curl -fsSL https://get.docker.com | sh
Run Code Online (Sandbox Code Playgroud)

构建完成后,在运行容器时,使用 switch 添加到主机 Docker 套接字的卷映射-v,例如:

docker run --rm -it -v /var/run/docker.sock:/var/run/docker.sock my-container
Run Code Online (Sandbox Code Playgroud)

然后,在容器 shell 中,通过运行以下命令检查连接:

# docker ps
CONTAINER ID   IMAGE                  COMMAND                  CREATED         STATUS         PORTS                       NAMES
8bf420851572   my-image               "bash"                   8 minutes ago   Up 8 minutes                               my-container
Run Code Online (Sandbox Code Playgroud)


Hen*_*kvh 5

使用Docker-in-Docker来完成此任务。他们已经为您解决了很多问题。