Articles

Passos de pós-instalação para o Linux

tempo de leitura estimado: 15 minutos

Esta secção contém procedimentos opcionais para configurar as máquinas Linux para funcionar melhor com o Docker.

Manage Docker as a non-root user

The Docker daemon binds to a Unix socket instead of a TCP port. Por default that Unix socket is owned by the user root and other users can only access itusing sudo. O servidor do Docker sempre funciona como o usuário root.

Se você não deseja prefácio docker comando com sudo, criar um Unixgroup chamado de docker e adicionar usuários a ele. Quando o servidor do Docker inicia, ele cria um soquete Unix acessível por membros do grupo docker.

Aviso

docker group concede privilégios equivalentes a rootusuário. Para mais detalhes sobre como isso afeta a segurança em seu sistema, seeDocker Daemon Attack Surface.

Nota:

Para executar a janela de Encaixe sem privilégios de root, seeRun a janela de Encaixe daemon como um usuário não-root (modo sem raiz).

Para criar o docker grupo e adicionar o seu usuário:

  1. Criar docker grupo.

    $ sudo groupadd docker
  2. Adicionar seu usuário ao docker grupo.

    $ sudo usermod -aG docker $USER

  3. Log out and log back in so that your group membership is re-evaluated.

    se testar numa máquina virtual, pode ser necessário reiniciar a máquina virtual para que as alterações entrem em vigor.

    em um ambiente de desktop Linux, como o X Windows, faça log fora de sua sessão completamente e então faça log back in.

    no Linux, você também pode executar o seguinte comando para ativar as alterações aos grupos:

    $ newgrp docker 
  4. Verifique se que você pode executar o docker comandos sem sudo.

    $ docker run hello-world

    Este comando transfere uma imagem de teste e executa-a num contentor. Quando o cliente corre, imprime uma mensagem informativa e sai.

    Se você inicialmente executou a janela de Encaixe comandos CLI usando sudo antes de addingyour usuário docker grupo, você pode ver o seguinte erro,o que indica que o ~/.docker/ diretório foi criado withincorrect permissões devido ao sudo comandos.

    WARNING: Error loading config file: /home/user/.docker/config.json -stat /home/user/.docker/config.json: permission denied

    Para corrigir este problema, remova o ~/.docker/ diretório(ele é recriado automaticamente, mas qualquer personalizada settingsare perdido), ou alterar sua propriedade e permissões usando seguintes comandos:

    $ sudo chown "$USER":"$USER" /home/"$USER"/.docker -R$ sudo chmod g+rwx "$HOME/.docker" -R

    Configurar a janela de Encaixe para iniciar no arranque

    a Maioria das atuais distribuições Linux (RHEL, CentOS, Fedora, Debian, Ubuntu 16.04 andhigher) use systemd para gerenciar serviços de iniciar quando o systemboots. No Debian e Ubuntu, o serviço de Docker é configurado para iniciar no bootby default. Para iniciar automaticamente a janela de Encaixe e Containerd na inicialização para otherdistros, use os comandos abaixo:

    $ sudo systemctl enable docker.service$ sudo systemctl enable containerd.service

    Para desativar esse comportamento, use disable em vez disso.

    $ sudo systemctl disable docker.service$ sudo systemctl disable containerd.service

    Se precisar de adicionar um ‘Proxy’ de HTTP, definir uma pasta ou partição diferente para os ficheiros de tempo de execução do bloqueador, ou fazer outras personalizações, seecustomize as suas opções do servidor do Docker do systemd.

    utilize um motor de armazenamento diferente

    para obter informações sobre os diferentes motores de armazenamento, drivers de seeStorage.O motor de armazenamento padrão e a lista de motores de armazenamento suportados dependem da distribuição Linux do seu host e drivers de kernel disponíveis.

    Configure default logging driver

    Docker fornece a capacidade de coletar e ver os dados de log de todos os recipientes rodando em uma máquina através de uma série de drivers de logging. O controlador de registo por omissão, json-file, escreve os dados de registo para os ficheiros formatados pelo JSON no sistema de ficheiros da máquina. Ao longo do tempo, estes arquivos de log Expansion tamanho, levando à exaustão potencial dos recursos de disco.

    Para aliviar tais problemas, ou configurar o json-file log driver toenable rotação de log, use analternative log driversuch como o “local” log driverthat executa a rotação de log por padrão, ou usar um driver de log que sendslogs para um registo remoto agregador.

    Configure where the Docker daemon listens for connections

    By default, the Docker daemon listens for connections on a UNIX socket to acceptrequests from local clients. É possível permitir que o Docker Aceite pedidos de hosts remotos configurando-o para ouvir um endereço IP e uma porta, assim como o soquete UNIX. Para obter informações mais detalhadas sobre esta opção de configuração, consulte a secção” Bind Docker to another host/port or a unix socket ” do artigo de referência do Docker CLI.

    Secure a sua ligação

    Antes de configurar o Docker para aceitar ligações de máquinas remotas é extremamente importante que compreenda as implicações de segurança da abertura do docker à rede. Se não forem tomadas medidas para proteger a conexão, é possível que usuários remotos não-root obtenham acesso root na máquina. Para mais informações sobre como usar os certificados TLS para proteger esta ligação, assinale este artigo sobre como proteger o ‘socket’ do servidor do Docker.

    Configurando a janela de Encaixe para aceitar conexões remotas pode ser feito com o docker.servicesystemd unidade de arquivo para distribuições Linux usando systemd, tais como os recentes versões dos sistemas RedHat, CentOS, Ubuntu e SLES, ou com o daemon.json arquivo que isrecommended para distribuições de Linux que não usar o systemd.

    systemd vs daemon.json

    configurar o ‘Docker’ para ouvir as ligações usando o ficheiro systemd unit file e o ficheiro daemon.json causa um conflito que impede o ‘Docker’ de começar.

    Configurar o acesso remoto com o systemd unidade de arquivo

    1. Use o comando sudo systemctl edit docker.service para abrir um arquivo de substituição para o docker.service em um editor de texto.

    2. Adicione ou modifique as seguintes linhas, substituindo os seus próprios valores.

      ExecStart=ExecStart=/usr/bin/dockerd -H fd:// -H tcp://127.0.0.1:2375
    3. Salve o ficheiro.

    4. recarregue a configuração de systemctl.

       $ sudo systemctl daemon-reload
    5. reiniciar o acoplador.

      $ sudo systemctl restart docker.service
    6. Verifique se a alteração foi homenageado analisando a saída de netstat para confirmar dockerd está escutando na porta configurada.

      $ sudo netstat -lntp | grep dockerdtcp 0 0 127.0.0.1:2375 0.0.0.0:* LISTEN 3758/dockerd
    7. Configurar o acesso remoto com o daemon.json

      1. Set hosts array /etc/docker/daemon.json para ligar para o socket UNIX e um endereço IP, da seguinte forma:

        { "hosts": }
      2. Reiniciar a janela de Encaixe.

      3. Verifique se a alteração foi homenageado analisando a saída de netstat para confirmar dockerd está escutando na porta configurada.

        $ sudo netstat -lntp | grep dockerdtcp 0 0 127.0.0.1:2375 0.0.0.0:* LISTEN 3758/dockerd

        activar o IPv6 no servidor do Docker

        para activar o IPv6 no servidor do Docker, veja o suporte do IPv6.

        solução de problemas

        compatibilidade do Kernel

        Docker não pode ser executada correctamente se o seu kernel for mais antigo do que a versão 3.10 ou se faltar alguns módulos. Para verificar a compatibilidade do kernel, você pode obter andrun ocheck-config.sh

        script.

        $ curl https://raw.githubusercontent.com/docker/docker/master/contrib/check-config.sh > check-config.sh$ bash ./check-config.sh

        o programa só funciona em Linux, não em macOS.

        não pode ligar-se ao servidor do Docker

        Se vir um erro como o seguinte, o seu cliente do Docker poderá ser configurado para se ligar a um servidor do Docker numa máquina diferente, e essa máquina poderá não ser acessível.

        Cannot connect to the Docker daemon. Is 'docker daemon' running on this host?

        para ver a que máquina o seu cliente está configurado para se ligar, verifique o valor da variável DOCKER_HOST no seu ambiente.

        $ env | grep DOCKER_HOST

        Se este comando devolver um valor, o Cliente do ‘Docker’ está configurado para se ligar ao servidor do aDocker a correr nessa máquina. Se estiver desactivado, o Cliente do Docker está configurado para ligar ao servidor do Docker a correr na máquina local. Se ele estiver definido no de erro,use o seguinte comando para anulá-lo:

        $ unset DOCKER_HOST

        Você pode precisar editar o seu ambiente em arquivos como o ~/.bashrc ou~/.profile para evitar que o DOCKER_HOST variável que está sendo seterroneously.

        Se DOCKER_HOST estiver definido como previsto, verifique se o servidor do Docker está a correr na máquina remota e que uma ‘firewall’ ou ‘rede’ não o impede de se ligar.

        problemas de encaminhamento de IP

        se configurar manualmente a sua rede usando systemd-network com systemdversão 219 ou superior, os contentores do Docker podem não ser capazes de aceder à sua rede.Começando com systemd versão 220, a configuração de encaminhamento para uma dada rede(net.ipv4.conf.<interface>.forwarding) é desligada. Isto resolve os problemas de IP. Ele também entra em conflito com o comportamento do Docker de habilitar o net.ipv4.conf.all.forwarding setting within containers.

        Para contornar este no RHEL, CentOS ou Fedora, edite o <interface>.networkficheiro /usr/lib/systemd/network/ na sua janela de Encaixe host(ex: /usr/lib/systemd/network/80-container-host0.network) e adicionar thefollowing bloco dentro de seção.

        ...IPForward=kernel# ORIPForward=true

        Esta configuração permite o encaminhamento de IP do contentor como esperado.

        resolução DNS encontrada no resolv.conf e recipientes não pode usá-lo

        sistemas Linux que usar uma interface gráfica, muitas vezes, ter um gerente de rede em execução, que usa umdnsmasq instância em execução em um endereço de loopback como 127.0.0.1 ou127.0.1.1 cache de pedidos de DNS, e adiciona essa entrada/etc/resolv.conf. Thednsmasq service speeds upDNS look-ups and also provides DHCP services. Esta configuração não funciona com um container do Docker que tem seu próprio espaço de nomes de rede, porque o container do Docker resolve endereços de loopback como 127.0.0.1 toitself, e é muito improvável que esteja executando um servidor DNS em seu próprio endereço.

        Se a janela de Encaixe detecta que nenhum servidor DNS que é referência em /etc/resolv.conf é um fullyfunctional servidor de DNS, o seguinte aviso ocorre e a janela de Encaixe usa o publicDNS servidores fornecidos pelo Google 8.8.8.8 e 8.8.4.4 para a resolução de DNS.

        WARNING: Local (127.0.0.1) DNS resolver found in resolv.conf and containerscan't use it. Using default external servers : 

        Se você ver esse aviso, verifique primeiro se você usar dnsmasq:

        $ ps aux |grep dnsmasq

        Se o seu recipiente precisa para resolver os hosts que são internos para a sua rede, conscientizar o público nameservers não são adequadas. Você tem duas opções:

        • você poderá indicar um servidor de DNS para o acoplador usar, ou
        • você poderá desactivar dnsmasq no NetworkManager. Se você fizer isso, o NetworkManageradds o seu verdadeiro servidor de nomes DNS para /etc/resolv.conf, mas você perde os benefícios possíveis de dnsmasq.

        só necessita de utilizar um destes métodos.

        indique os servidores de DNS para o acoplador

        a localização por omissão do ficheiro de configuração é /etc/docker/daemon.json. Pode alterar a localização do ficheiro de configuração usando a opção --config-filedaemon. A documentação abaixo assume que o ficheiro de configuração está localizado em /etc/docker/daemon.json.

        1. Crie ou edite o ficheiro de configuração do servidor do ‘Docker’, que é por omissão/etc/docker/daemon.json ficheiro, que controla a configuração do ‘Docker Daemon’.

          $ sudo nano /etc/docker/daemon.json
        2. Adicionar um dns chave com um ou mais endereços IP como valores. Se o ficheiro tiver conteúdo existente, só terá de adicionar ou editar a linha .

          { "dns": }

          Se o seu servidor de DNS interno não conseguir resolver os endereços IP públicos, inclua pelo menos um servidor de DNS que o possa fazer, para que possa ligar-se ao Hub do Docker e para que os seus contentores possam resolver os nomes de domínio na internet.

          Salve e feche o arquivo.

        3. reinicie o servidor do acoplador.

          $ sudo service docker restart

          :

        4. Se necessário, verifique se os recipientes do Docker podem resolver um hostname interno através da sua localização.

          $ docker run --rm -it alpine ping -c4 <my_internal_host>PING google.com (192.168.1.2): 56 data bytes64 bytes from 192.168.1.2: seq=0 ttl=41 time=7.597 ms64 bytes from 192.168.1.2: seq=1 ttl=41 time=7.635 ms64 bytes from 192.168.1.2: seq=2 ttl=41 time=7.660 ms64 bytes from 192.168.1.2: seq=3 ttl=41 time=7.677 ms
        5. Desativar dnsmasq

          Ubuntu

          Se você preferir não alterar a janela de Encaixe daemon de configuração para utilizar um specificIP endereço, siga estas instruções para desactivar dnsmasq no NetworkManager.

          1. edite o ficheiro.

          2. comente o caracteredns=dnsmasq adicionando um#

        ao início da linha.

        # dns=dnsmasq

        gravar e fechar o ficheiro.

      4. reiniciar tanto o NetworkManager como o acoplador. Como alternativa, podes reiniciar o teu sistema.

        $ sudo restart network-manager$ sudo restart docker
      RHEL, CentOS ou Fedora

      Para desativar o dnsmasq no RHEL, CentOS ou Fedora:

      1. Desactivar o dnsmasq serviço:

        $ sudo service dnsmasq stop$ sudo systemctl disable dnsmasq

      2. Configure os servidores DNS manualmente usando a documentação do chapéu.

      Permitir o acesso a API remota através de um firewall

      Se você executar um firewall no mesmo host como você executar a janela de Encaixe e você deseja acessar a janela de Encaixe API Remota a partir de outro host e acesso remoto estiver ativado, você needto configurar o seu firewall para permitir conexões de entrada na janela de Encaixe da porta,qual o padrão 2376 se encriptado TLS, transport é habilitado ou 2375caso contrário.

      dois daemons de firewall comuns areUFW (Firewall não complicada) (frequentemente utilizado para sistemas Ubuntu) e firewalld (frequentemente utilizado para sistemas baseados em RPM). Consulte a documentação para o seu SO e firewall, mas as seguintes informações podem ajudá-lo a começar. Estas opções são bastante permissivas e você pode querer usar uma configuração diferente que bloqueia mais o seu sistema.

      • UFW: conjunto DEFAULT_FORWARD_POLICY="ACCEPT" na sua configuração.

      • firewalld: adicione regras semelhantes às seguintes à sua política (uma para os pedidos de limpeza e outra para os pedidos de saída). Certifique-se de que os nomes de interface e nomes de cadeia estão corretos.

        <direct> </direct>

        o seu núcleo não suporta as capacidades de limite de swap do Grupo C

        No Ubuntu ou nos servidores Debian, poderá ver mensagens semelhantes às seguintes ao trabalhar com uma imagem.

        WARNING: Your kernel does not support swap limit capabilities. Limitation discarded.

        este aviso não ocorre em sistemas baseados em RPM, que permitem estas capacidades por padrão.se não precisar destas capacidades, pode ignorar o aviso. Você pode viabilizar estas capacidades no Ubuntu ou Debian seguindo estas instruções. A Contabilidade de memória e swap implica uma sobrecarga de cerca de 1% do total de memória disponível e uma degradação do desempenho global de 10%, mesmo que o Docker não esteja a funcionar.

        1. logar no Ubuntu ou Debian host como um usuário comsudo privilégios.

        2. edite o ficheiro /etc/default/grub. Adicionar ou editar oGRUB_CMDLINE_LINUX

        lineto adicionar os seguintes dois pares de valores-chave:

        GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"

        gravar e fechar o ficheiro.actualizar a comida.

        $ sudo update-grub

        Se o seu ficheiro de configuração da GRUB tiver sintaxe incorrecta, um erro occurs.In neste caso, repita os passos 2 e 3.

        As alterações fazem Efeito quando o sistema é reiniciado.

        • dê uma olhada nos Módulos de treinamento Get started para aprender como construir uma imagem e executá-la como uma aplicação contendo.
        • reveja os tópicos em desenvolvimento com o Docker para aprender a construir novas aplicações usando o Docker.

        Docker, Docker documentation, requirements, apt, install, ubuntu, install, desinstall, upgrade, update