首页 > 解决方案 > 在 Docker 容器中运行 Docker:无法连接到 Docker 守护进程

问题描述

我创建了一个 Dockerfile 来在 Docker 中运行 Docker:

    FROM ubuntu:16.04
RUN apt-get update && \
    apt-get install -y \
    apt-transport-https \
    ca-certificates \
    curl \
    software-properties-common && \
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - &&\
    apt-key fingerprint 0EBFCD88

RUN add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" && \
   apt-get update && \
   apt-get install -y docker-ce && \
   systemctl enable docker

在我启动容器并运行 docker ps 后,我得到:“无法连接到 unix:///var/run/docker.sock 上的 Docker 守护进程。docker 守护进程是否正在运行?”

我在容器内执行了命令 dockerd 结果:

启动守护程序时出错:初始化网络控制器时出错:获取控制器实例时出错:无法创建 NAT 链 DOCKER:iptables 失败:iptables -t nat -N DOCKER:iptables v1.6.0:无法初始化 iptables 表 `nat':权限被拒绝(您必须是 root)也许需要升级 iptables 或您的内核。(退出状态 3)

请指教

标签: dockerubuntu-16.04

解决方案


我收到的建议是在 docker run 中使用 -v 参数来映射容器之间的 docker 套接字,如下所示:

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

推荐阅读