У нас есть немного более старый сервер Docker, работающий на RHEL 6.6. Это не очень хорошо поддерживается нашей операционной командой, поэтому мы не можем легко обновиться. Прямо сейчас он запускает Docker 1.3.2 из репозитория EPEL. Если я использую ssh, он делает все, что мне нужно для проверки концепции, которая, надеюсь, поможет мне подтолкнуть руководство к улучшению поддержки инфраструктуры Docker в будущем.
Я настроил его на прослушивание TCP / TLS, и я могу подключиться к нему, но он отказывается запускать команды, заданные моим локальным док-клиентом.
$ docker version
Client version: 1.4.1
Client API version: 1.16
Go version (client): go1.4
Git commit (client): 5bc2ff8
OS/Arch (client): darwin/amd64
FATA[0000] Error response from daemon: client and server don't have same version (client : 1.16, server: 1.15)
Я знаю, что само соединение работает, потому что fig
работает:
$ cat > fig.yml
test:
image: busybox
$ fig run --rm test sh
/ # hostname -f
084f75fb59d4
Есть ли какой-нибудь способ, которым я могу сказать более новому клиенту докера использовать более старую версию докера API, пока я не получу доступ к более новому хосту докера?
Ответы:
Начиная с Docker 1.10.0, существует возможность переопределения версии API, используемой для связи клиента Docker с механизмом Docker.
Просто с помощью переменной окружения DOCKER_API_VERSION.
Напр .:
Ссылка: 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 :
источник
Если вы не можете легко обновить сервер, вы сможете легко понизить версию своего клиента. Docker с открытым исходным кодом на GitHub . Версия 1.3.3 была последней с клиентским API 1.15. Вот прямая ссылка на тег.
Просто сделайте локальный клон репозитория, сделайте сборку, сделайте бинарный файл и затем обменяйте полученный бинарный файл:
источник