![Como alterar o DNS padrão para o DNS do Google para uma Internet mais rápida](/f/96eb99c0ce4a21abdc670cb2a616dccb.jpg?width=100&height=100)
Este tutorial se concentrará em como construir uma imagem Docker personalizada com base em Ubuntu com Apache serviço instalado. Todo o processo será automatizado usando um Dockerfile.
As imagens do Docker podem ser construídas automaticamente a partir de arquivos de texto, nomeados Dockerfiles. Um arquivo Docker contém instruções ou comandos ordenados passo a passo usados para criar e configurar uma imagem Docker.
Basicamente, um arquivo Docker contém várias instruções para construir e configurar um contêiner específico com base em seus requisitos. As seguintes instruções são as mais utilizadas, sendo algumas delas obrigatórias:
A PARTIR DE
= Obrigatório como a primeira instrução em um arquivo Docker. Instrui o Docker a extrair a imagem base da qual você está construindo a nova imagem. Use uma tag para especificar a imagem exata a partir da qual você está construindo:Ex: DO ubuntu: 20.04.
MANUTENÇÃO
= Autor da imagem de construçãoCORRE
= Esta instrução pode ser usada em várias linhas e executa qualquer comando após a criação de uma imagem Docker.CMD
= Execute qualquer comando quando a imagem Docker for iniciada. Use apenas uma instrução CMD em um Dockerfile.PONTO DE ENTRADA
= O mesmo que CMD, mas usado como o comando principal para a imagem.EXPOR
= Instrui o contêiner a escutar nas portas de rede durante a execução. As portas do contêiner não podem ser acessadas do host por padrão.ENV
= Definir variáveis de ambiente do contêiner.ADICIONAR
= Copiar recursos (arquivos, diretórios ou arquivos de URLs).1. Primeiro, vamos criar algum tipo de Dockerfile repositórios para reutilizar arquivos no futuro para criar outras imagens. Faça um diretório vazio em algum lugar em /var
partição onde criaremos o arquivo com as instruções que serão usadas para construir a nova imagem do Docker.
# mkdir -p / var / docker / ubuntu / apache. # touch / var / docker / ubuntu / apache / Dockerfile.
2. Em seguida, comece a editar o arquivo com as seguintes instruções:
# vi / var / docker / ubuntu / apache / Dockerfile.
Trecho do Dokerfile:
DO Ubuntu. MANTENHA seu_nome <[email protegido]> RUN apt-get -y install apache2. RUN echo “Olá servidor Apache no Ubuntu Docker”> /var/www/html/index.html. EXPOSE 80. CMD / usr / sbin / apache2ctl -D ANTES.
Agora, vamos examinar as instruções do arquivo:
A primeira linha nos diz que estamos construindo a partir de um Ubuntu imagem. Se nenhuma tag for enviada, diga 14:10 por exemplo, a imagem mais recente de Docker Hub é usado.
Na segunda linha, adicionamos o nome e o email do criador da imagem. Próximos dois CORRE linhas serão executadas no contêiner ao construir a imagem e irão instalar Apache daemon e eco algum texto na página da web padrão do apache.
O EXPOR a linha instruirá o Docker contêiner para escutar na porta 80, mas a porta não estará disponível para fora. A última linha instrui o contêiner a executar o serviço Apache em primeiro plano após o contêiner ser iniciado.
3. A última coisa que precisamos fazer é começar a criar a imagem emitindo o comando abaixo, que criará localmente uma nova imagem do Docker chamada ubuntu-apache
com base no Dockerfile criado anteriormente, conforme mostrado neste exemplo:
# docker build -t ubuntu-apache / var / docker / ubuntu / apache /
4. Depois que a imagem foi criada por Docker, você pode listar todas as imagens disponíveis e identificar sua imagem emitindo o seguinte comando:
# imagens do docker.
5. Para executar o contêiner continuamente (em segundo plano) e acessar os serviços expostos do contêiner (portas) do host ou outra máquina remota em sua LAN, execute o comando abaixo em seu terminal host incitar:
# docker run -d -p 81:80 ubuntu-apache.
Aqui o -d
opção executa o ubuntu-apache
recipiente em segundo plano (como um daemon) e o -p
opção mapeia o porto de contêineres 80 para a porta do seu host local 81. O acesso LAN externo ao serviço Apache pode ser alcançado através da porta 81 só.
Comando Netstat lhe dará uma ideia sobre quais portas o host está escutando.
Depois que o contêiner for iniciado, você também pode executar docker ps
comando para visualizar o status do contêiner em execução.
6. A página da web pode ser exibida em seu host a partir da linha de comando usando ondulação utilitário em relação ao endereço IP da máquina, localhost ou interface docker net na porta 81. Usar Comando IP linha para mostrar os endereços IP da interface de rede.
# ip addr [Listar interfaces de rede] # curl ip-address: 81 [System Docker IP Address] # curl localhost: 81 [Localhost]
7. Para visitar a página da web do contêiner de sua rede, abra um navegador em um local remoto e use o protocolo HTTP, o endereço IP da máquina onde o contêiner está sendo executado, seguido pela porta 81 conforme ilustrado abaixo imagem.
http://ip-address: 81.
8. Para ter uma ideia de quais processos estão sendo executados dentro do contêiner, emita o seguinte comando:
# docker ps. # docker top
9. Para parar o problema do contêiner parada do dock
comando seguido do nome ou ID do contêiner.
# docker stop# docker ps.
10. Caso você queira atribuir um nome descritivo para o contêiner, use o --nome
opção conforme mostrado no exemplo abaixo:
# docker execute --name my-www -d -p 81:80 ubuntu-apache. # docker ps.
Agora você pode referenciar o contêiner para manipulação (iniciar, parar, topo, estatísticas, etc) apenas usando o nome atribuído.
# docker stats my-www.
11. Em CentOS / RHEL você pode criar um systemd arquivo de configuração e gerencie o contêiner como faria normalmente para qualquer outro serviço local.
Por exemplo, crie um novo arquivo systemd chamado, digamos, apache-docker.service
usando o seguinte comando:
# vi /etc/systemd/system/apache-docker.service.
apache-docker.service trecho do arquivo:
[Unidade] Descrição = contêiner apache. Requer = docker.service. Depois de = docker.service [Serviço] Reiniciar = sempre. ExecStart = / usr / bin / docker start -a my-www. ExecStop = / usr / bin / docker stop -t 2 my-www [Instalar] WantedBy = local.target.
12. Depois de terminar de editar o arquivo, feche-o, recarregue o daemon systemd para refletir as alterações e inicie o contêiner emitindo os seguintes comandos:
# systemctl daemon-reload. # systemctl start apache-docker.service. # systemctl status apache-docker.service.
Este foi apenas um exemplo simples do que você pode fazer com um simples Dockerfile mas você pode pré-construir alguns aplicativos bastante sofisticados que podem ser iniciados em questão de segundos com o mínimo de recursos e esforço.
Leitura adicional: