【问题标题】:Run docker from within toolbox从工具箱中运行 docker
【发布时间】:2018-06-11 08:13:47
【问题描述】:

在 Google Container OS 中,我想将其用作我的云开发环境。我将如何从工具箱运行 docker 命令?我需要将docker.sock 添加为绑定挂载吗?我需要能够运行 docker(和 docker-compose)来运行我的开发环境。

【问题讨论】:

    标签: google-cloud-platform google-container-os


    【解决方案1】:

    Google Container OS 映像随附已安装和配置的 docker,因此如果您从这些映像之一创建虚拟机,并通过 SSH 连接到机器。

    对于 docker-compose,它并没有预先安装。但是,您可以通过使用您提到的工具箱来安装它以及您需要的其他相关工具/程序,该工具箱在类似 Debian chroot 的环境中提供了一个 shell(包括一个包管理器)(在这里您将自动获得 root 权限)。

    您可以按照以下步骤安装 docker-compose:

    1) 如果您还没有,请运行/usr/bin/toolbox进入工具箱环境

    2) 查看最新版本的 docker-compose here

    3) 您可以运行以下命令在机器上检索并安装 docker-compose(将 docker-compose 版本号替换为您在第 2 步中检索到的最新版本):

    curl -L https://github.com/docker/compose/releases/download/1.18.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
    

    此时您可能已经发现,虽然您现在可以在工具箱中运行新安装的docker-compose 命令,但不能运行docker 命令。这是因为默认情况下,工具箱环境无法使用 rootfs 访问所有路径,并且可用的文件系统在两个环境之间不对应。

    可以通过退出工具箱外壳来解决此问题,然后编辑/etc/default/toolbox 文件,该文件允许您配置工具箱设置。这将允许您通过以下步骤在标准环境中提供对 docker 二进制文件的访问:

    1) 确保您不再位于工具箱外壳中,然后运行命令which docker。您将看到类似于/usr/bin/docker 的内容。

    2) 打开文件/etc/default/toolbox

    3) TOOLBOX_BIND 行指定了从 rootfs 到工具箱环境中可用的路径。为确保 docker 在工具箱环境中可用,您可以尝试在 TOOLBOX_BIND 部分添加一个条目,例如 --bind=/usr/bin/docker:/usr/bin/docker

    但是,我发现即使可以编辑 /etc/default/toolbox 以使 docker 二进制文件在工具箱环境中可用,但在工具箱环境中运行某些 docker 命令时,会生成其他错误由于机器上预装的 docker 版本被配置为使用某些配置文件和目录,尽管可以编辑 /etc/default/toolbox 文件并使所有需要的位置都可以从工具箱环境中访问,按照 here 找到的在 debian 上安装 docker 的说明,在工具箱中安装 docker 可能会更简单。

    然后您就可以在工具箱中同时发出dockerdocker-compose 命令。

    或者,可以在标准 VM 上简单地安装 docker 和 docker-compose(即不必使用 Google Container OS 机器类型),尽管这是否适用取决于您的用例。

    【讨论】:

    • 我认为最好使用标准 VM。 Google Container OS 似乎只适用于 Docker 和 Kubernetes。
    猜你喜欢
    • 2018-07-11
    • 1970-01-01
    • 2019-09-06
    • 1970-01-01
    • 1970-01-01
    • 2015-11-11
    • 1970-01-01
    • 2015-11-08
    • 1970-01-01
    相关资源
    最近更新 更多