Oito comandos básicos de gerenciamento de contêiner do Docker

Oito comandos básicos de gerenciamento de contêiner do Docker

Big data de memória anterior Big data de memória anterior

Original em inglês deste artigo: https://kerneltalks.com/virtualization/8-basic-docker-container-management-commands/
Tradução em chinês: https://www.iteblog.com/archives/2382.html (clique abaixo para leia o Accessible original)
Neste artigo, apresentarei oito comandos básicos de contêiner do Docker, que são úteis para realizar operações básicas em contêineres do Docker, como executar, listar, parar, visualizar logs, excluir e assim por diante. Se você não está familiarizado com o conceito de Docker, recomendo que verifique a introdução relevante na Internet, este artigo não irá apresentá-lo em detalhes. Agora, rapidamente inserimos o comando para entender:

Como executar contêineres Docker?

Como todos sabemos, um contêiner do Docker é apenas um aplicativo em execução no sistema operacional host, portanto, para um Docker, você precisa de uma imagem para executá-lo. Quando uma imagem Docker é executada em um processo, nós a chamamos de contêiner Docker. Você pode obter a imagem do Docker localmente ou baixá-la do Docker Hub. Docker Hub é um repositório centralizado para armazenar imagens públicas e privadas. O Docker Hub oficial está localizado em hub.docker.com. Quando você usa o mecanismo Docker para executar um contêiner, ele primeiro procura a imagem local e, se não for encontrada localmente, puxará a imagem relevante do Docker Hub.

Vamos executar uma imagem Docker do servidor da web Apache (como o processo httpd). Você precisa usar o comando docker container run. O comando antigo é docker run, mas como o Docker posteriormente adicionou uma parte de subcomando, a nova versão suporta os seguintes comandos:


root@kerneltalks # docker container run -d -p 80:80 httpd
Unable to find image 'httpd:latest' locally
latest: Pulling from library/httpd
3d77ce4481b1: Pull complete
73674f4d9403: Pull complete
d266646f40bd: Pull complete
ce7b0dda0c9f: Pull complete
01729050d692: Pull complete
014246127c67: Pull complete
7cd2e04cf570: Pull complete
Digest: sha256:f4610c3a1a7da35072870625733fd0384515f7e912c6223d4a48c6eb749a8617
Status: Downloaded newer image for httpd:latest
c46f2e9e4690f5c28ee7ad508559ceee0160ac3e2b1688a61561ce9f7d99d682

O nome da imagem no comando de execução do Docker deve ser inserido, e os colegas também oferecem suporte a muitos parâmetros opcionais. Os parâmetros comumente usados ​​são:

  • -d: desanexa o contêiner do shell atual
  • -p X: Y: Liga a porta Y do contêiner com a porta X do host
  • --name: Dê um nome ao seu contêiner. Se não for definido, será definido com um nome gerado aleatoriamente
  • -e: passa as variáveis ​​de ambiente e seus valores ao iniciar o contêiner.
    Como você pode ver na saída acima, usamos httpd como o nome da imagem para executar o contêiner. Como essa imagem não foi encontrada localmente, o mecanismo Docker a extraiu do Docker Hub. Observe que o mecanismo Docker baixou a imagem httpd: mais recente, onde: é seguido pelo número da versão, que é a convenção de nomenclatura para imagens de contêiner do Docker. Se você deseja executar uma versão específica do contêiner, pode indicar o número da versão relevante após o nome da imagem. Se o número da versão não for fornecido, o mecanismo Docker sempre puxará a versão mais recente.

A última linha de saída mostra o ID do contêiner exclusivo do contêiner httpd recém-executado.

Como listar todos os contêineres do Docker em execução?

Agora que seu contêiner está em execução, pode ser necessário verificá-lo ou listar todos os contêineres em execução na máquina. Você pode usar o comando docker container ls para atingir esse objetivo. Na versão antiga do Docker, você precisa usar o comando docker ps para conseguir.

root@kerneltalks # docker container ls
CONTAINER ID        IMAGE               COMMAND              CREATED             STATUS              PORTS                NAMES
c46f2e9e4690        httpd               "httpd-foreground"   11 minutes ago      Up 11 minutes       0.0.0.0:80->80/tcp   cranky_cori

Os resultados são exibidos em colunas e o significado do valor de cada coluna é o seguinte:

  • ID do contêiner: as primeiras 12 letras do ID exclusivo do contêiner
  • Imagem: o nome da imagem que executa o contêiner
  • Comando: o comando a ser executado após o contêiner ser iniciado
  • Criado: hora de criação
  • Status: o status atual do contêiner
  • Portas: informações detalhadas vinculadas à porta do host
  • Nomes: o nome do contêiner (porque não especificamos um nome quando o iniciamos, então aqui está um nome gerado aleatoriamente)

    Como visualizar o log de execução de um contêiner Docker?

Como usamos o parâmetro -d na primeira etapa para separar o contêiner do shell atual, ele será executado em segundo plano. Nesse caso, não sabemos o que aconteceu dentro do contêiner, portanto, precisamos verificar o log de execução do contêiner. O Docker nos fornece o comando logs, que usa o nome ou ID do contêiner como parâmetro.

