【问题标题】:docker in docker via bind mound - ubuntu码头工人通过绑定土墩 - ubuntu
【发布时间】:2021-10-09 01:02:06
【问题描述】:

我需要一个 ubuntu 映像,然后使用该映像运行构建过程。一切都很好,直到构建完成docker build等。

假设我使用以下方法对此进行测试:

Dockerfile

FROM ubuntu:latest

然后我构建它 - docker build -t ubuntudkr . 接下来,我运行它:

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

当我在此容器中运行 docker ps 时,我收到错误 bash: docker: command not found

我发现的所有示例都说我需要运行:

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

他们都使用包含 docker 库的 docker 镜像。那么我的答案是在我的基础映像中安装 docker 以使其工作吗?那么这不违背docker themselves says 吗?

many other 的博客文章提供了相同的建议,但我的示例确实有效。我哪里错了?

【问题讨论】:

  • 一般来说,一个Docker镜像应该是自包含的;如果您的应用程序需要docker 二进制文件,那么您的 Dockerfile 需要以某种形式安装它。 (但也请记住,能够访问 Docker 套接字意味着您可以轻松地 root 整个主机;您是否需要从容器内启动更多容器,或者您可以使用更安全的方法吗?)
  • 其他容器不会启动,不会。这是一个 CI 构建环境,所以只需要运行 docker build 和 docker run publish 命令就会运行。

标签: docker docker-in-docker


【解决方案1】:

用官方的docker:latest 图像替换您的dockerfile 中的图像ubuntu:latest,该图像包含docker 二进制文件,并且完全符合您的要求:https://hub.docker.com/_/docker

如果要保留 Ubuntu 映像,则必须在出现错误后安装 Docker 工具。默认情况下,Ubuntu 映像不包含 Docker 二进制文件作为常规 Ubuntu 安装。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-01
    • 2016-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-16
    相关资源
    最近更新 更多