Mamy nieco starszy serwer Docker działający na RHEL 6.6. Nasz zespół operacyjny nie jest obecnie dobrze obsługiwany, więc nie możemy łatwo dokonać aktualizacji. W tej chwili działa Docker 1.3.2 z repozytorium EPEL. Jeśli ssh to zrobi, zrobi wszystko, czego potrzebuję do weryfikacji koncepcji, która, mam nadzieję, pomoże mi przyspieszyć zarządzanie w celu ulepszenia wsparcia infrastruktury dla Dockera w dół drogi.
Skonfigurowałem go do nasłuchiwania w TCP / TLS i jestem w stanie się z nim połączyć, ale odmawia uruchamiania poleceń wydanych przez mojego lokalnego klienta dokera.
$ 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)
Wiem, że samo połączenie działa, ponieważ fig
działa:
$ cat > fig.yml
test:
image: busybox
$ fig run --rm test sh
/ # hostname -f
084f75fb59d4
Czy jest jakiś sposób, aby powiedzieć nowszemu klientowi dokera, aby używał starszej wersji interfejsu API dokera, dopóki nie będę mógł uzyskać dostępu do nowszego hosta dokera?
Odpowiedzi:
Od wersji Docker 1.10.0 istnieje możliwość zastąpienia wersji interfejsu API używanej do komunikacji klienta Docker z silnikiem Docker.
Wystarczy użyć zmiennej środowiskowej DOCKER_API_VERSION.
Dawny.:
Odniesienie: https://docs.docker.com/engine/reference/commandline/cli/#environment-variables
EDYTOWAĆ
Od wersji Docker 1.13 CLI ma ulepszoną kompatybilność wsteczną. Według https://blog.docker.com/2017/01/whats-new-in-docker-1-13 :
źródło
Jeśli nie możesz łatwo zaktualizować serwera, powinieneś być w stanie łatwo obniżyć wersję swojego klienta. Docker jest open source w GitHub . Wersja 1.3.3 była ostatnia z interfejsem API klienta 1.15. Oto bezpośredni link do tagu.
Po prostu stwórz lokalny klon repozytorium, stwórz build, binarnie, a następnie zamień wyprodukowany plik binarny:
źródło