同一台机器上的多个 docker 客户端

Ich*_*Ich 5 ubuntu docker docker-machine

由于我经常使用 docker 和 docker-machine,因此我必须同时使用多个 docker 版本。我们都知道这有多难:

$ docker ps
Error response from daemon: client is newer than server (client API version: 1.23, server API version: 1.22)
Run Code Online (Sandbox Code Playgroud)

所以,我的问题:(如何)是否可以在我的 Ubuntu 16.04 上运行多个版本的 docker 客户端?理想情况下,一旦我输入带有docker-machine.

旁注:我知道如何更新客户端或服务器。但我仍然必须使用不同的版本。

Ich*_*Ich 3

我找到了适合我的解决方案:

mkdir /opt/docker && cd /opt/docker
wget https://get.docker.com/builds/Linux/i386/docker-1.11.2.tgz
wget https://get.docker.com/builds/Linux/i386/docker-1.11.0.tgz
wget https://get.docker.com/builds/Linux/i386/docker-1.10.0.tgz # versions you want
tar -xzf docker-1.11.2.tgz -C 1.11.2
tar -xzf docker-1.11.0.tgz -C 1.11.0
tar -xzf docker-1.10.0.tgz -C 1.10.0
Run Code Online (Sandbox Code Playgroud)

添加这样的东西到你的.bashrc

PATH_DOCKER=$PATH
dmenter() {
  case $1 in
    swarm)
       eval $(dm env --swarm swarm)
       VERSION=$(docker-machine version swarm)
       export PATH=/opt/docker/$VERSION/usr/local/bin:$PATH_DOCKER
       ;;
    "")
       eval $(docker-machine env --unset)
       export PATH=$PATH_DOCKER
       ;;
    *)
       eval $(docker-machine env $*)
       VERSION=$(docker-machine version $*)
       export PATH=/opt/docker/$VERSION/usr/local/bin:$PATH_DOCKER
       ;;
  esac
}
Run Code Online (Sandbox Code Playgroud)

现在您可以输入您的 docker,dmenter <host>并始终拥有正确的客户端版本。