Новый клиент docker со старым хостом Docker

У нас есть немного более старый сервер Docker, работающий на RHEL 6.6. Сейчас наша оперативная группа не очень хорошо поддерживает его, поэтому мы не можем легко перейти на новую версию. Прямо сейчас он запускает Docker 1.3.2 из репозитория EPEL. Если я подключусь по ssh, он сделает все, что мне нужно для проверки концепции, что, надеюсь, поможет мне подтолкнуть руководство к улучшению поддержки инфраструктуры для Docker в будущем.

Я настроил его на прослушивание TCP / TLS, и я могу подключиться к нему, но он отказывается выполнять команды, заданные моим локальным клиентом docker.

$ docker versionClient version: 1.4.1Client API version: 1.16Go version (client): go1.4Git commit (client): 5bc2ff8OS/Arch (client): darwin/amd64FATA[0000] Error response from daemon: client and server don't have same version (client : 1.16, server: 1.15)

Я знаю, что само соединение работает, потому что fig работает:

$ cat > fig.ymltest:    image: busybox$ fig run --rm test sh/ # hostname -f084f75fb59d4

Есть ли какой-нибудь способ, которым я могу указать более новому клиенту docker использовать более старую версию docker API, пока я не смогу получить доступ к более новому хосту docker?

Начиная с Docker 1.10.0, существует возможность переопределения версии API, используемой для взаимодействия клиента Docker с Docker engine.

Просто используя переменную окружения DOCKER_API_VERSION.

От.:

$ docker versionClient: Version:      1.10.0 API version:  1.22 Go version:   go1.5.3 Git commit:   590d510 Built:        Fri Feb  5 08:21:41 UTC 2016 OS/Arch:      darwin/amd64Error response from daemon: client is newer than server (client API version: 1.22, server API version: 1.21)$ DOCKER_API_VERSION=1.21 docker versionClient: Version:      1.10.0 API version:  1.21 Go version:   go1.5.3 Git commit:   590d510 Built:        Fri Feb  5 08:21:41 UTC 2016 OS/Arch:      darwin/amd64Server: Version:      1.9.1 API version:  1.21 Go version:   go1.4.3 Git commit:   a34a1d5 Built:        Fri Nov 20 17:56:04 UTC 2015 OS/Arch:      linux/amd64

Ссылка: https://docs.docker.com/engine/reference/commandline/cli/#environment-variables

РЕДАКТИРОВАТЬ

Начиная с Docker 1.13, CLI имеет улучшенную обратную совместимость. Согласно с https://blog.docker.com/2017/01/whats-new-in-docker-1-13 :

Начиная с версии 1.13, новые CLI могут взаимодействовать со старыми демонами. Мы также добавляем согласование функций, чтобы возвращались правильные ошибки, если новый клиент пытается использовать функции, не поддерживаемые в более старом демоне. Это значительно улучшает совместимость и значительно упрощает управление установками Docker с разными версиями с одного и того же компьютера.

Если вы не можете легко обновить сервер, вы должны иметь возможность легко понизить рейтинг своего клиента. Docker имеет открытый исходный код по адресу GitHub. Версия 1.3.3 была последней с клиентским API 1.15. Здесь это прямая ссылка на тег.

Просто создайте локальный клон репозитория, выполните сборку, создайте двоичный файл, а затем поменяйте созданный двоичный файл:

sudo service docker stop ; sudo cp $(which docker) $(which docker)_ ; sudo cp ./bundles/1.3.3-dev/binary/docker-1.3.3-dev $(which docker);sudo service docker start

Использовать Docker client на RHEL?

@MichaelHampton Разработчики, подключающиеся к этому окну docker, находятся на различных рабочих станциях Windows и OS X. У них, как правило, установлен boot2docker, и они хотели бы использовать тот же клиент docker, который указан на этом хосте.

Таким образом, идеальным выбором является использование дистрибутива Linux, который отслеживает последнюю версию Docker. На данный момент это сервер Fedora.

Я предполагаю, что вы хотели бы, чтобы операционные ребята обновились до RHEL 7, который * в настоящее время * выглядит как 1.2 и будет увеличиваться (как и в канале Extras, поэтому может расти быстрее, чем ядро). Если ваша оперативная команда не может поддерживать RHEL 7 (с платной поддержкой Red Hat), то они, конечно же, не могут поддерживать что-то более современное, такое как Fedora. Вашим разработчикам просто нужно смириться с тем, что им нужно кодировать в стандартной операционной среде. Смотрите также https://access.redhat.com/solutions/1408853 “Как поддерживается Docker в RHEL 7.1?”