Docker

Objetivo

Documentar método de instalação, além de tutorial de uso.

Dependências

  1. Docker, v25.0.3

Instalação

  • Primeiro, instale os pacotes necessário, adicionando docker aos sources do apt.

# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# Add the repository to Apt sources:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
  • Por fim, instale o Docker

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Adicionar docker a usuario não root

Para utilizar docker é necessario ter acesso ao root (Docs).
Assim, crie o grupo docker caso não exista e adicione seu usuario a ele.

# Create group
sudo groupadd docker
# Add user
sudo usermod -aG docker $USER

Mudança de diretório raiz

Para mudar o diretório raiz seguir os seguintes passos:\

  1. Pare os processos:

sudo systemctl stop docker
sudo systemctl stop docker.socket
sudo systemctl stop containerd
  1. Transfira o diretório do Docker:

rsync -a -H /var/lib/docker /home
  1. Edite o arquivo de configuração do Docker:

sudo vim /etc/docker/daemon.json
Adicionando:
{
  "data-root": "/home/docker"
}
  1. Reinicie os processos:

sudo systemctl start docker
  1. Confira se deu certo (irá retornar o diretório raiz atual do Docker):

docker info -f '{{ .DockerRootDir}}'

Criando Containers

Para criar um container a uma aplicação primeiro importe a imagem da aplicação caso não exista.
Todas as imagens disponíveis em docker podem ser vistas em Docker HUB

# List docker images
docker image ls
# Import docker image
docker pull <aplication>
# Example
docker pull postgres

Em seguida, para criar e logo em seguida executar um novo container execute:

# Create and run container
docker run --name <container_name> <parameters> <docker_image>
# Example
docker run --name pg_container1 -e POSTGRES_PASSWORD=mysecretpassword -d postgres
# Check running containers
docker ps

Finalmente, conecte ao docker

# Connect to the docker system as root
docker exec --user=root -it <container_name> /bin/bash

Para parar/destruir o container execute:

docker stop <container_name>
docker rm <container_name>

Importar/Exportar arquivos

Para importar ou exportar arquivos em um container funcionando use o comando docker cp

# Importanto
docker cp local_file.txt <container_name>:/path
# Exportando
docker cp <container_name>:/path/to/file.txt /path/local