root@kerneltalks # docker container logs cranky_cori
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message
AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message
[Thu May 31 18:35:07.301158 2018] [mpm_event:notice] [pid 1:tid 139734285989760] AH00489: Apache/2.4.33 (Unix) configured -- resuming normal operations
[Thu May 31 18:35:07.305153 2018] [core:notice] [pid 1:tid 139734285989760] AH00094: Command line: 'httpd -D FOREGROUND'

Aqui, usei o nome do container como parâmetro no comando. Você pode visualizar os logs relacionados ao Apache no contêiner httpd.

Como identificar o processo de um container Docker?

Um contêiner é um processo que usa recursos do host para ser executado. Se isso for verdade, você pode localizar o processo do contêiner na tabela de processos no host. Vamos ver como verificar o processo do contêiner no host.

O Docker usa o famoso comando top como o nome de seus subcomandos para visualizar os processos gerados pelo contêiner. Ele usa o nome ou ID do contêiner como parâmetro. Em versões mais antigas do Docker, apenas o comando docker top pode ser usado. No entanto, na nova versão, podemos usar os comandos docker top e docker container top.

root@kerneltalks # docker container top  cranky_cori
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                15702               15690               0                   18:35               ?                   00:00:00            httpd -DFOREGROUND
bin                 15729               15702               0                   18:35               ?                   00:00:00            httpd -DFOREGROUND
bin                 15730               15702               0                   18:35               ?                   00:00:00            httpd -DFOREGROUND
bin                 15731               15702               0                   18:35               ?                   00:00:00            httpd -DFOREGROUND
root@kerneltalks # ps -ef |grep -i 15702
root     15702 15690  0 18:35 ?        00:00:00 httpd -DFOREGROUND
bin      15729 15702  0 18:35 ?        00:00:00 httpd -DFOREGROUND
bin      15730 15702  0 18:35 ?        00:00:00 httpd -DFOREGROUND
bin      15731 15702  0 18:35 ?        00:00:00 httpd -DFOREGROUND
root     15993 15957  0 18:59 pts/0    00:00:00 grep --color=auto -i 15702

A primeira saída lista a lista de processos gerada pelo contêiner. Ele contém todas as informações, incluindo uid, pid, ppid, hora de início, comando de início, etc. Você pode pesquisar todos os números de processo mostrados aqui na tabela de processos do host. Isso é o que fizemos no segundo comando. Portanto, isso prova que o contêiner é, na verdade, apenas um processo no host host.

Como parar o contêiner do Docker?

Por favor, use o comando de parada! Da mesma forma, ele usa o nome ou ID do contêiner como parâmetro.


root@kerneltalks # docker container stop cranky_cori
cranky_cori

Como listar contêineres Docker parados ou não em execução?

Agora que interrompemos nosso contêiner, se tentarmos listar o contêiner usando o comando ls, não poderemos vê-lo dentro.


root@kerneltalks # docker container ls
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

Portanto, neste caso, se você deseja visualizar contêineres interrompidos ou não em execução, é necessário usar o parâmetro -a no comando ls ao mesmo tempo, da seguinte maneira:


root@kerneltalks # docker container ls -a
CONTAINER ID        IMAGE               COMMAND              CREATED             STATUS                     PORTS               NAMES
c46f2e9e4690        httpd               "httpd-foreground"   33 minutes ago      Exited (0) 2 minutes ago                       cranky_cori

Depois de usar o parâmetro -a, podemos visualizar os contêineres parados. Observe que o status deste contêiner está marcado como "Saído". Como o contêiner é apenas um processo, é mais apropriado usar saído do que parar.

Como iniciar um contêiner Docker?

Agora vamos iniciar o contêiner interrompido, que ainda é diferente de executar o contêiner. Ao executar o contêiner, você executará comandos em um novo contêiner. Ao iniciar um contêiner, você está iniciando um antigo contêiner interrompido que salvou o antigo estado. Ele retomará a operação no estado em que estava quando parou.


root@kerneltalks #  docker container start c46f2e9e4690
c46f2e9e4690
root@kerneltalks # docker container ls -a
CONTAINER ID        IMAGE               COMMAND              CREATED             STATUS              PORTS                NAMES
c46f2e9e4690        httpd               "httpd-foreground"   35 minutes ago      Up 8 seconds        0.0.0.0:80->80/tcp   cranky_cori

Como remover o contêiner do Docker?

Se precisarmos remover o contêiner do mecanismo Docker, podemos usar o comando rm. No entanto, você não pode remover um contêiner em execução. Você precisa parar o recipiente antes de removê-lo. No entanto, você também pode usar o comando rm com o parâmetro -f para forçar a remoção do contêiner, mas isso não é recomendado.


root@kerneltalks # docker container rm cranky_cori
cranky_cori
root@kerneltalks # docker container ls -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

Depois que o contêiner é removido, não podemos mais usar o comando ls -a para visualizar o contêiner.

Acho que você gosta

Origin blog.51cto.com/15127589/2679552
Recomendado
Clasificación