Criando suas próprias imagens Docker

Introdução ao Docker

Tim Sangster

Software Engineer @ DataCamp

Criando imagens com Dockerfiles

Dockerfiles são criados para obter imagens Docker que, ao rodar, criam um contêiner.

Introdução ao Docker

Começando um Dockerfile

Um Dockerfile sempre começa de outra imagem, usando a instrução FROM.

FROM postgres
FROM ubuntu
FROM hello-world
FROM my-custom-data-pipeline
FROM postgres:15.0
FROM ubuntu:22.04
FROM hello-world:latest
FROM my-custom-data-pipeline:v1
Introdução ao Docker

Construindo um Dockerfile

Construir um Dockerfile cria uma imagem.

docker build /location/to/Dockerfile
docker build .
[+] Building 0.1s (5/5) FINISHED
 => [internal] load build definition from Dockerfile
 => => transferring dockerfile: 54B
...
 => CACHED [1/1] FROM docker.io/library/ubuntu
 => exporting to image
 => => exporting layers
 => => writing image sha256:a67f41b1d127160a7647b6709b3789b1e954710d96df39ccaa21..
Introdução ao Docker

Nomeando a imagem

Na prática, quase sempre damos um nome à imagem com a flag -t:

docker build -t first_image .
...
=> => writing image sha256:a67f41b1d127160a7647b6709b3789b1e954710d96df39ccaa21..
=> => naming to docker.io/library/first_image 
docker build -t first_image:v0 .
=> => writing image sha256:a67f41b1d127160a7647b6709b3789b1e954710d96df39ccaa21..
=> => naming to docker.io/library/first_image:v0
Introdução ao Docker

Personalizando imagens

RUN <valid-shell-command>
FROM ubuntu
RUN apt-get update
RUN apt-get install -y python3

Use a flag -y para evitar prompts:

...
After this operation, 22.8 MB of additional disk space will be used.
Do you want to continue? [Y/n]
Introdução ao Docker

Construindo um Dockerfile não trivial

Ao construir uma imagem, o Docker realmente executa comandos após RUN

O Docker rodando RUN apt-get update leva o mesmo tempo que a gente rodando!

root@host:/# apt-get update
Get:1 http://ports.ubuntu.com/ubuntu-ports jammy InRelease [270 kB]
...
Get:17 http://ports.ubuntu.com/ubuntu-ports jammy-security/restricted arm64 Pack..
Fetched 23.0 MB in 2s (12.3 MB/s)                          
Reading package lists... Done
Introdução ao Docker

Resumo

Uso Instrução do Dockerfile
Começar um Dockerfile a partir de uma imagem FROM <image-name>
Adicionar um comando de shell à imagem RUN <valid-shell-command>
Garantir que não peça entrada do usuário RUN apt-get install -y python3

Uso Comando de shell
Construir imagem a partir do Dockerfile docker build /location/to/Dockerfile
Construir imagem no diretório atual docker build .
Definir um nome ao construir docker build -t first_image .
Introdução ao Docker

Vamos praticar!

Introdução ao Docker

Preparing Video For Download...