Criação e edição de containers

Realizando o download de imagens

Para realizarmos o download de uma imagem, basta acessar o link anteriormente contendo as imagens e executar o comando que está visível ao acessar essa imagem.

# docker pull ubuntu

Podemos checar todas as imagens disponíveis que foram baixadas.

# docker images

Com a imagem baixada, podemos executar ela.

# docker run ubuntu

Podemos checar quais containers que estão em execução. Se quisermos saber quais foram executados recentemente, podemos colocar a flag -a.

# docker ps

Executando um container

Usamos o comando a seguir para conseguirmos um bash para podermos interagir com o sistema operacional dentro do container. A flag -t significa que vai ser alocado um pseudo terminal e o -i que é o modo para interagirmos.

# docker run -it ubuntu

Se quisermos deixar um container em execução mesmo saindo dele, ou seja, deixando em background, podemos utilizar da seguinte forma.

# docker run -dti ubuntu

Se quisermos parar um container basta utilizar o seguinte comando, com o id do container ou o seu name.

# docker stop <container-id>

Executando aplicações no container

Se quisermos executar alguma aplicação, podemos utilizar o comando a seguir.

# docker exec -it <container-id> /bin/bash
# docker exec -it <container-id> cat /etc/*release*

Excluindo e nomeando containers

Podemos excluir um container com o comando a seguir.

# docker rm <container-id>

Podemos excluir uma imagem com o comando a seguir.

# docker rmi <nome-imagem>

Podemos nomear um container com o comando a seguir.

# docker run -dti --name <nome> <nome-imagem>

Copiando arquivos para o container

Para copiar algum arquivo para dentro do container, podemos utilizar

# docker cp <arquivo> <nome-imagem>:<destino>

Para copiar do container para nossa máquina, podemos utilizar

# docker cp <nome-imagem>:<caminho-arquivo> <novo-nome-arquivo>

Tag

Quando formos utilizar o docker pull para baixar uma imagem, sempre é baixado a imagem mais atualizada, porém podemos utilizar as tags para baixar uma imagem em alguma determinada versão. Para isso, precisamos utilizar os dois pontos ":" e logo após inserir a tag.

# docker pull debian:9

Criando um container no MySQL

Para começar, precisamos saber que para executar um container no mysql, é necessário especificar uma variável de ambiente (environment variable) que é o MYSQL_ROOT_PASSWORD.

# docker run -e MYSQL_ROOT_PASSWORD=<senha> --name mysql -d -p 3306:3306 mysql

Agora precisamos executar um bash dentro do container e após nos conectarmos, basta acessar o mysql. É necessário especificar qual o protocolo que está sendo utilizado.

# docker exec -it mysql bash
# mysql -u root -p --protocol=tcp

Montando um local de armazenamento

Com o comando abaixo, podemos ver um item chamado Destination que é o diretório padrão dentro do container onde o banco de dados é salvo. Para configurarmos que o banco de dados seja salvo fora do container, precisamos redirecionar o que é salvo nesse diretório para outra pasta.

# docker inspect <nome-imagem>

...
"Mounts": [
            {
                "Type": "volume",
                "Name": "6657573b8280db1e4501add35fe7df05d202c9648c5a0e28226f5f6e9e7a4c40",
                "Source": "/var/lib/docker/volumes/6657573b8280db1e4501add35fe7df05d202c9648c5a0e28226f5f6e9e7a4c40/_data",
                "Destination": "/var/lib/mysql",
                "Driver": "local",
                "Mode": "",
                "RW": true,
                "Propagation": ""
            }
# docker run -e MYSQL_ROOT_PASSWORD=<senha> --name mysql -d -p 3306:3306 --volume=<diretório-para-salvar>:/var/lib/mysql mysql

Dessa forma, por mais que esse container seja perdido, basta indicar o mesmo caminho que os dados serão recuperados.

Exemplo: Container apache

Lendo a documentação na parte da instalação da imagem, há uma parte que tem a informação de onde que lugar que está a pasta do projeto dentro do container. Precisamos referenciar o nosso diretório local onde está salvo o projeto para o diretório dentro do container.

# docker pull httpd

# docker run --name apache-teste -d -p 80:80 --volume=<diretório-local>:/usr/local/apache2/htdocs httpd

Exemplo: Container PHP-Apache

# docker pull php:7.4-apache
# docker run --name php-teste -d -p 8080:80 --volume=<diretório-local>:/var/www/html php:7.4-apache

Limitando memória e CPU

Para vermos a quantidade de CPU e memória que está sendo consumido em um container, basta executarmos o seguinte comando.

docker stats <apelido-imagem>

Para colocarmos um limite de memória e caso o container já foi criado, podemos atualizá-lo da seguinte forma. No exemplo a baixo, o limite é de 128 megabytes.

# docker update <apelido-imagem> -m 128M

Ou podemos especificar logo que o container for criado;

# docker run --name <apelido-imagem> -dti -m 128M --cpus 0.2 ubuntu

Informações, logs e processos

Para vermos as informações sobre o servidor.

# docker info

Para vermos os logs de um container

# docker container logs <container-id ou apelido-imagem>

Para vermos os processos em execução em um container

# docker container top <container-id ou apelido-imagem>

Redes

Para vermos as opções de redes podemos utilizar o comando a seguir

# docker network --help

Se não especificarmos uma rede ao criar um container, ele será adicionado a rede bridge. Podemos ver todos os containers que estão adicionados a essa rede.

# docker network inspect bridge

Se quisermos isolar dois containers, podemos criar uma rede específica, para que apenas os dois tenham acessos a si mesmo.

# docker network create minha-rede

// Criando os containeres dentro dessa rede
# docker run -dti --name debian-teste --network minha-rede debian
#docker run -dti --name ubuntu-teste --network minha-rede ubuntu

// Verificando
# docker network inspect minha-rede

Last updated