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
- Configurar a janela de Encaixe para iniciar no arranque
- utilize um motor de armazenamento diferente
- Configure default logging driver
- Configure where the Docker daemon listens for connections
- Configurar o acesso remoto com o systemd unidade de arquivo
- Configurar o acesso remoto com o daemon.json
- activar o IPv6 no servidor do Docker
- solução de problemas
- compatibilidade do Kernel
- não pode ligar-se ao servidor do Docker
- problemas de encaminhamento de IP
- resolução DNS encontrada no resolv.conf e recipientes não pode usá-lo
- indique os servidores de DNS para o acoplador
- Desativar dnsmasq
- Ubuntu
- RHEL, CentOS ou Fedora
- Permitir o acesso a API remota através de um firewall
- o seu núcleo não suporta as capacidades de limite de swap do Grupo C
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 aroot
usuá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:
-
Criar
docker
grupo.$ sudo groupadd docker
-
Adicionar seu usuário ao
docker
grupo.$ sudo usermod -aG docker $USER
-
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
-
Verifique se que você pode executar o
docker
comandos semsudo
.$ 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áriodocker
grupo, você pode ver o seguinte erro,o que indica que o~/.docker/
diretório foi criado withincorrect permissões devido aosudo
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.service
systemd unidade de arquivo para distribuições Linux usando systemd, tais como os recentes versões dos sistemas RedHat, CentOS, Ubuntu e SLES, ou com odaemon.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 ficheirodaemon.json
causa um conflito que impede o ‘Docker’ de começar.Configurar o acesso remoto com o systemd unidade de arquivo
-
Use o comando
sudo systemctl edit docker.service
para abrir um arquivo de substituição para odocker.service
em um editor de texto. -
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
-
Salve o ficheiro.
-
recarregue a configuração de
systemctl
.$ sudo systemctl daemon-reload
reiniciar o acoplador.
$ sudo systemctl restart docker.service
Verifique se a alteração foi homenageado analisando a saída de
netstat
para confirmardockerd
está escutando na porta configurada.$ sudo netstat -lntp | grep dockerdtcp 0 0 127.0.0.1:2375 0.0.0.0:* LISTEN 3758/dockerd
Configurar o acesso remoto com o daemon.json
-
Set
hosts
array/etc/docker/daemon.json
para ligar para o socket UNIX e um endereço IP, da seguinte forma:{ "hosts": }
-
Reiniciar a janela de Encaixe.
-
Verifique se a alteração foi homenageado analisando a saída de
netstat
para confirmardockerd
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 o
check-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 oDOCKER_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
comsystemd
versão 219 ou superior, os contentores do Docker podem não ser capazes de aceder à sua rede.Começando comsystemd
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 onet.ipv4.conf.all.forwarding
setting within containers.Para contornar este no RHEL, CentOS ou Fedora, edite o
<interface>.network
ficheiro/usr/lib/systemd/network/
na sua janela de Encaixe host(ex:/usr/lib/systemd/network/80-container-host0.network
) e adicionar thefollowing bloco dentro deseçã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 um
dnsmasq
instância em execução em um endereço de loopback como127.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 como127.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 Google8.8.8.8
e8.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 dednsmasq
.
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-file
daemon. A documentação abaixo assume que o ficheiro de configuração está localizado em/etc/docker/daemon.json
.-
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
-
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.
-
reinicie o servidor do acoplador.
$ sudo service docker restart
:
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
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.-
edite o ficheiro.
-
comente o caractere
dns=dnsmasq
adicionando um#
ao início da linha.
# dns=dnsmasq
gravar e fechar o ficheiro.
-
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:-
Desactivar o
dnsmasq
serviço:$ sudo service dnsmasq stop$ sudo systemctl disable dnsmasq
-
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 ou2375
caso 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.
-
logar no Ubuntu ou Debian host como um usuário com
sudo
privilégios. -
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
-