Day 2 Flashcards

1
Q

Quais os tipos de storage que podem ser montados no Docker ?

A

Bind - Um diretório já existente é montado como file system no container
Volume - São criados e gerenciados pelo Docker. A área onde os volumes são armazenados são isoladas do resto do host.
tmpfs - As informações são armazenadas em memória
named pipes - É utilizada para a comunicação entre o host e o container.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Quais os principais parâmetros devo passar para se montar um volume quando vamos rodar um container ?

A

type - Tipo de volume bind ou volume
source - Diretório origem no seu host
destination - Nome do file system que será criado
ro - Read Only

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Como faço para criar um container ubuntu que tenha acesso ao diretório /acme criado no meu host e que tenha o nome de /application/data no container ?

A

docker container run -it –mount type=bind,source=acme,destination=/application/data ubuntu

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Como faço para criar um volume de nome application ?

A

docker volume create application

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Onde são armazenados os dados do volumes no docker ?

A

/var/lib/docker/volumes/

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Qual comando posso utilizar para saber onde os dados do volume application estão armazenados no meu host ?

A

docker volume inspect application

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Qual comando posso utilizar para verificar quais volumes estão armazenados em um host ?

A

docker volume list

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Qual comando posso utilizar para deletar um volume de nome application ?

A

docker volume rm application

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Estou rodando um container que tem um volume montado de nome application. Criei um arquivo de nome faturamento.txt.
Onde no host está localizado esse arquivo ?

A

/var/lib/docker/volumes/application/_data

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Tentei rodar o comando:

docker volume rm application

Mas apareceu a seguinte mensagem:

Error response from daemon: remove application: volume is in use - [25f5cfab021c1ba3a9b3eefa8dacdc3e64c61f320d67008fc21769053e6dce8c, 5123f59a8eefc400cefb6c5795d34951b8554d1c4bfe8facc42225c3fbebc987]

Porque não consigo remove-lo ?

A

O volume application está vinculado aos containers 25f5cfab021c1ba3a9b3eefa8dacdc3e64c61f320d67008fc21769053e6dce8c e 5123f59a8eefc400cefb6c5795d34951b8554d1c4bfe8facc42225c3fbebc987 mesmo eles não estando rodando nesse momento.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Como faço para verificar quais volumes estão montados em um container ?

A

docker container inspect (id) ou (nome)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Como faço para deletar todos os containers que não estão rodando nesse momento ?

A

docker container prune

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Como faço para deletar todos os volumes que não estão em uso?

A

docker volume prune

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q
Rodei o comando docker volume prune.
Após isso rodei o comando:
docker volume list
DRIVER    VOLUME NAME
local     acme

Porque o volume acme não foi deletado ?

A

Porque o volume acme está vinculado a um container.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Rodei o comando docker container prune.
Após isso rodei o comando docker container list –all
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
754ec996412f ubuntu “/bin/bash” 20 hours ago Up 20 hours great_moser

Porque o container 754ec996412f não foi deletado?

A

Porque o container 754ec996412f está em uso no momento.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

O que é um data-only-container

A

É um container que é criado com um volume montado e que serve para outros containers utilizarem o volume. Nesse modo não é possível deletar o volume pois ele indicara que está em uso por um container.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

De um exemplo do comando para criar um data-only-container ?

A

docker container create –name dados –mount type=volume,source=acme,destination=/dados centos

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Qual o objetivo de um docker file ?

A

O objetivo de um docker file é servir de receita para criar imagens personalizadas.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

Qual o nome do arquivo responsável pela personalização de uma imagem?

A

Dockerfile

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

No DockerFile abaixo qual o significado de cada linha ?

MAINTAINER “Marco Ren”

FROM debian

RUN apt-get update && apt-get install -y apache2 && apt-get clean
ENV APACHE_LOCK_DIR=”/var/lock”
ENV APACHE_PID_FILE=”/var/run/apache2.pid”
ENV APACHE_RUN_USER=”www-data”
ENV APACHE_RUN_GROUP=”www-data”
ENV APACHE_LOG_DIR=”/var/log/apache2”

COPY index.html /var/www/html

ADD index.html /var/www/html

USER root

WORKDIR /var/www/html

LABEL description=”Webserver”

VOLUME /var/www/html
EXPOSE 80

