Новіший докерський клієнт зі старшим хостом Docker


12

У нас трохи старший сервер Docker працює на RHEL 6.6. Наразі наша операційна команда недостатньо підтримується, тому ми не можемо легко оновити. Зараз він запускає Docker 1.3.2 з репо-версії EPEL. Якщо я заграю, я все, що мені потрібно для підтвердження концепції, сподіваюся, допоможе мені підштовхнути менеджмент до покращення інфраструктурної підтримки Докера вниз.

Я налаштував його для прослуховування на 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 на RHEL?
Майкл Хемптон

@MichaelHampton Розробники, які підключаються до цієї докерної коробки, знаходяться на різних робочих станціях Windows та OS X. Вони, як правило, встановили boot2docker і хотіли б використовувати того самого клієнта докера, який вказав на цьому хості.
якийro

Тоді ідеальним вибором є використання дистрибутива Linux, який відстежує останню версію Docker. На даний момент це Fedora Server.
Майкл Хемптон

Я здогадуюсь, що ви хотіли б, щоб хлопці з Operation оновились до RHEL 7, який наразі становить 1,2, і збільшиться (як це в каналі Extras, тому може зрости швидше, ніж у Core). Якщо ваша команда Ops не може підтримувати RHEL 7 (при платній підтримці Red Hat), вони, звичайно, не можуть підтримувати щось більш кровоточаче, наприклад, Fedora. Ваші розробники просто повинні прийняти, що їм потрібно кодувати стандартне робоче середовище. Дивіться також access.redhat.com/solutions/1408853 "Як підтримується Docker в RHEL 7.1?"
Камерон Керр

Відповіді:


26

Починаючи з Docker 1.10.0, є можливість змінити версію API, яка використовується для спілкування клієнта Docker з двигуном Docker.

Просто за допомогою змінної середовища DOCKER_API_VERSION.

Наприклад:

$ docker version
Client:
 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/amd64
Error response from daemon: client is newer than server (client API version: 1.22, server API version: 1.21)

$ DOCKER_API_VERSION=1.21 docker version
Client:
 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/amd64

Server:
 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

EDIT

Починаючи з Docker 1.13, CLI має покращену зворотну сумісність. Відповідно до https://blog.docker.com/2017/01/whats-new-in-docker-1-13 :

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


1

Якщо ви не можете легко оновити сервер, ви зможете легко знизити рівень свого клієнта. 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

register.hub.docker.com/u/igneoussystems/docker-client, схоже, є клієнтом докера (конкретної версії) всередині контейнера докера. Здається, наразі це не вдається створити, але, можливо, це дасть певну корисність .... може знадобитися трохи зусиль, але за допомогою деяких інструментів слід добре розширити масштаб, щоб забезпечити кілька версій клієнта докера.
Кемерон Керр

1
Я виявив, що ви також можете завантажувати попередньо створені клієнти безпосередньо. Ви можете отримати URL-адресу зі сценарію встановлення на сайті get.docker.com . Наприклад, мені знадобився get.docker.com/builds/Darwin/x86_64/docker-1.3.2 для OS X.
kojiro
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.