Se non conosci Docker e i container, la configurazione di Apache Docker Container è un ottimo modo per iniziare. La creazione di un'applicazione su Docker è un enorme vantaggio grazie alla sua tecnologia leggera e alla sicurezza.
In questo tutorial imparerai come configurare un Apache Docker Container su Ubuntu. Usa questo tutorial per imparare a iniziare con Docker e ottenere anche un server web Apache!
Prerequisiti
Se desideri seguire passo dopo passo, assicurati di avere la macchina seguente e Ubuntu 14.04.4 LTS o successiva con Docker installato in questo tutorial. Questo tutorial utilizza Ubuntu 18.04.5 LTS con Docker v19.03.8 e un indirizzo IP pubblico di 13.213.48.113.
Configurazione dell'Apache Docker Container
Supponendo che tu abbia già installato Docker, configuriamo prima il container Apache. In seguito imparerai come avviarlo.
Uno dei modi più semplici per visualizzare rapidamente un container Apache Docker è scaricare un'immagine del container esistente dall'hub Docker del registro Docker ufficiale. Per questo esempio, scaricherai ed eseguirai un container Docker chiamato Apache.
Con pochi comandi Docker, eseguirai un'istanza di Apache in pochissimo tempo. Per farlo, segui i passaggi seguenti.
Nota:questo tutorial non tratta in modo approfondito l'esecuzione dei comandi Docker. Per ulteriori informazioni sui comandi Docker, visita la pagina della documentazione della riga di comando di Docker.
1. Apri un terminale sulla tua macchina Ubuntu.
2. Scarica l'immagine Docker, che contiene Apache chiamato httpd
, eseguendo il docker pull
comando qui sotto. Questo comando scaricherà o estrarrà l'immagine Apache dal registro Docker, come mostrato di seguito.
# Pulls the Docker Images from docker registry to your local machine.
docker pull httpd
Lo screenshot seguente mostra il risultato atteso quando si estrae l'immagine da Docker Hub.
3. Successivamente, conferma di aver scaricato l'immagine eseguendo docker images
comando qui sotto per elencare tutte le immagini disponibili sul tuo computer.
# To check the docker images
docker images
Come puoi vedere di seguito, ora hai un'immagine Docker, che è l'immagine che hai scaricato da Docker Hub.
Eseguire Apache Container utilizzando Docker Command.
Nella sezione precedente, hai scaricato l'immagine Docker dall'hub Docker. Ora sei pronto per creare un contenitore da quell'immagine. Per eseguire il container Apache, dovrai eseguire il comando Docker come segue:
1. Richiamare docker run
comando per creare un nuovo contenitore basato sull'immagine Docker di Apache scaricata.
# Run a new docker container called docker-apache (--name)
# Map the local computer's port 80 to the container's port 80 (-p 80:80)
# In detached mode (-d)
# Using the Apache image
docker run -d --name docker-apache -p 80:80 -d httpd
La docker run
il comando restituisce quindi l'ID contenitore univoco del contenitore appena creato. Salva questo ID contenitore nella casella evidenziata di seguito in futuro se desideri eliminare o rimuovere il contenitore.
2. Una volta che il container Apache è in esecuzione, verifica se puoi accedere all'interfaccia web di Apache navigando su Public-Ip-address:80 utilizzando il tuo browser web. Se riesci a visualizzare lo stesso messaggio, come puoi vedere di seguito, hai avviato correttamente il tuo container Apache Docker.
Assicurati che Ubuntu 14.04.4 LTS Machine abbia una porta in entrata Port 80 consentita nel gruppo di sicurezza.
3. Infine, arresta il contenitore se non è più necessario eseguirlo eseguendo docker stop
comando qui sotto. Questo comando arresterà senza problemi l'istanza del contenitore.
# Stop the container with ID aaaee64a4512 Make sure to change the container ID value to yours.
# Note: specifying the first 12 characters of the container ID is enough.
docker stop aaaee64a4512
In alternativa, puoi anche fermare un container in esecuzione specificandone il nome nella
docker stop
comando (docker stop docker-apache
).
Esecuzione di Apache Docker Container dal file Docker
Nella sezione precedente, hai appreso come avviare un container Apache Docker eseguendo l'immagine Docker httpd predefinita. Cosa succede se devi aggiornare l'immagine di base per visualizzare contenuti diversi o esporli su una porta diversa?
La distribuzione di un contenitore utilizzando il file Docker ti consente di rimuovere il passaggio di creazione manuale dell'immagine quando stai testando la stessa configurazione su un sistema operativo diverso. L'approccio ai file Docker è uno script automatizzato di immagini Docker.
Creiamo un file Docker ed eseguiamo un container da esso.
1. Crea una cartella denominata ~/apache-server-docker-demo, quindi cambia (cd
) la directory di lavoro in quella cartella.
mkdir ~/apache-server-docker-demo
cd ~/apache-server-docker-demo
2. Crea un altro file, copia/incolla la configurazione seguente e salva il file come index.html all'interno della ~/apache-server-docker-demo directory. L'indice.html file è una pagina HTML che visualizzerà Questo tutorial insegnerà come eseguire il container Apache nella finestra mobile una volta avviato il contenitore che vedrai più avanti nel corso.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>This tutorial will teach how to Run Apache container in docker .</title>
</head>
<body>
<h1>This tutorial will teach how to Run Apache container in docker , lets GO!</h1>
</body>
</html>
3. Crea un altro file, copia/incolla la configurazione seguente e salva il file come file Docker all'interno della ~/apache-server-docker-demo directory. Al termine, Docker utilizzerà questo DockerFile per eseguire tutti i comandi necessari per creare una nuova immagine Docker sopra qualsiasi immagine di base.
Il File Docker di seguito contiene vari passaggi/istruzioni che costruiranno il container Apache:
Maintainer
– Le istruzioni del gestore forniscono informazioni sull'autore che gestisce questo file.FROM
– L'istruzione FROM inizializza una nuova fase di compilazione e imposta l'immagine di base per le istruzioni successive. Nello snippet di codice sottostante,centos:7
è l'immagine di base.COPY
– Il comando COPY copia un file dalla macchina host (host Docker) al contenitore. ****indice.html che hai creato in precedenza sull'host Docker verrà copiato nei contenitori /var/www/html directory.EXPOSE
– L'istruzione EXPOSE informa Docker che il contenitore è in ascolto sulle porte di rete specificate in fase di esecuzione. Il server web Apache è esposto per impostazione predefinita suPort 80
.
# Instruction for Dockerfile to create a new image on top of the base image (httpd)
FROM httpd:2.4
MAINTAINER [email protected]
COPY index.html /var/www/html/
EXPOSE 80
4. Successivamente, verifica tutti i file richiesti di seguito nella cartella eseguendo la tree
comando.
5. Quindi, crea l'immagine eseguendo docker build
comando. Il t
flag è usato per taggare l'immagine apache-server
con v1
e.
indica la directory di lavoro attuale.
# Building the docker Image
sudo docker build -t apache-server:v1 .
Quando Docker viene eseguito, restituisce vari attributi. Vedrai che uno di questi attributi è REPOSITORY. Il nome del REPOSITORY è apache-server
e l'immagine è contrassegnata con la versione v1
, come mostrato di seguito.
6. Infine, esegui il contenitore Apache utilizzando l'immagine appena creata eseguendo docker run
comando.
Il p
flag pubblica le porte di un container sull'host, che è 80:80
. Il -it
flag indica a Docker di allocare uno pseudo-terminale connesso allo stdin del contenitore.
# Running the Apache container using the newly built image
docker run -it -p 80:80 apache-server:v1
7. Infine, verifica se puoi accedere all'interfaccia web di Apache navigando su Public-ip-address:80 utilizzando il tuo browser web. Vedrai questo messaggio sull'interfaccia web perché hai creato il file index.html e Docker lo ha copiato nel contenitore all'avvio.
Conclusione
Questo tutorial mirava ad aiutarti nel processo di configurazione di un container Apache Docker utilizzando le immagini Docker. Hai imparato come avviare i container Apache utilizzando i file Docker, con i quali puoi modificare e creare container personalizzati a tua scelta.
Quindi cosa costruirai sull'immagine Docker del server Apache?