【问题标题】:How to run docker in docker in Container-optimized OS on Compute Engine VM on Google Cloud?如何在 Google Cloud 上的 Compute Engine VM 上的容器优化操作系统中的 docker 中运行 docker?
【发布时间】:2019-12-09 08:56:00
【问题描述】:

我有一个主容器实例 (Node.js),它在临时工作 docker 容器中运行一些任务。

使用的基础镜像是node:8-alpine,入口点命令以用户node(非root用户)执行。

我尝试使用以下命令运行我的容器:

docker run \
-v /tmp/box:/tmp/box \
-v /var/run/docker.sock:/var/run/docker.sock \
ifaisalalam/ide-taskmaster

但是当 nodejs 应用尝试运行 docker 容器时,会抛出权限被拒绝错误 - 应用无法读取 /var/run/docker.sock 文件。

通过sh访问这个容器并运行ls -lha /var/run/docker.sh,我看到文件归root:412所有。这就是为什么我的node 用户无法运行 docker 容器的原因。

主机上的/var/run/docker.sh文件归root:docker所有,所以我猜容器内的412是主机的docker组ID。


如果有人可以为我提供一种解决方法,让我在 GCE 上的 Container-optimized OS 中从 docker 容器运行 docker,我会很高兴。


我正在尝试运行的图像的源 Git 存储库链接是 - https://github.com/ifaisalalam/ide-taskmaster

【问题讨论】:

  • @ASLIM 我不这么认为。我只在 GCP 上面临这个问题。在我的机器上,一切都像魅力一样运作。我的问题与从 docker 中运行 docker 有关。

标签: docker google-cloud-platform


【解决方案1】:

将以下命令添加到我的主机启动脚本中即可解决问题:

sudo chmod 666 /var/run/docker.sock

我只是不确定这对于在生产中运行的应用是否是一种安全的解决方法。

编辑:

这个答案提出了另一种可能也有效的方法 - https://stackoverflow.com/a/47272481/11826776

另外,您可以阅读这篇文章 - https://denibertovic.com/posts/handling-permissions-with-docker-volumes/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-24
    • 1970-01-01
    • 2014-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-02
    相关资源
    最近更新 更多