back Docker cheat sheet

comp
publication: abril 24 2021 09:32
last update: abril 24 2021 09:32

instalação

Siga as instruções do guia de instalação do Docker.

O comando abaixo garantirá que a instalação foi bem sucedida:

# docker run hello-world

Hello from Docker!
This message shows that your installation appears to be working correctly.
...

Os comandos podem ser experimentados sem a necessidade de instalação no Katacoda.

cheat sheet

Procurando um container:

docker search NOME_DO_CONTAINER

Rodando um container no background:

docker run -d NOME_DO_CONTAINER
docker run -d --name NOME_PERSONALIZADO_DO_CONTAINER NOME_DO_CONTAINER

Listando containers em execução e finalizados:

docker ps     # apenas em execução
docker ps -a  # inclui os containers finalizados

Abrindo portas:

docker run -d -p 80:80 nginx        # porta 80 do host mapeada na porta 80 do container
docker run -d -p 192.168.1.1:80:80  # acesso ao container apenas pelo ip especificado
docker run -d -p 80 nginx           # porta aleatória do host mapeada na porta 80 do container
docker run -d -P nginx              # mapeia todas as portas expostas do container
docker port CONTAINER 80            # lista mapeamento da porta 80 do CONTAINER

Persistência de dados (volumes):

docker run -d -v DIR_DO_HOST:DIR_DO_CONTAINER CONTAINER
docker run -d -v DIR_DO_HOST:DIR_DO_CONTAINER:ro CONTAINER  # somente leitura
docker run -d -v $PWD:DIR_DO_CONTAINER CONTAINER            # aceita variáveis de ambiente

Executar um comando num container:

docker run -it CONTAINER COMANDO   # inicia o container e executa o comando
docker exec -it CONTAINER COMANDO  # executa o comando num container em execução
docker run -it ubuntu bash         # inicia o container ubuntu e executa o bash

Dockerfile

$ cat > index.html << EOF
<h1>Ola mundo!</h1>
EOF

$ cat > Dockerfile << EOF
FROM httpd:latest
COPY index.html /usr/local/apache2/htdocs/
EOF

$ docker build -t my-apache .
Sending build context to Docker daemon  24.58kB
Step 1/2 : FROM httpd:latest
latest: Pulling from library/httpd
d121f8d1c412: Pull complete 
9cd35c2006cf: Pull complete 
b6b9dec6e0f8: Pull complete 
fc3f9b55fcc2: Pull complete 
802357647f64: Pull complete 
Digest: sha256:5ce7c20e45b407607f30b8f8ba435671c2ff80440d12645527be670eb8ce1961
Status: Downloaded newer image for httpd:latest
 ---> 417af7dc28bc
Step 2/2 : COPY index.html /usr/local/apache2/htdocs/
 ---> 50720feb4c98
Successfully built 50720feb4c98
Successfully tagged my-apache:latest


$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED              SIZE
my-apache           latest              b33254ea14ad        About a minute ago   138MB
httpd               latest              417af7dc28bc        3 weeks ago          138MB
hello-world         latest              bf756fb1ae65        9 months ago         13.3kB

# testando
$ docker run -d -p 80:80 my-apache
0df9706783418349e9727131ce6b669a7b776fba36766f41b6baf3c8d98a549f
$ curl 127.0.0.1:80
<h1>Ola mundo!</h1>

Reaproveitando imagens (onbuild):

$ cat > Dockerfile << EOF
FROM httpd:latest
ONBUILD COPY index.html /usr/local/apache2/htdocs/
EOF
$ docker build -t my-apache:onbuild .

$ mkdir server1 server2

$ cat > server1/index.html << EOF
<h1>server 1</h1>
EOF
$ cat > server1/Dockerfile << EOF
FROM my-apache:onbuild
EXPOSE 80
EOF

$ cat > server2/index.html << EOF
<h1>server 2</h1>
EOF
$ cat > server2/Dockerfile << EOF
FROM my-apache:onbuild
EXPOSE 80
EOF

$ cd server1; docker build -t server1 .; cd -
$ cd server2; docker build -t server2 .; cd -

$ docker run -d -p 8081:80 server1
$ docker run -d -p 8082:80 server2

$ curl 127.0.0.1:8081
<h1>server 1</h1>
$ curl 127.0.0.1:8082
<h1>server 2</h1>

.dockerignore

Arquivos e diretórios listados no arquivo .dockerignore são ignorados durante a build da imagem.

(em construção...)

get in touch