2016-06-03 2 views
3

Поскольку я работаю с докере и докерной машиной, мне приходится работать с несколькими версиями докеров одновременно. И все мы знаем, как трудно это может быть:клиентов нескольких докеров на той же машине

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

Итак, мой вопрос: (Как) Можно ли запускать несколько версий Docker клиента на моем Ubuntu 16.04? В идеале это было бы автоматически выбрать правильную версию, как только я войду в хост с docker-machine.

Замечание: Я знаю, как обновлять клиент или сервер. Но мне все же приходится работать с разными версиями.

+0

Но версия API-клиента клиента и сервера должна соответствовать, в чем смысл запуска нескольких клиентских версий. Конечно, вы можете принудительно настроить версию клиента, установив 'export DOCKER_API_VERSION = 1.22'. Но я не понимаю, какую гибкость вы желаете – Shibashis

+0

Вы всегда можете запустить несколько [Docker image] (https://hub.docker.com/_/docker/) желаемых версий. Если контейнерам также необходимо получить доступ к главному диску, вы можете запустить их с помощью переключателя '-v' (mount). – yonisha

ответ

1

Я нашел решение для меня:

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 

добавить что-то вроде этого, чтобы ваш .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 
} 

Теперь вы можете ввести свой докер с dmenter <host> и всегда иметь правильную версию клиента доступны.

Смежные вопросы