docker - 在 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)
请指教
解决方案
我收到的建议是在 docker run 中使用 -v 参数来映射容器之间的 docker 套接字,如下所示:
-v /var/run/docker.sock:/var/run/docker.sock
推荐阅读
- docker - Apache Superset:无法第二次运行
- java - 带有 for 循环的 toString 方法不起作用,不知道为什么
- css - Javascript:调整图像的宽度,保持比例,但如果需要,可以减少高度
- swift - 如何在协议中定义仅在协议的关联类型为特定类型时才需要实现的功能
- kubernetes - 通过 clusterIP 服务将 Pod 连接到 Pod?
- logging - LTTNG 是否可以进行日志轮换?
- python - 我无法通过 pycharm 的控制台运行代码
- php - 如何加入 laravel 关系
- amazon-web-services - 使用 pyspark (spark 2.4) 从 S3 读取 csv 作为 spark 数据帧
- python - 如何在 Dockerfile 中安装带有 miniconda 的软件包?