Olá, pessoal.
Hoje vamos falar um pouco mais sobre as opções que talvez muitas pessoas não conhecem sobre o Docker run e que podem ajudar você diariamente a subir suas aplicações com mais segurança e também com mais praticidade. A ideia por trás deste artigo não é mostrar como criar um container, mas sim quais as opções novas e que podemos utilizar em nosso dia a dia.
PID settings (–pid)
Por padrão, todos os containers possuem o PID namespace habilitado. O Namespace PID remove o ponto de vista dos processos do sistema e permite IDs de processos para ser utilizado. Em alguns casos, você pode querer rodar alguma ferramenta de depuração em seu container para que ele consiga visualizar os processos do seu host, então basta iniciar o container com a opção de –pid ativada:
docker run -it --rm --pid=host imagem
É possível também utilizar o –pid para depurar as informações de outro container. Para isso, vamos iniciar a execução de um container com mongoDB e depois um container para realizar a depuração.
docker run --name mongo -d mongodb docker run --it --pid=container:mongo imagem
–dns
Por padrão, os containers irão compartilhar os mesmos servidores de DNS que estão sendo utilizados em seu host, então na hora de criação de cada container você pode utilizar o parâmetro –dns=”8.8.8.8″, por exemplo.
–add-host
O Docker já cria dentro de cada container em /etc/hosts o arquivo com algumas configurações de rede, como:
172.17.0.2 02ed3f564f1b 127.0.0.1 localhost fe00::0 ip6-localnet
Porem, é possível na hora da criação do container, você adicionar mais uma entrada dentro do arquivo de hosts. Para isso, basta colocar a opção –add-host em seu “docker run”.
docker run -it --add-host entrada:ip -d centos
–security-opt
Nas versões mais recentes do Docker, é possível você limitar para que os comandos que exigem privilégios dentro do Docker não sejam mais executados, como: su ou sudo. Para isso, basta executar:
docker run --security-opt no-new-privileges -d centos
–restart
Utilizando essa opção, é possível realizar a reinicialização de containers a partir de determinados eventos. São eles: on-failure, always, unless-stopped.
- On-failure: Reinicia somente se o status de saída do container por diferente de 0; é possível limitar o numero de tentativas de reinicialização. O Docker irá esperar 100ms na primeira vez que tentar reiniciar o container; caso vá para segunda vez, então irá esperar 200ms e depois 400ms, e assim dependendo do número de tentativas.
docker run --restart=on-failure:3 centos
- Always: Sempre reinicie o container independentemente do status de saída. Na reinicialização do servidor, o container irá subir automaticamente após o serviço do Docker ser startado.
docker run --restart=always centos
- Unless-Stopped: Inicialize o container independentemente do status de saída, porem na reinicialização do servidor ou do serviço do Docker o container não irá subir automaticamente.
docker run --restart=unless-stopped centos
O status de saída exibido pelo Docker no docker run pode ser visto utilizando a seguinte opção:
docker run redis; echo $?
Existem alguns números já conhecidos, 125 (Problema com o docker daemon), 126 (Comando não pode ser invocado), 127 (Comando não pode ser encontrado).
–isolation
Essa opção é útil quando você executar Docker no Windows. Essa opção define qual tecnologia será usada para o isolamento do container. No caso do Linux, é default, e no Windows, temos: process e Hyper-v.
docker run -d --isolation process busybox top
–device
Um dia poderá aparecer a necessidade para que você anexe um disco a seu container. Então, com essa opção, você pode anexar diretamente um disco a seu container:
docker run --device=/dev/sdb:/dev/xvdc -d centos
–rm
Por padrão, quando você cria um container sem passar a opção de “–rm”, esse container acaba parando por algum motivo, e ele não é removido do Docker, nem o seu volume. Porém, caso você deseja que remova o container, você poderá passar o parâmetro na hora da criação do container.
docker run -it -v /home/container:/home --rm -d centos
Nesse modo de criação de container, quando o container por algum motivo parar ,o Docker irá excluí-lo e também apagar o volume junto. Para que NÃO APAGUE O VOLUME, você deve criar um volume com a opção de docker volume create…. e na hora da criação desse container passar o nome do volume.
docker run -it --rm -v volume:/home -d centos
Então tá, pessoal, por hoje era isso, espero que tenham gostado. Em breve, faremos artigo mais focados no baixo nível do Docker para que você possa saber como todas as opções funcionam e como utilizá-las.