Android

Comando de execução do Docker com exemplos

Docker Run Command

Docker Run Command

Índice:

Anonim

O Docker é uma plataforma que permite desenvolver, testar e implantar aplicativos como contêineres portáteis e auto-suficientes que são executados virtualmente em qualquer lugar.

O comando docker run cria um contêiner a partir de uma determinada imagem e inicia o contêiner usando um determinado comando. É um dos primeiros comandos com os quais você deve se familiarizar ao começar a trabalhar com o Docker., usaremos a imagem oficial do Nginx para mostrar várias maneiras de executar um contêiner do Docker.

Comando Executar Docker

O comando docker run assume o seguinte formato:

docker run IMAGE

O nome da imagem a partir da qual o contêiner deve ser criado é o único argumento necessário para o comando docker run . Se a imagem não estiver presente no sistema local, ela será retirada do registro.

Se nenhum comando for especificado, o comando especificado nas instruções CMD ou ENTRYPOINT será executado ao executar o contêiner.

A partir da versão 1.13, a CLI do Docker foi reestruturada e todos os comandos foram agrupados no objeto com o qual eles interagem.

Como o comando run interage com contêineres, agora é um subcomando do docker container do docker container . A sintaxe do novo comando é a seguinte:

docker container run IMAGE

A antiga sintaxe anterior à 1, 13 ainda é suportada. Sob o capô, o comando docker run é um alias para docker container run . Os usuários são incentivados a usar a nova sintaxe de comando.

Uma lista de todas as opções de docker container run pode ser encontrada na página de documentação do Docker.

Execute o contêiner em primeiro plano

Por padrão, quando nenhuma opção é fornecida ao comando docker run , o processo raiz é iniciado em primeiro plano. Isso significa que a entrada, saída e erro padrão do processo raiz estão anexados à sessão do terminal.

docker container run nginx

A saída do processo nginx será exibida no seu terminal. Como não há conexões com o servidor da web, o terminal está vazio.

Para parar o contêiner, encerre o processo Nginx em execução pressionando CTRL+C

Execute o contêiner no modo desanexado

Para manter o contêiner em execução ao sair da sessão do terminal, inicie-o em um modo desanexado. Isso é semelhante à execução de um processo Linux em segundo plano.

Use a opção -d para iniciar um contêiner desanexado:

docker container run -d nginx

050e72d8567a3ec1e66370350b0069ab5219614f9701f63fcf02e8c8689f04fa

O contêiner desanexado será interrompido quando o processo raiz for finalizado.

Você pode listar os contêineres em execução usando o comando docker container ls .

Para conectar seu terminal ao processo raiz do contêiner desanexado, use o comando docker container attach .

Remova o contêiner após a saída

Por padrão, quando o contêiner sai, seu sistema de arquivos persiste no sistema host.

As opções --rm informam ao comando docker run para remover o contêiner quando ele sai automaticamente:

docker container run --rm nginx

A imagem do Nginx pode não ser o melhor exemplo para limpar o sistema de arquivos do contêiner após a saída do contêiner. Essa opção geralmente é usada em contêineres em primeiro plano que executam tarefas de curto prazo, como testes ou backups de banco de dados.

Defina o nome do contêiner

No Docker, cada contêiner é identificado por seu UUID e nome. Por padrão, se não for definido explicitamente, o nome do contêiner será gerado automaticamente pelo daemon do Docker.

Use a opção --name para atribuir um nome personalizado ao contêiner:

docker container run -d --name my_nginx nginx

O nome do contêiner deve ser exclusivo. Se você tentar iniciar outro contêiner com o mesmo nome, receberá um erro semelhante a este:

docker: Error response from daemon: Conflict. The container name "/my_nginx" is already in use by container "9…c". You have to remove (or rename) that container to be able to reuse that name.

Execute o docker container ls -a para listar todos os containers e veja seus nomes:

docker container ls

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9d695c1f5ef4 nginx "nginx -g 'daemon of…" 36 seconds ago Up 35 seconds 80/tcp my_nginx

Os nomes significativos são úteis para referenciar o contêiner em uma rede Docker ou ao executar comandos da CLI do docker.

Publicando portas de contêiner

Por padrão, se nenhuma porta for publicada, o processo em execução no contêiner estará acessível apenas de dentro do contêiner.

Portas de publicação significa mapear portas de contêiner para as portas da máquina host, para que elas estejam disponíveis para serviços fora do Docker.

Para publicar uma porta, use as opções -p seguinte maneira:

-p host_ip:host_port:container_port/protocol

  • Se nenhum host_ip for especificado, o padrão será 0.0.0.0 . Se nenhum protocol for especificado, o padrão será TCP.Para publicar várias portas, use várias opções -p .

Para mapear a porta TCP 80 (nginx) no contêiner para a porta 8080 na interface host local host, execute:

docker container run --name web_server -d -p 8080:80 nginx

Você pode verificar se a porta foi publicada abrindo http://localhost:8080 no navegador ou executando o seguinte comando curl no host do Docker:

curl -I

A saída será mais ou menos assim:

HTTP/1.1 200 OK Server: nginx/1.17.6 Date: Tue, 26 Nov 2019 22:55:59 GMT Content-Type: text/html Content-Length: 612 Last-Modified: Tue, 19 Nov 2019 12:50:08 GMT Connection: keep-alive ETag: "5dd3e500-264" Accept-Ranges: bytes

Compartilhando dados (montando volumes)

Quando um contêiner é parado, todos os dados gerados pelo contêiner são removidos. Os volumes do Docker são a maneira preferida de manter os dados persistentes e compartilhá-los em vários contêineres.

Para criar e gerenciar volumes, use as opções -p seguinte maneira:

-v host_src:container_dest:options

  • O host_src pode ser um caminho absoluto para um arquivo ou diretório no host ou um volume nomeado.O container_dest é um caminho absoluto para um arquivo ou diretório no container.Options pode ser rw (leitura-gravação) e ro (somente leitura)) Se nenhuma opção for especificada, o padrão será rw .

Para explicar como isso funciona, vamos criar um diretório no host e colocar um arquivo index.html nele:

mkdir public_html echo "Testing Docker Volumes" > public_html/index.html

Em seguida, monte o diretório public_html em /usr/share/nginx/html no contêiner:

docker run --name web_server -d -p 8080:80 -v $(pwd)/public_html:/usr/share/nginx/html nginx

Em vez de especificar o caminho absoluto para o diretório public_html , estamos usando o comando $(pwd) , que imprime o diretório de trabalho atual.

Agora, se você digitar http://localhost:8080 no seu navegador, deverá ver o conteúdo do arquivo index.html . Você também pode usar curl :

curl

Testing Docker Volumes

Execute o contêiner interativamente

Ao lidar com processos interativos como bash , use as opções -i e -t para iniciar o contêiner.

As opções -it dizem ao Docker para manter a entrada padrão conectada ao terminal e alocar um pseudo-tty:

docker container run -it nginx /bin/bash

O shell Bash do contêiner será anexado ao terminal e o prompt de comando mudará:

root@1da70f1937f5:/#

Agora, você pode interagir com o shell do contêiner e executar qualquer comando dentro dele.

Neste exemplo, fornecemos um comando ( /bin/bash ) como argumento para o comando docker run que foi executado em vez do especificado no arquivo Dockerfile.

Conclusão

O Docker é o padrão para empacotar e implantar aplicativos e um componente essencial de CI / CD, automação e DevOps.

O comando docker container run é usado para criar e executar contêineres do Docker.

estivador