Temos um servidor Docker um pouco mais antigo em execução no RHEL 6.6. No momento, não é bem suportado por nossa equipe de operações, portanto não podemos fazer upgrade facilmente. No momento, ele executa o Docker 1.3.2 a partir de um repositório EPEL. Se eu fizer o SSH, ele fará tudo o que for necessário para obter provas de conceito que, esperançosamente, me ajudem a impulsionar o gerenciamento para melhorar o suporte à infraestrutura do Docker no caminho.
Eu o configurei para ouvir no TCP / TLS e consigo conectar-me 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 que use a versão mais antiga da API do docker até que eu possa acessar um host docker mais novo?
Respostas:
Desde o Docker 1.10.0, existe uma opção para substituir a versão da API usada na comunicação do cliente Docker com o mecanismo do Docker.
Apenas usando a variável de ambiente DOCKER_API_VERSION.
Ex.:
Referência: https://docs.docker.com/engine/reference/commandline/cli/#environment-variables
EDITAR
Desde o Docker 1.13, a CLI tem uma compatibilidade com versões anteriores aprimorada. De acordo com https://blog.docker.com/2017/01/whats-new-in-docker-1-13 :
fonte
Se você não puder atualizar facilmente o servidor, poderá fazer o downgrade fácil do seu cliente. O Docker é de código aberto no GitHub . A versão 1.3.3 foi a última com a API do cliente 1.15. Aqui está um link direto para a tag.
Basta criar um clone local do repositório, criar build, tornar binário e depois trocar o binário produzido:
fonte