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

há 1 semana
10








Portuguese (BR) ·