Docker

Como funciona o Dockerfile?

Como funciona o Dockerfile?
Você pode implantar apenas um único contêiner com a ajuda da imagem docker. No entanto, se você precisar implantar vários contêineres (cada um para tarefas diferentes) da mesma imagem, então o que acontece? Você pode resolver isso com a ajuda do dockerfile.

Dockerfile é um arquivo de texto simples que contém todos os comandos que o usuário pode chamar na linha de comando para montar ou construir uma imagem. Com a ajuda do docker build, você pode automatizar facilmente a compilação que executa vários comandos definidos no dockerfile em sucessão.

Por exemplo, você deseja baixar a imagem do docker do hub do docker para suas necessidades de desenvolvimento específicas. Então, você deseja atualizar a imagem, instalar alguns pacotes para o seu processo de desenvolvimento. Neste caso, você pode criar um dockerfile, incluir todos os parâmetros para suas necessidades específicas e construir sua imagem personalizada. Depois de criar um dockerfile, você pode usá-lo repetidamente para construir a mesma imagem sem instalar manualmente todos os pacotes necessários para o seu processo de desenvolvimento.

Dockerfile Basic

Antes de trabalhar com dockerfile, é importante saber como fazer um dockerfile. Dockerfile inclui palavras-chave específicas que podem ser usadas para construir uma imagem específica. Uma breve explicação de todas as palavras-chave usadas em um dockerfile estão listadas abaixo:

Criação do Dockerfile

Nesta seção, criaremos um dockerfile para construir uma imagem de servidor LAMP a partir da imagem base do Ubuntu.

Primeiro, você precisará criar um diretório para armazenar o dockerfile. Você pode criá-lo com o seguinte comando:

mkdir LAMP

Em seguida, crie um diretório chamado Dockerfile dentro do diretório:

nano LAMP / Dockerfile

Adicione as seguintes linhas:

DO ubuntu: mais recente
MANUTENÇÃO Hitesh Jethva
ENV DEBIAN_FRONTEND = não interativo
EXECUTE apt-get update -y && apt-get install apache2 mariadb-server
libapache2-mod-php php php-cli php-common php-mysql php-json php-curl -y
CMD ["apachectl", "- D", "FOREGROUND"]
EXPOSE 8080

Salve e feche o arquivo quando terminar.

Criação de imagem com Dockerfile

Depois de criar o Dockerfile, você pode criar facilmente uma imagem LAMP personalizada com a ajuda do Dockerfile.

Primeiro, altere o diretório para LAMP e execute o seguinte comando para criar a imagem desse arquivo:

cd LAMP
docker build -t "lamp: Dockerfile".

O comando acima começará a baixar a imagem mais recente do Ubuntu do Docker Hub e os pacotes necessários instalados especificados no Dockerfile. Depois que a imagem for criada com sucesso, você verá a seguinte saída:

Enviando contexto de compilação para Docker daemon 2.048kB
Etapa 1/6: DO ubuntu: mais recente
mais recente: puxando da biblioteca / ubuntu
54ee1f796a1e: Puxar completo
f7bfea53ad12: Extração completa
46d371e02073: Extração completa
b66c17bbf772: Extração completa
Resumo: sha256: 31dfb10d52ce76c5ca0aa19d10b3e6424b830729e32a89a7c6eee2cda2be67a5
Status: Download da imagem mais recente para o ubuntu: mais recente
---> 4e2eef94cd6b
Etapa 2/6: MANUTENÇÃO Hitesh Jethva
---> Executando em 047977af2c2a
Removendo o recipiente intermediário 047977af2c2a
---> 1331df625c4c
Etapa 3/6: ENV DEBIAN_FRONTEND = não interativo
---> Executando em 3597152c7a1b
Removendo o recipiente intermediário 3597152c7a1b
---> 86c82c95e75d
Etapa 4/6: EXECUTE apt-get update -y && apt-get install apache2 mariadb-server
libapache2-mod-php php php-cli php-common php-mysql php-json php-curl -y
Removendo o recipiente intermediário 322532299fd9
---> f6897a9554f7
Etapa 5/6: CMD ["apachectl", "- D", "FOREGROUND"]
---> Executando em 669635bc8bcb
Removendo o recipiente intermediário 669635bc8bcb
---> e8400eb2e677
Etapa 6/6: EXPOR 8080
---> Executando em 937ae2b2d305
Removendo o recipiente intermediário 937ae2b2d305
---> 2123a857361d
2123a857361d construído com sucesso
Lâmpada identificada com sucesso: Dockerfile

Agora você pode listar sua imagem recém-construída executando o seguinte comando:

imagens docker

Você deve ver a seguinte saída:

TAG DE REPOSITÓRIO ID DE IMAGEM TAMANHO CRIADO
lamp Dockerfile 2123a857361d 44 segundos atrás 520 MB
ubuntu mais recente 4e2eef94cd6b 8 dias atrás 73.9 MB

Agora, você tem uma imagem de servidor LAMP personalizada em suas mãos. Você também pode ver o histórico de cada comando com o seguinte comando:

lâmpada do histórico do docker: Dockerfile

Você deve ver a seguinte saída:

IMAGEM CRIADA POR COMENTÁRIO DE TAMANHO
2123a857361d 16 minutos atrás / bin / sh -c # (nop) EXPOSE 8080 0B
e8400eb2e677 16 minutos atrás / bin / sh -c # (nop) CMD ["apachectl" "-D" "FO… 0B
f6897a9554f7 16 minutos atrás / bin / sh -c apt-get update -y && apt-get inst… 446 MB
86c82c95e75d 17 minutos atrás / bin / sh -c # (nop) ENV DEBIAN_FRONTEND = nonin… 0B
1331df625c4c 17 minutos atrás / bin / sh -c # (nop) MANUTENÇÃO Hitesh Jethva 0B
4e2eef94cd6b 8 dias atrás / bin / sh -c # (nop) CMD ["/ bin / bash"] 0B

Criação de um contêiner a partir da imagem LAMP

Agora, você pode executar um contêiner a partir de sua imagem usando o seguinte comando:

docker run -dit lamp: Dockerfile

Depois que o contêiner for iniciado, você verá a seguinte saída:

0d2beb7dba01bb763768b116f734ae68286cee00d2ae923b2b7241c39ad54208

Você pode verificar o contêiner em execução usando o seguinte comando:

docker ps

Você deve obter a seguinte saída:

COMANDO DE IMAGEM DE ID DE CONTÊINER CRIADO NOMES DE PORTOS DE STATUS
c14794784eb2 lamp: Dockerfile "apachectl -D FOREGR…" 2 minutos atrás Acima 2 minutos 0.0.0.0: 8080-> 8080 / tcp quirky_ramanujan

Conclusão

Neste guia, você aprendeu o que é Dockerfile e como construir uma imagem docker com Dockerfile. Isso é muito útil para criar suas imagens personalizadas em vez de fazer alterações em uma imagem extraída.

SuperTuxKart para Linux
SuperTuxKart é um ótimo título projetado para trazer a você a experiência Mario Kart gratuitamente em seu sistema Linux. É bastante desafiador e diver...
Tutorial de Battle for Wesnoth
The Battle for Wesnoth é um dos jogos de estratégia de código aberto mais populares que você pode jogar no momento. Este jogo não está apenas em desen...
0 A.D. Tutorial
Dos muitos jogos de estratégia que existem, 0 A.D. consegue se destacar como um título abrangente e um jogo muito profundo e tático, apesar de ser de ...