A parte de hoje da série Docker, que estamos publicando, é dedicada às equipes do Docker.
A documentação do Docker contém uma descrição detalhada de muitos comandos, mas alguém que está começando a trabalhar com esta plataforma pode se perder neles, então aqui estão quase duas dúzias dos comandos mais importantes para trabalhar com o Docker. Continuando a tradição estabelecida, compararemos equipes com uma dispersão de bagas.
→
Parte 1: o básico→
Parte 2: termos e conceitos→
Parte 3: arquivos Dockerfile→
Parte 4: reduzindo o tamanho das imagens e acelerando sua montagem→
Parte 5: equipes→
Parte 6: trabalhando com dadosRevisão
Lembremos que as imagens do Docker são criadas com base nos arquivos do Dockerfile que descrevem tudo o que é necessário para criar imagens. Além disso, não devemos esquecer que o contêiner é uma imagem do Docker chamada à vida. Para usar efetivamente os comandos do Docker, primeiro você precisa descobrir - com o que está lidando - com a imagem ou com o contêiner. Se você pensar em imagens e contêineres, poderá ver que uma imagem do Docker pode existir ou não. O mesmo pode ser dito para os contêineres do Docker. Além disso, um contêiner do Docker existente pode estar em um estado operacional ou em um estado inativo.
Depois de descobrir com o que exatamente você precisa trabalhar, poderá encontrar a equipe certa.
Visão geral do comando do Docker
Aqui estão algumas coisas que as pessoas que desejam trabalhar com o Docker devem saber:
- Os comandos da interface da linha de comandos do Docker usados para controlar algo começam com a palavra-chave do
docker
seguida por um espaço; depois, há uma indicação do direcionamento de um determinado comando, outro espaço e, a seguir, o próprio comando. Por exemplo, é assim que esse comando é construído: docker container stop
. - Se o comando for direcionado para uma imagem ou contêiner específico, o nome ou identificador dessa imagem ou contêiner será usado nele.
Por exemplo, o
docker container run my_app
do
docker container run my_app
é um comando para criar e executar um contêiner chamado
my_app
. Nos exemplos abaixo, chamaremos
my_container
, images
my_image
, tags
my_tag
e assim por diante.
Primeiro, consideraremos a equipe em si, depois as bandeiras que podem ser usadas com ela, se essas bandeiras existirem. Se a bandeira tiver dois traços na frente, essa é sua forma completa. Uma bandeira com um traço é uma versão abreviada de uma determinada bandeira. Eles agem da mesma maneira. Por exemplo,
-p
é uma forma abreviada do sinalizador
--port
.
O objetivo deste artigo é fornecer uma visão geral dos comandos do Docker. Assim, você, tendo uma idéia geral deles e conhecendo os recursos da plataforma disponíveis graças a esses comandos, pode, se necessário, encontrar informações detalhadas sobre eles. As equipes em questão são testadas no sistema operacional da família Linux usando o mecanismo Docker versão 18.09.1 e API versão 1.39.
Uma observação sobre os comandos suportados pelo Docker CLI 1.13
A interface da linha de comandos do Docker versão 1.13 fornece comandos atualizados e agrupados logicamente. Ao mesmo tempo, equipes antigas ainda funcionam, mas é mais fácil usar novas, principalmente para iniciantes. É, por exemplo, que na versão 1.12 um comando do
docker create
formulários
docker create
e na versão 1.13 o
docker container create
comandos
docker container create
tornou-se disponível. Informações sobre como combinar equipes antigas e novas podem ser encontradas
aqui .
Primeiro, examinamos os comandos para gerenciar contêineres, depois discutimos o gerenciamento de imagens.
Comandos de gerenciamento de contêiner
O esquema de comando geral para gerenciar contêineres é o seguinte:
docker container my_command
Aqui estão os comandos que podem ser substituídos onde usamos
my_command
:
create
- cria um contêiner a partir de uma imagem.start
- inicia um contêiner existente.run
- crie um contêiner e inicie-o.ls
- lista de contêineres em execução.inspect
- exibe informações detalhadas sobre o contêiner.logs
- saída de log.stop
- para o contêiner em execução enviando o sinal SIGTERM
para o processo principal do contêiner e, após algum tempo, o SIGKILL
.kill
- interrompa o contêiner em execução e envie o sinal SIGKILL
para o processo principal do contêiner.rm
- exclua um contêiner parado.
Comandos de gerenciamento de imagem
Para gerenciamento de imagem, são utilizados comandos que se parecem com isso:
docker image my_command
Aqui estão algumas das equipes deste grupo:
build
- construa a imagem.push
- envia a imagem para o registro remoto.ls
- lista de imagens.history
- exibe informações sobre as camadas da imagem.inspect
- exibe informações detalhadas sobre a imagem, incluindo informações sobre as camadas.rm
- exclua a imagem.
Equipes diferentes
docker version
- docker version
informações da docker version
do cliente e do servidor do Docker.docker login
- entrada do registro do Docker.docker system prune
- exclua contêineres, redes e imagens não utilizados que não recebem um nome e uma tag.
Agora considere esses comandos com mais detalhes.
Contentores
▍ Início da existência do contêiner
No estágio inicial de trabalho com contêineres, os comandos
create
,
start
e
run
são usados. Eles são usados, respectivamente, para criar um contêiner, iniciá-lo e criá-lo e iniciá-lo.
Aqui está o comando para criar um contêiner a partir de uma imagem:
docker container create my_repo/my_image:my_tag
Nos exemplos a seguir, a construção
my_repo/my_image:my_tag
será reduzida para
my_image
.
O comando
create
aceita muitos
sinalizadores . Por exemplo, ele pode ser escrito no seguinte formato:
docker container create -a STDIN my_image
O sinalizador
-a
é uma forma abreviada do sinalizador
--attach
. Este sinalizador permite conectar o contêiner a
STDIN
,
STDOUT
ou
STDERR
.
Após a criação do contêiner, ele pode ser iniciado com o seguinte comando:
docker container start my_container
Observe que você pode consultar o contêiner no comando usando seu
ID
ou nome.
Agora dê uma olhada no comando que permite criar e executar o contêiner:
docker container run my_image
Este comando também é capaz de aceitar muitos
argumentos de linha de comando. Considere alguns deles com um exemplo dessa construção:
docker container run -i -t -p 1000:8000 --rm my_image
O sinalizador
-i
é a abreviação de
--interactive
. Graças a esse sinalizador, o fluxo
STDIN
é mantido aberto, mesmo que o contêiner não esteja conectado ao
STDIN
.
O sinalizador
-t
é abreviação de
--tty
. Graças a essa bandeira, é destacado um pseudo-terminal que conecta o terminal usado aos fluxos
STDIN
e
STDOUT
do contêiner.
Para poder interagir com o contêiner através do terminal, você precisa usar os sinalizadores
-i
e
-t
juntos.
O sinalizador
-p
é abreviação de
--port
. Uma porta é uma interface através da qual um contêiner interage com o mundo externo. O Design
1000:8000
redireciona a porta do Docker
8000
para a porta
1000
computador no qual o contêiner está em execução. Se um determinado aplicativo estiver em execução no contêiner que pode gerar algo para o navegador, para acessá-lo, no nosso caso, você pode acessar o navegador em
localhost:1000
.
O sinalizador
--rm
exclui automaticamente o contêiner após sua conclusão.
Vejamos mais alguns exemplos do comando
run
:
docker container run -it my_image my_command
Nesse projeto, o comando
sh
pode ser usado, o que criará uma sessão de terminal em um contêiner que pode ser interagido através do seu terminal. Ao trabalhar com imagens baseadas no Alpine, é melhor focar no uso de
sh
do que no
bash
, pois nessas imagens, por padrão, o
bash
do
bash
não
bash
instalado. Para sair da sessão interativa, use o
exit
.
Observe que aqui combinamos os sinalizadores
-i
e
-t
em
-it
.
Aqui está outro exemplo de trabalho com o comando
run
:
docker container run -d my_image
O sinalizador
-d
é abreviação de
--detach
. Este comando inicia o contêiner em segundo plano. Isso permite que você use o terminal a partir do qual o contêiner é iniciado para executar outros comandos enquanto o contêiner estiver em execução.
StatusConfirmando o status do contêiner
Se você estiver executando contêineres do Docker e quiser saber o que são esses contêineres, será necessário listá-los. Você pode fazer isso com o seguinte comando:
docker container ls
Este comando exibe uma lista de contêineres em execução e fornece a essa lista algumas informações úteis sobre eles. Aqui está outro exemplo deste comando:
docker container ls -a -s
A opção
-a
deste comando é abreviação de
--all
. Usando essa chave, você pode exibir informações sobre todos os contêineres, e não apenas sobre os que estão em execução.
A
-s
é uma abreviação de
--size
. Permite exibir as dimensões dos contêineres.
Aqui está um comando que exibe informações detalhadas sobre o contêiner:
docker container inspect my_container
Aqui está o comando que exibe os logs do contêiner:
docker container logs my_container
▍ Desligamento do contêiner
Às vezes, um contêiner de trabalho precisa ser parado. Para fazer isso, use o seguinte comando:
docker container stop my_container
Ele permite que você pare de executar contêineres, permitindo que eles sejam desligados corretamente. O contêiner tem, por padrão, 10 segundos para desligar.
Se o contêiner precisar ser parado rapidamente, sem se preocupar com a conclusão correta de seu trabalho, você poderá usar o seguinte comando:
docker container kill my_container
O comando
kill
, se você comparar o contêiner de trabalho com a TV ligada, será semelhante a desligar a TV desconectando-a da eletricidade. Portanto, na maioria das situações, é recomendável usar o comando stop para parar contêineres.
Aqui está um comando que permite parar rapidamente todos os contêineres em execução:
docker container kill $(docker ps -q)
Para excluir um contêiner parado, você pode usar o seguinte comando:
docker container rm my_container
Aqui está um comando que permite excluir todos os contêineres que não foram executados no momento da chamada deste comando:
docker container rm $(docker ps -a -q)
Para resumir esta seção. Primeiro, um contêiner é criado, depois é iniciado ou essas duas etapas são combinadas usando um comando da
docker run my_container
. Depois disso, o aplicativo em contêiner é iniciado.
Em seguida, o contêiner é parado com o
docker stop my_container
. Para remover o contêiner, use o
docker rm my_container
.
Agora vamos falar sobre os comandos usados para trabalhar com imagens, com os próprios modelos a partir dos quais os contêineres são criados.
As imagens
ReatCriar imagens
Aqui está um comando que permite coletar imagens do Docker:
docker image build -t my_repo/my_image:my_tag .
Nesse caso, uma imagem é criada com o nome
my_image
; durante sua montagem, o arquivo Dockerfile localizado no caminho ou URL especificado é usado.
O sinalizador
-t
é a abreviação de
--tag
. Ele informa ao Docker que a imagem a ser criada deve receber a tag fornecida no comando. Nesse caso, é
my_tag
.
O ponto no final do comando indica que a imagem deve ser coletada usando o arquivo Dockerfile localizado no diretório de trabalho atual.
Depois que a imagem é montada, ela pode ser enviada para o registro remoto. Graças a isso, outras pessoas poderão usá-lo, ele pode ser baixado e executado em outro computador. Suponha que você queira usar o
Docker Hub . Nesse caso, você precisará criar uma conta lá. O uso deste recurso é gratuito.
Depois de se inscrever no Docker Hub, é necessário fazer login. E embora o comando usado para isso não se aplique diretamente aos comandos destinados ao trabalho com imagens, será útil considerá-lo aqui. Este é o seguinte comando:
docker login
Ele permite que você efetue login na sua conta do Docker Hub. Para fazer login, você precisará digitar um nome de usuário e senha.
Após o login, você pode enviar imagens para o registro. É feito assim:
docker image push my_repo/my_image:my_tag
Agora que você possui vários tipos de imagens, pode explorá-las usando comandos especiais.
Research Pesquisa de imagem
Aqui está o comando que exibe uma lista de imagens, incluindo informações sobre seu tamanho:
docker image ls
O comando a seguir permite exibir informações sobre as imagens intermediárias que compõem a imagem, em particular dados sobre seus tamanhos e como elas foram criadas:
docker image history my_image
Aqui está o comando que exibe informações detalhadas sobre a imagem, incluindo dados sobre as camadas que compõem a imagem:
docker image inspect my_image
Se você criar tantas imagens, pode ser que algumas delas precisem ser excluídas.
ImagesExcluir imagens
Aqui está o comando que permite excluir a imagem especificada:
docker image rm my_image
Se a imagem estiver armazenada em um repositório remoto, ela não será excluída a partir daí.
Aqui está um comando que permite excluir todas as imagens locais:
docker image rm $(docker images -a -q)
Use este comando com cautela, mas observe que, quando usado, as imagens armazenadas no repositório remoto não serão excluídas. Este é um dos benefícios de armazenar imagens em repositórios.
Examinamos os comandos básicos usados para gerenciar contêineres e imagens. Agora vamos falar sobre mais algumas equipes.
Equipes diferentes
Aqui está o comando que exibe informações de versão para o cliente e servidor do Docker:
docker version
Este comando, já conhecido por você, é usado para entrar no registro do Docker:
docker login
Este comando permite excluir contêineres, redes e imagens
não utilizados que não recebem um nome e uma tag :
docker system prune
Aqui está um exemplo de seu uso:
docker system prune -a --volumes
A opção
-a
é uma abreviação de
--all
, permite excluir imagens não utilizadas, e não apenas aquelas que não recebem um nome e uma tag.
A
--volumes
permite excluir volumes não utilizados.
Sumário
Neste artigo, abordamos os comandos úteis do Docker. Se você está apenas começando a trabalhar com o Docker, preste atenção nos três comandos mais importantes a seguir:
Crie e execute um contêiner:
docker container run my_image
Criar imagem:
docker image build -t my_repo/my_image:my_tag .
Fazendo upload da imagem em um repositório remoto:
docker image push my_repo/my_image:my_tag
Para obter ajuda sobre os comandos do Docker, você pode executar o comando do
docker
no terminal.
Aqui você pode encontrar ajuda na interface da linha de comandos do Docker.
Da próxima vez, falaremos sobre como trabalhar com dados no Docker.
Caros leitores! Se você trabalha com o Docker, provavelmente possui sua própria lista de comandos usados com freqüência. Se sim, compartilhe esta lista.
