Olá, pessoal!
Hoje resolvemos fazer um artigo sobre como solucionar algumas dificuldades e problemas que tivemos no começo, visto que trabalhamos há mais de 2 anos já com Docker. Já tivemos muitos problemas e agora queremos demonstrar para vocês.
Instalando a versão mais recente
A maioria das pessoas que acabam por usar Ubuntu, Centos, RedHat ou qualquer outra distribuição, utiliza seus próprios comandos para realizar a instalação do Docker, com yum ou apt-get. Mas a forma de utilizar as versões mais recentes são essas:
Versão oficial para se utilizar em produção:
curl -sSL https://get.docker.com/ | sh
Versão que se encontra ainda em fase de testes:
curl -fsSL https://test.docker.com/ | sh
Versão alpha que está em constante desenvolvimento:
curl -fsSL https://experimental.docker.com/ | sh
Como remover todos os containers parados
docker rm $(docker ps -a -q)
Sincronizar o relógio do host com o container
Isso é um dos principais problemas que as pessoas acabam encontrando às vezes.
Para Centos (na hora de criar o container, mapeia o diretório do host com o do container):
docker run -v /etc/localtime:/etc/localtime:ro centos date
Para Ubuntu (na hora da criar o container, passa como variável o timezone(tz):
docker run -e "TZ=America/Salvador" ubuntu date
Comunicação entre containers
Por padrão, no Docker, a comunicação entre os containers na mesma rede é liberada através do IP interno. Mas caso você queira que os containers não se comuniquem diretamente, basta mudar na hora da criação da rede colocar icc=false.
docker network create -o com.docker.network.bridge.enable_icc=false rede_isolada
Montando volumes com services
Quando criamos um container simples com docker run, existe a opção do -v, onde podemos passar como parâmetro o nosso volume, porém com a implementação do services no Docker 1.12, ficou um pouco mais complicado na hora de passar um volume para o serviço:
Como você pode ver na opção “type”, temos o “bind” que seria um diretório em nosso host:
docker service create --mount type=bind,source=/diretoriohost,target=/diretoriocontainer imagem
E também temos a opção volume, que é passado o volume que é criado com “docker volume create:
docker service create --mount type=volume,source=meuvolume,target=/diretoriocontainer imagem
Docker commit e volume
O comando “docker commit” gera uma imagem do nosso container, porém ele não vai armazenar os dados do volume que estão atrelados àquele container. Então, o docker commit não irá servir de backup para os seus dados que estão no volume.
Não rode containers com –privileged
Com a opção de –privileged, o container consegue facilmente acessar diversas áreas do seu host as quais podem ser cruciais, caso alguém ache alguma brecha de segurança em sua aplicação.
Um processo para cada container
Não instale pacotes desnecessários em seus containers. Se você quer ter um container para apache, só instale o apache nele. Quer ter o PHP também? Então, suba outro container.
Cuidado com as regras de IPTABLES
Como o Docker trabalha com toda a sua parte de redes através de iptables, é bem provável que se você fizer alguma manutenção em seu firewall e editar alguma regra errada, toda a sua estrutura de Docker pode parar de funcionar por algum problema.
Coloque o diretório do docker em outro disco
O docker utiliza o caminho “/var/lib/docker” para colocar todos os seus arquivos de instalação e também toda a sua estrutura de containers, volumes e mais outros recursos que ele utiliza. Então, não deixe esse diretório no mesmo disco do seu SO.
Gostaram? Deixe seu feedback!
Grande abraço!