Klien docker yang lebih baru dengan host Docker yang lebih lama

Kami memiliki server Docker yang sedikit lebih tua yang berjalan di RHEL 6.6. Ini tidak didukung dengan baik oleh tim operasi kami saat ini, jadi kami tidak dapat meningkatkan dengan mudah. Saat ini menjalankan Docker 1.3.2 dari repo EPEL. Jika saya ssh di dalamnya melakukan semua yang saya butuhkan untuk bukti konsep yang diharapkan akan membantu saya mendorong manajemen untuk meningkatkan dukungan infrastruktur untuk Docker di jalan.

Saya mengaturnya untuk mendengarkan pada TCP / TLS, dan saya dapat terhubung dengannya, tetapi menolak untuk menjalankan perintah yang diberikan oleh klien buruh pelabuhan lokal saya.

$ 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)

Saya tahu koneksi itu sendiri berfungsi karena fig karya:

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

Apakah ada cara saya dapat memberi tahu klien buruh pelabuhan yang lebih baru untuk menggunakan versi API buruh pelabuhan yang lebih lama sampai saya dapat mengakses host buruh pelabuhan yang lebih baru?

Sejak Docker 1.10.0, ada opsi untuk mengganti Versi API yang digunakan untuk komunikasi klien Docker dengan Docker engine.

Hanya dengan menggunakan variabel lingkungan DOCKER_API_VERSION.

Dari.:

$ 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

Referensi: https://docs.docker.com/engine/reference/commandline/cli/#environment-variables

EDIT

Sejak Docker 1.13, CLI memiliki kompatibilitas mundur yang ditingkatkan. Menurut https://blog.docker.com/2017/01/whats-new-in-docker-1-13 :

Dimulai dengan 1.13, CLI yang lebih baru dapat berbicara dengan daemon yang lebih lama. Kami juga menambahkan negosiasi fitur sehingga kesalahan yang tepat dikembalikan jika klien baru mencoba menggunakan fitur yang tidak didukung di daemon yang lebih lama. Ini sangat meningkatkan interoperabilitas dan membuatnya lebih mudah untuk mengelola instalasi buruh pelabuhan dengan versi yang berbeda dari mesin yang sama.

Jika Anda tidak dapat dengan mudah meng-upgrade server, Anda harus dapat dengan mudah downgrade klien Anda. Docker adalah open source di GitHub. Versi 1.3.3 adalah yang terakhir dengan api klien 1.15. Di sini adalah tautan langsung ke tag.

Cukup buat tiruan lokal dari repo, buat build, buat biner, lalu tukar biner yang dihasilkan:

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

Gunakan Docker client di RHEL?

@ MichaelHampton pengembang yang terhubung ke kotak buruh pelabuhan ini ada di berbagai workstation Windows dan OS X. Mereka cenderung menginstal boot2docker dan ingin menggunakan klien buruh pelabuhan yang sama yang ditunjukkan pada host ini.

Pilihan ideal, kemudian, adalah menggunakan distribusi Linux yang melacak versi Docker terbaru. Saat ini, itu adalah server Fedora.

Saya menduga Anda ingin orang-orang operasi meningkatkan ke RHEL 7, yang saat ini tampaknya 1.2, dan akan bertambah (seperti di saluran ekstra, sehingga dapat tumbuh lebih cepat daripada inti). Jika tim Ops Anda tidak dapat mendukung RHEL 7 (dengan dukungan berbayar Red Hat), maka mereka pasti tidak dapat mendukung sesuatu yang lebih berdarah seperti Fedora. Pengembang Anda hanya perlu menerima bahwa mereka perlu kode untuk lingkungan operasi standar. Lihat juga https://access.redhat.com/solutions/1408853 " bagaimana Docker didukung di RHEL 7.1?"