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
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 imagem em questão estava em uso e por conta disso não é possível deleta-la.
26
Como faço para deletar todas as imagens que não estão em uso ?
docker image prune --all
27
Como faço para fazer o build de uma imagem sem utilizar o cache ?
Use a opção --no-cache
28
Qual entrada posso colocar no arquivo Dockerfile para copiar um arquivo e alterar o owner para www-data ?
ADD --chown=user:group arquivo.txt /data COPY --chown=user:group arquivo.txt /data
29
Quando em um docker file existe a entrada ENTRYPOINT qual a função da entrada CMD ?
Apenas passar argumentos para o comando principal do entrypoint. É obrigatório utilizar o modo exec.
30
Quando não temos a entrada ENTRYPOINT no arquivo docker file qual a função da entrada CMD ?
A entrada CMD fica com função de comando principal que é executado pelo modo shell (bash).
31
Qual a diferença principal entra as entradas COPY e ADD no docker file ?
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
Como eu crio um docker file multi stage ?
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
Qual a principal função do muti stage na criação de imagens ?
A função principal do multi stage é criar imagens menores.
34
Quero ignorar a copia de alguns arquivos na entrada COPY, como posso fazer ?
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
O que é SHELL FORM nas entradas CMD ou ENTRYPOINT?
O SHELL FORM é utilizado como se fosse uma linha de comando dentro do shell conforme abaixo: comando param1 param2
36
O que é EXEC FORM nas entradas CMD ou ENTRYPOINT ?
O EXEC FORM é dividido em parâmetros conforme abaixo: ["comando","param1","param2"]
37
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 ?
${app_home}
38
Qual a função da entrada ARG dentro de um docker file ?
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
Qual o modo de substituir uma variável por um argumento dentro de um docker file ? Qual comando devo utilizar para criar essa imagem ?
ARG variavel ENV variavel=${variavel:-string} docker image bulid --build-arg variavel=outrastring -t (tag) Dockerfile
40
Como montar um health check dentro do docker file ?
HEALTHCHECK --interval=(#)m --timeout=(#)s CMD (comando de teste) || exit 1
41
Como faço para criar uma imagem a partir de um container rodando ?
docker commit (id) ou (nome)
42
Acabei de dar um commit em um container rodando, como faço para dar uma tag a ele ?
docker image tag (id) (tag:version)
43
Como faço para me logar no Docker Hub ?
docker login
44
O que são e como deleto dangling images ?
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
Qual comando posso rodar para identificar imagens dangling ?
docker image list --filter dangling=true
46
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) ?
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
Qual comando uso para baixar imagens do Docker Hub ?
docker pull username/imagem:version
48
Como também é conhecido o repositório de imagens ?
Registry
49
Como faço para criar um repositório de imagens privado ?
docker container run -d -p 5000:5000 --name registry registry
50
Como faço para subir uma imagem para o meu repositório privado ?
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
Como faço para verificar as imagens armazenadas no repositório privado ?
curl -X GET URL:port/v2/_catalog
52
Como faço para verificar as versões das imagens armazenadas no repositório privado ?
curl -X GET URL:port/v2/(imagem)/tags/list
53
Como rodar um container nginx e publicar a porta 8080 ?
docker container run -d -p 8080:80 nginx
54
Quais são as politicas de restart disponíveis para se rodar um container ?
- 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
Quais as vantagens de se utilizar montagem de volumes ao invés de montagens bind ?
- 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.