Configurando o push/pull simultâneo/paralelo no Docker

Olá.

O push/pull de imagens em versões recentes do Docker conta com a transferência de vários layers em paralelo, o que costuma acelerar bastante o processo. Contudo, em conexões mais restritas a situação pode ser outra, se transformando num transtorno. Isso principalmente na hora de fazer o upload de imagens.

Como há divisão da banda dentre as várias transmissões, a taxa individual de cada transmissão cai, resultando em um maior tempo para a conclusão de qualquer envio. Estando em uma conexão mais instável, isso normalmente resulta em grande frustração, pois o Docker acaba desistindo do envio após várias falhas e nenhum arquivo transmitido.

No meu caso, usando ADSL de 2Mbit e com a transferência simultânea ativa, sempre obtenho sucesso no pull e no push. Já com uma conexão Cable de 15Mbit, o Docker falha sistematicamente em realizar o push.

Solução

A solução para este problema está em definir o número máximo de downloads/uploads simultâneos que o Docker deve fazer.
Pelo que pude entender, esta configuração entrou em disponibilidade em alguma versão próxima ou a partir da 1.12.0. O que posso garantir é que na 1.12.1 funciona.

Como configurar

Isso é feito no arquivo de configurações do Docker daemon (o serviço que fica ativo no seu sistema). No Linux o local padrão deste arquivo é o seguinte:

/etc/docker/daemon.json

Se você nunca mexeu neste arquivo, provavelmente ele não existe, então basta criá-lo. Segue exemplo:

{
    "max-concurrent-downloads": 3,
    "max-concurrent-uploads": 1
}

Bom, o JSON é bem simples, basta alterar o valor da respectiva propriedade e na sequência reiniciar o serviço do Docker:

sudo service docker restart

Se você quiser uma referência completa sobre este arquivo de configuração, basta acessar neste link:
https://docs.docker.com/engine/reference/commandline/dockerd/#/linux-configuration-file

É isso.
Até.

Esta entrada foi publicada em Cloud, Linux, Servidores e marcada com a tag , , . Adicione o link permanente aos seus favoritos.