Docker com API Legacy

há 1 semana 10
ANUNCIE AQUI

Saudações.

Um update recente do Docker descontinuou a API legado (1.24) e restringiu ao uso da versão moderna (1.44+). O resultado foi a quebra de vários serviços que controlavam o Docker, incluindo os importantes Portainer e Traefik.

Esse tutorial/dica apresenta uma forma de resolver de maneira rápida e pontual.

Nota: você só deve aplicar esse tutorial se seu Docker foi atualizado e provocou o problema.

Pré-requisitos (constam em outros artigos aqui do blog):

  • Instalação do Linux (Debian);
  • Internet no servidor;
  • Docker CE instalado;

1 – Conferindo suporte API

Teste se seu Docker foi atualizado e possui o problema:

Bash

# Instalar comadno jq para interpretar JSON no terminal: apt -y install jq; # Conferindo config da API curl \ --silent \ -X GET \ --unix-socket \ /run/docker.sock http://localhost/version | jq .; # Filtrar versoes de API suportadas: curl \ --silent \ -X GET \ --unix-socket /run/docker.sock \ http://localhost/version | jq . | grep -i ApiVersion; # Conferindo suporte a API nova: curl \ --silent \ -X GET \ --unix-socket /run/docker.sock http://localhost/v1.44/version | jq .; # Conferindo suporte a API legacy: curl \ --silent \ -X GET \ --unix-socket /run/docker.sock http://localhost/v1.24/version | jq .; # Erro ao consultar a v1.24 acima: # { # "message": "client version 1.24 is too old. # Minimum supported API version is 1.44, # please upgrade your client to a newer version" # }

Se ao consultar a API 1.24 o erro de “please upgrade your client to a newer version“, você precisará aplicar o ajuste abaixo para restaurar os serviços parados.

2 – Ativando API legacy novamente

Será necessário alterar a configuração do Docker no arquivo /etc/docker/daemon.json.

Se este arquivo existe, adicione o parâmetro abaixo no objeto JSON:

JSON

{ "min-api-version": "1.24" }

Se o arquivo não existe, use meu script:

Bash

# Criar config inicial do Docker: if [ -f /etc/docker/daemon.json ]; then echo "# daemon.json ja existe, edite-o com seguranca"; else echo "# criando daemon.json com suporte API legacy"; ( echo '{'; echo ' "min-api-version": "1.24",'; echo ' "max-concurrent-uploads": 16,'; echo ' "max-concurrent-downloads": 16'; echo '}'; ) > /etc/docker/daemon.json; echo "# concluido"; fi;

Reinicie o Docker:

Bash

# Reiniciar docker: systemctl restart docker;

Testar se a API legacy foi restaurada:

Bash

# Conferindo suporte a API legacy: curl \ --silent \ -X GET \ --unix-socket /run/docker.sock \ http://localhost/version | jq . | grep -i ApiVersion; # Retorno esperado: "MinAPIVersion": "1.24" # "ApiVersion": "1.52", # "MinAPIVersion": "1.24",

Eu arrasei, eu ja sei, de nada!” Autor: Maui

Terminamos por hoje!

Patrick Brandão, patrickbrandao@gmail.com

Ler artigo completo