Serie di comandi per l’utilizzo di docker su Ubuntu, dall’installazione all’utilizzo.
Link a Docker HUB: https://hub.docker.com/
Installazione valida su Ubuntu server (LTS) 18.04 – 20.04 – 22.04
apt install ca-certificates curl gnupg lsb-release mkdir -m 0755 -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null apt update apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Comandi utili per iniziare ad utilizzare docker
# list immagini presenti in locale: docker images # list containers attivi docker ps # list tutti i containers: docker ps -a ###################################### # negli esempi di seguito le immagini # che non sono presenti in locale # vengono scaricate da docker HUB: # https://hub.docker.com/ ###################################### # test con immagine busybox: docker run busybox:latest echo "hello world" # test con immagine busybox e nome al container: docker run --name hello_world busybox:latest echo "hello world" # avvio interattivo (-i) + pseudo tty (-t) docker run -it busybox:latest exit # test detached mode: docker run -d -name ciao busybox:latest sleep 1000 docker ps docker inspect ID or NAME docker stop ID or NAME docker rm ID or NAME # stop and delete docker rm -f ID or NAME # stop and delete all the containers docker rm -f $(docker ps -aq) # test detached con immagine nginx # apro la porta 8080 locale verso la 80 del container: docker run --name test-nginx -d -p 8080:80 nginx # accesso alla shell di un container avviato in detached mode: docker exec -it test-nginx bash
Creare una nuova immagine con un Dockerfile
Nell esempio, partendo da un’immagine ubuntu:jammy, facciamo l’update di apt, installiamo git e vim e generiamo una nuova immagine.
creare un file “Dockerfile” con questo contenuto:
FROM ubuntu:jammy RUN apt update && apt install -y \ git \ vim
# crea l'immagine con il comando (attenzionea al punto finale): docker build -t sampozzo/ubuntu:jammy . # avvio del container dalla nuova immagine: docker run --name sampozzo -it sampozzo/ubuntu:jammy
Altro esempio: partendo dall’immagine ufficiale di nginx, sostituiamo l’index.html del webserver con uno custom:
Crea un file index.html (scegli tu il contenuto) ed un Dockerfile nella directory corrente con questo contenuto:
FROM nginx:latest COPY index.html /usr/share/nginx/html/
Fai la build e l’avvio come sopra (cambiando nome e tag).
Push delle immagine creata su Docker HUB
docker login --username=username # viene chiesta la pwd docker push username/image:1.0
Link tra due container
E’ possibile creare una rete privata tra due o più containers per mezzo del paramentro –link
esempio pratico:
Avviare un primo container in modalità detached, il secondo in modalità interattiva e con il paramentro link:
# avvio un primo container, ad esempio nginx run --name nginx -dp 8080:80 nginx
# avvio il secondo (busybox) in modalità interattiva e con il parametro link: docker run --name client -it --link nginx busybox:latest
all’interno della shell del secondo container, possiamo verificare che il parametro link ha creato una rete privata tra i due container assegnando ad ognuno un ip privato:
ping nginx PING nginx (172.17.0.2): 56 data bytes 64 bytes from 172.17.0.2: seq=0 ttl=64 time=0.117 ms 64 bytes from 172.17.0.2: seq=1 ttl=64 time=0.076 ms 64 bytes from 172.17.0.2: seq=2 ttl=64 time=0.083 ms
vi /etc/hosts
127.0.0.1 localhost ::1 localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters 172.17.0.2 nginx ac964eb1fb5e 172.17.0.3 e00c080d4443
To be continued…
Lascia un commento