我正在尝试在带有容器优化操作系统的 Google Cloud VM 上安装 docker/compose-bin 插件(https://hub.docker.com/r/docker/compose-bin/tags)。
有人实现过这个吗?
我了解 docker 作为容器运行,我认为我必须在容器内的相应插件文件夹中安装插件二进制文件。我走对了吗?
我可以使用旧的docker-compose(https://hub.docker.com/r/docker/compose/tags) 在容器中使用此脚本和别名:
#!/bin/bash
VERSION=${1:-1.27.4}
echo "* Add an alias for docker-compose to the shell configuration file ..."
echo alias docker-compose="'"'docker run --rm \
-v /var/run/docker.sock:/var/run/docker.sock \
-v "$PWD:$PWD" \
-w="$PWD" \
docker/compose:'"${VERSION}"''"'" >> ~/.bashrc
echo "* Pull container image for docker-compose ..."
docker pull docker/compose:${VERSION}
echo "* Done"
echo "* To use docker-compose, run 'source ~/.bashrc' or simply re-login"
取自https://gist.github.com/kurokobo/25e41503eb060fee8d8bec1dd859eff3
但我真的很想使用这个新插件。
答案1
可写和可执行挂载是:
/var/lib/{google,docker,toolbox}
(有状态)/var/lib/cloud
(无国籍,,tmpfs
2 MB)/mnt/disks
(无状态,,tmpfs
256 KB)
/var/lib/{google,docker,toolbox}
似乎是最好的选择,而且/var/lib/google
更好,/var/lib/docker
因为它具有o+x
(我想/var/lib/docker
缺少o+x
是有原因的):
$ sudo curl -sSL \
https://github.com/docker/compose/releases/download/v2.23.3/docker-compose-linux-x86_64 \
-o /var/lib/google/docker-compose
$ sudo chmod o+x /var/lib/google/docker-compose
$ mkdir -p ~/.docker/cli-plugins
$ ln -sf /var/lib/google/docker-compose \
~/.docker/cli-plugins/docker-compose
$ docker compose version
或者也可以使用docker
图像:
使用
alias
:~/.profile
:if [ -f ~/.bashrc ]; then . ~/.bashrc; fi
~/.bashrc
:alias docker-compose='docker run --rm docker compose'
$ docker-compose version
使用函数:
~/.profile
:docker() { if [ "$1" = compose ]; then command docker run --rm docker "$@" else command docker "$@" fi } export -f docker
$ docker compose version
使用脚本:
/var/lib/google/bin/docker
:#!/bin/sh -eu if [ "$1" = compose ]; then /usr/bin/docker run --rm docker "$@" else /usr/bin/docker "$@" fi
~/.profile
:export PATH=/var/lib/google/bin:$PATH
$ sudo chmod o+x /var/lib/google/bin/docker $ docker compose version
为了记录,我还将信息添加到提及的问题。
答案2
好吧,我走错了路。Docker Compose 不是服务器插件,而是客户端插件。所以你只需要在你的 ~/.docker 上使用它。
在 COS(容器优化操作系统)中,/var/lib/docker 目录是可写且持久的,因此您可以将二进制文件保存在那里并为每个想要使用它的用户创建一个符号链接。
这些是完美运行的说明:
DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker}
CLI_PLUGINS=/var/lib/docker/cli-plugins
mkdir -p $DOCKER_CONFIG
sudo mkdir -p $CLI_PLUGINS
sudo curl -SL https://github.com/docker/compose/releases/download/v2.18.1/docker-compose-linux-x86_64 -o $CLI_PLUGINS/docker-compose
sudo chmod -R 755 /var/lib/docker
ln -s $CLI_PLUGINS $DOCKER_CONFIG/cli-plugins
谢谢https://github.com/docker/compose/issues/10463
同一台计算机上的其他用户必须运行:
DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker}
CLI_PLUGINS=/var/lib/docker/cli-plugins
mkdir -p $DOCKER_CONFIG
ln -s $CLI_PLUGINS $DOCKER_CONFIG/cli-plugins