在 Google Container OS 中,我想将其用作我的云开发环境。我将如何从工具箱运行 docker 命令?我需要将其添加docker.sock
为绑定挂载吗?我需要能够运行 docker(和 docker-compose)来运行我的开发环境。
1 回答
Google Container OS 映像随附已安装和配置的 docker,因此docker
如果您从这些映像之一创建虚拟机并通过 SSH 连接到机器,则无需任何事先配置即可使用命令行中的命令。
至于 docker-compose,它并没有预先安装。但是,您可以通过使用您提到的工具箱来安装它以及您需要的其他相关工具/程序,该工具箱在类似 Debian chroot 的环境中提供了一个 shell(包括一个包管理器)(在这里您将自动获得 root 权限)。
您可以按照以下步骤安装 docker-compose:
1)如果你还没有,通过运行进入工具箱环境/usr/bin/toolbox
2) 在此处查看最新版本的 docker-compose 。
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)确保您不再在工具箱外壳中,然后运行 command 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 文件并使所有需要的位置都可以从工具箱环境中访问,但它可能是按照此处找到的在 debian 上安装 docker 的说明,在工具箱中安装 docker 更简单。
然后,您将能够从工具箱中发出docker
和命令。docker-compose
或者,可以在标准 VM 上简单地安装 docker 和 docker-compose(即不必使用 Google Container OS 机器类型),尽管这是否适用取决于您的用例。