Cliente docker mais recente com host Docker mais antigo

12

Temos um servidor Docker ligeiramente mais antigo em execução no RHEL 6.6. Não é bem suportado por nossa equipe de operações no momento, por isso não podemos atualizar facilmente. Agora ele roda o Docker 1.3.2 de um repo EPEL. Se eu fizer isso, tudo o que preciso para provas de conceito que, esperançosamente, me ajudarão a impulsionar o gerenciamento para melhorar o suporte à infraestrutura do Docker no futuro.

Configurei-o para ouvir em TCP / TLS e consigo me conectar a ele, mas ele se recusa a executar comandos fornecidos pelo meu cliente docker local.

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

Eu sei que a conexão em si funciona porque fig funciona:

$ cat > fig.yml
test:
    image: busybox
$ fig run --rm test sh
/ # hostname -f
084f75fb59d4

Existe alguma maneira de dizer ao cliente docker mais recente para usar a versão mais antiga da API do Docker até que eu possa acessar um host mais novo do Docker?

    
por kojiro 04.02.2015 / 17:51

2 respostas

26

Desde o Docker 1.10.0, há uma opção para substituir a versão da API usada para comunicação do cliente do Docker com o mecanismo do Docker.

Apenas usando a variável de ambiente DOCKER_API_VERSION.

Ex .:

$ 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

Referência: link

EDITAR

Desde o Docker 1.13, o CLI tem uma compatibilidade retroativa aprimorada. De acordo com o link :

Starting with 1.13, newer CLIs can talk to older daemons. We’re also adding feature negotiation so that proper errors are returned if a new client is attempting to use features not supported in an older daemon. This greatly improves interoperability and makes it much simpler to manage Docker installs with different versions from the same machine.

    
por 05.02.2016 / 16:04
1

Se você não conseguir atualizar o servidor facilmente, será possível fazer o downgrade do seu cliente. O Docker é open source no GitHub . A versão 1.3.3 foi a última com a API do cliente 1,15. Aqui é um link direto para a tag.

Basta criar um clone local do repo, criar, fazer o binário e depois trocar o binário produzido:

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
    
por 09.02.2015 / 02:03

Tags