ENTRYPOINT [“/usr/sbin/apachectl”]
CMD [“-D”,”FOREGROUND”]

A

MAINTAINER - Define um comentário de quem é o autor da imagem

FROM - Qual imagem será baseada para construir a nova imagem

RUN - Comandos que serão executados na hora da criação da nova imagem

ENV - Definição de variáveis que serão utilizadas na nova imagem

COPY - Copia o arquivo para o destino especificado dentro do container

ADD - Copia o arquivo para o destino especificado dentro do container.

USER - Especifica que o usuário root irá executar os comandos ENTRYPOINT, CMD e RUN

WORKDIR- Especifica qual o diretório onde serão executadas as instruções ENTRYPOINT, RUN E CMD.

LABEL - Criação de labels

VOLUME - Criação de volumes com nomes especificados

EXPOSE - Especifica em qual porta o docker estará escutando (LISTENING)

ENTRYPOINT - Designa qual o principal processo que irá rodar no container

CMD - Em conjunto com a entrada ENTRYPOINT define os parâmetros para a mesma.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

Qual comando utilizo para criar uma nova imagem a partir de um Dockerfile ?

A

docker image build -t (tag) (diretório)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

Qual comando posso utilizar para verificar quais imagens estão no meu host ?

A

docker image list

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

O que são imagens intermediárias ?

A

Cada entrada no arquivo Dockerfile ao ser executada pelo build gera uma imagem intermediária.

24
Q

Como faço para deletar uma imagem de nome debian?

A

docker image rm debian

25
Q

Ao tentar deletar a imagem meu_apache apareceu a seguinte mensagem:

Error response from daemon: conflict: unable to remove repository reference “meu_apache:1.1.1” (must force) - container e507d0ee939b is using its referenced image 0dfdb3e756c4

Porque ocorreu isso ?

A

A imagem em questão estava em uso e por conta disso não é possível deleta-la.

26
Q

Como faço para deletar todas as imagens que não estão em uso ?

A

docker image prune –all

27
Q

Como faço para fazer o build de uma imagem sem utilizar o cache ?

A

Use a opção –no-cache

28
Q

Qual entrada posso colocar no arquivo Dockerfile para copiar um arquivo e alterar o owner para www-data ?

A

ADD –chown=user:group arquivo.txt /data

COPY –chown=user:group arquivo.txt /data

29
Q

Quando em um docker file existe a entrada ENTRYPOINT qual a função da entrada CMD ?

A

Apenas passar argumentos para o comando principal do entrypoint. É obrigatório utilizar o modo exec.

30
Q

Quando não temos a entrada ENTRYPOINT no arquivo docker file qual a função da entrada CMD ?

A

A entrada CMD fica com função de comando principal que é executado pelo modo shell (bash).

31
Q

Qual a diferença principal entra as entradas COPY e ADD no docker file ?

A

A entrada COPY copia arquivos ou diretórios do host para dentro do container.
A entrada ADD além de copiar arquivos e diretórios para um container pode pegar um arquivo .tar e copiar somente o seu conteúdo para o diretório destino.
Copia arquivos de URLs definidas na entrada para o diretório destino.

32
Q

Como eu crio um docker file multi stage ?

A

O docker file multi stage tem duas entradas FROM.
A primeira tem as seguintes informações no fim AS (string).
A segunda entrada é normal, mas é necessário ter uma entrada referenciando o primeiro FROM conforme abaixo:

COPY –from=(string) origem destino

33
Q

Qual a principal função do muti stage na criação de imagens ?

A

A função principal do multi stage é criar imagens menores.

34
Q

Quero ignorar a copia de alguns arquivos na entrada COPY, como posso fazer ?

A

Inclua os arquivos que você quer ignorar em um arquivo com o nome de .dockerignore na mesma pasta onde se encontra o docker file.

35
Q

O que é SHELL FORM nas entradas CMD ou ENTRYPOINT?

A

O SHELL FORM é utilizado como se fosse uma linha de comando dentro do shell conforme abaixo:

comando param1 param2

36
Q

O que é EXEC FORM nas entradas CMD ou ENTRYPOINT ?

A

O EXEC FORM é dividido em parâmetros conforme abaixo:

[“comando”,”param1”,”param2”]

37
Q

A variável abaixo foi definida dentro de um docker file.

ENV app_home /home/app

