【问题标题】:Mount a folder running a docker-in-docker container in a custom GitHub action在自定义 GitHub 操作中挂载运行 docker-in-docker 容器的文件夹
【发布时间】:2021-10-03 08:07:12
【问题描述】:

我在 GitHub 操作中运行 docker-in-docker 容器,需要从主机(存储库)挂载一个文件夹。

action.yml

...
runs:
  using: 'docker'
  image: 'Dockerfile'
...

Dockerfile

FROM docker:stable
COPY entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh
ENTRYPOINT ["/entrypoint.sh"]

entrypoint.sh

...
docker run -d ... -v /github/workspace/.github/config:/opt/dest/config ...
...

文件夹中的文件确实存在于 GITHUB_WORKSPACE 下,来自 entrypoint.sh 中的调试打印。但它们似乎没有正确安装到内容器上。

【问题讨论】:

标签: docker github-actions mount


【解决方案1】:

当使用官方docker dind setup 时,它有两个组件:一个带有 Docker CLI (docker:latest) 的容器和另一个带有 Docker 守护进程 (docker:dind) 的容器。 Docker-in-Docker 容器是在后一个容器 (docker:dind) 内创建的,因此您应该在该容器上设置主机挂载。我怀疑您可能正在将挂载设置到 Docker CLI 容器中。

另一条建议:默认的 Docker-in-Docker 设置依赖于非特权容器或与主机 Docker 的套接字连接;两者都提供弱隔离,并且可能会弄乱您的主机设置。要获得适当的隔离,请查看 Sysbox,这是一个新的 runc,可以让您更干净地运行 Docker-in-Docker(以及更多)。

【讨论】:

    猜你喜欢
    • 2016-09-18
    • 2023-03-27
    • 1970-01-01
    • 2020-11-17
    • 2014-03-24
    • 2020-01-02
    • 2021-11-21
    • 2018-05-31
    相关资源
    最近更新 更多