Como posso referenciar essa variável dentro do docker file ?

A

${app_home}

38
Q

Qual a função da entrada ARG dentro de um docker file ?

A

A entrada ARG serve para se passar argumentos na hora de se criar imagens. Esses argumentos são passados na linha de comando docker build conforme abaixo:

docker build –build-arg ARGUMENTO=(valor) Dockerfile

39
Q

Qual o modo de substituir uma variável por um argumento dentro de um docker file ?
Qual comando devo utilizar para criar essa imagem ?

A

ARG variavel
ENV variavel=${variavel:-string}

docker image bulid –build-arg variavel=outrastring -t (tag) Dockerfile

40
Q

Como montar um health check dentro do docker file ?

A

HEALTHCHECK –interval=(#)m –timeout=(#)s CMD (comando de teste) || exit 1

41
Q

Como faço para criar uma imagem a partir de um container rodando ?

A

docker commit (id) ou (nome)

42
Q

Acabei de dar um commit em um container rodando, como faço para dar uma tag a ele ?

A

docker image tag (id) (tag:version)

43
Q

Como faço para me logar no Docker Hub ?

A

docker login

44
Q

O que são e como deleto dangling images ?

A

As imagens do Docker consistem em várias camadas. Imagens dangling são imagens de camadas intermediárias que não têm relação com nenhuma imagem. Eles não têm mais um propósito e consomem espaço em disco.

docker image prune

45
Q

Qual comando posso rodar para identificar imagens dangling ?

A

docker image list –filter dangling=true

46
Q

Ao rodar o comando docker image list

$ docker image list
REPOSITORY TAG IMAGE ID CREATED SIZE
webserver 1.0 6dbb9cc54074 3 days ago 5.61MB
nginx latest 62d49f9bab67 4 days ago 133MB

Como faço para subir a imagem webserver para meu repositório no Docker Hub (usuário projeto) ?

A

1 - Renomear o nome da imagem para refletir o nome do repositório

docker image tag (id) projeto/webvserver:1.0

2 - Após a imagem estar renomeada podemos rodar o push

docker push projeto/webserver:1.0

47
Q

Qual comando uso para baixar imagens do Docker Hub ?

A

docker pull username/imagem:version

48
Q

Como também é conhecido o repositório de imagens ?

A

Registry

49
Q

Como faço para criar um repositório de imagens privado ?

A

docker container run -d -p 5000:5000 –name registry registry

50
Q

Como faço para subir uma imagem para o meu repositório privado ?

A

1 - Renomear a imagem para de acordo com o repositório

docker image tag (id) URL:port/imagem:version

2- Fazer o push da imagem conforme nome renomeado

docker push URL:port/imagem:version

51
Q

Como faço para verificar as imagens armazenadas no repositório privado ?

A

curl -X GET URL:port/v2/_catalog

52
Q

Como faço para verificar as versões das imagens armazenadas no repositório privado ?

A

curl -X GET URL:port/v2/(imagem)/tags/list

53
Q

Como rodar um container nginx e publicar a porta 8080 ?

A

docker container run -d -p 8080:80 nginx

54
Q

Quais são as politicas de restart disponíveis para se rodar um container ?

A
  • no (default)
  • on-failure - Somente se o container sair com código de saída diferente de zero
  • unless-stopped - Reinicie o contêiner, a menos que ele seja explicitamente interrompido ou o próprio Docker seja interrompido ou reiniciado.
  • Always - Sempre reinicie o contêiner, independentemente do status de saída
55
Q

Quais as vantagens de se utilizar montagem de volumes ao invés de montagens bind ?

A
  • Volumes são mais fáceis de fazer backup ou migrar do que montagens de bind.
  • Você pode gerenciar volumes usando comandos Docker CLI ou a API Docker.
  • Os volumes funcionam em contêineres Linux e Windows.
  • Os volumes podem ser compartilhados com mais segurança entre vários contêineres.
  • Os drivers de volume permitem que você armazene volumes em hosts remotos ou provedores de nuvem, para criptografar o conteúdo dos volumes ou para adicionar outra funcionalidade.
  • Novos volumes podem ter seu conteúdo pré-preenchido por um contêiner.
  • Os volumes no Docker Desktop têm desempenho muito superior do que montagens vinculadas de hosts Mac e Windows.