Docker - Practice commands

This commit is contained in:
2026-01-13 18:00:13 +02:00
commit dc7c250d8e
2 changed files with 186 additions and 0 deletions

31
.gitignore vendored Normal file
View File

@@ -0,0 +1,31 @@
# ---> macOS
# General
.DS_Store
.AppleDouble
.LSOverride
# Icon must end with two \r
Icon
# Thumbnails
._*
# Files that might appear in the root of a volume
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
.com.apple.timemachine.donotpresent
# Directories potentially created on remote AFP share
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk
#Custom file
.env

155
docker_exercises.sh Normal file
View File

@@ -0,0 +1,155 @@
# #Documentatie:
# https://docs.docker.com/reference/cli/docker/network/create/
# https://docs.docker.com/reference/cli/docker/network/ls/
# https://docs.docker.com/engine/network/drivers/bridge/
# https://docs.docker.com/reference/cli/docker/container/run/
# https://labex.io/tutorials/docker-how-to-test-connectivity-between-docker-containers-411613
# https://docs.docker.com/engine/network/
# https://docs.docker.com/reference/cli/docker/network/connect/
# EXERCITIUL 1 Retea Docker custom
#1 Creeaza o retea Docker custom numita: lab_network
#2 Verifica ca reteaua exista.
#3 Inspecteaz-o si identifica:
# subnetul
# gateway-ul
# driverul folosit
#Rezolvare:
#1. Commnad to create a docker bridge network
docker network create -d bridge lab_network
#2. Command to list all docker network
docker network ls
#3. Commnad to inspect a docker network:
docker network inspect lab_network
#EXERCITIUL 2 Containere in aceeasi retea (DNS intern)
#1 Ruleaza un container nginx:
#nume: web
#conectat la lab_network
#ruleaza in background
#2 Ruleaza un container alpine:
#nume: client
#conectat la lab_network
#interactiv (-it)
#3 Din containerul client:
#testeaza conectivitatea catre web
#foloseste numele containerului, nu IP
#Restrictii
#NU folosi -p
#NU folosi IP hardcodat
#Rezolvare:
#1. Comanda rulare container ngninx
docker run --name web \
--network lab_network -d \
nginx:perl
#2. Comanda rulare container alpine
docker run --name client \
--network lab_network -it \
alpine:3.23.2
#3. Testare conectivitate nefolosind -p si IP hardcodat ci DNS
docker exec client ping -c 4 web
#EXERCITIUL 3 Port mapping (acces din exterior)
#1. Opreste containerul web
#2. Porneste-l din nou astfel incit:
#nginx sa fie accesibil din browser
#portul de pe host sa NU fie 80
#3. Acceseaza nginx din browser folosind: http://172.17.0.2:8080
#Rezolvare:
#1. Oprire container
docker ps
docker stop web
docker rm web
#2. Pornire docker nou cu port pe 8080
docker run --name web --network lab_network -p 8080:80 -d nginx:perl
#3. Acceseaza nginx din browser folosind: http://172.17.0.2:8080 - Apare pagina de la ngnix
# EXERCITIUL 4 Volume mapping (persistenta datelor)
#1 Creeaza pe host un director dedicat pentru continut web
#2 Ruleaza containerul web astfel incat:
# directorul de pe host sa fie mapat in container
# nginx sa serveasca fisierele din acel director
#3 Creeaza / modifica un fisier HTML pe host
#4 Verifica din browser ca modificarile apar fara restart de container
# Ce trebuie sa demonstrezi
# diferenta intre filesystem container vs host
# persistenta datelor
# bind mount functional
#Rezolvare:
#1. Creare director pentru continut web
mkdir ~/Documents/docker_lab/html
#2. Rulare container web cu mapare volume
docker run --name web \
--network lab_network \
-p 8080:80 \
-v ~/Documents/docker_lab/html:/usr/share/nginx/html \
-d nginx:perl
#3. Creare fisier index.html pe host
touch ~/Documents/docker_lab/html/index.html
# EXERCITIUL 5 Inspect si debugging
#1 Foloseste docker inspect pe containerul web
#2 Identifica:
# IP-ul containerului
# reteaua in care este
# volumele mapate
#3 Intra in container si verifica:
# ce procese ruleaza
# unde este montat volumul
# Ce trebuie sa inveti
# cum verifici o configuratie fara sa „ghicesti”
# debugging de baza in productie
#Rezolvare:
#1. Folosim comanda inspect
docker inspect web
#2. Cu docker inspect gasim reteaua, ip, volumul
#3. Pentru a lista procesele de pe un container
docker top web
docker inspect web --format '{{.State.Pid}}'
#din interiorul containerului
ps -ef
cat /proc/1/cmdline
# EXERCITIUL 6 Curatenie controlata
#1 Opreste toate containerele din laborator
docker stop
#2 Sterge containerele
#3 Sterge reteaua custom
#4 Verifica ca:
# nu mai exista containere
# reteaua a fost eliminata
# volumele de pe host NU au fost sterse
#Rezolvare
#1. Oprire toate containerele
docker stop $(docker ps -q)
#2. Stergerea tuturor containerelor
docker rm $(docker ps -a -q)
#3. Stergere retea comuna
docker network rm lab_network
#. Verificare containere:
docker ps -a
#. Verificare retea
docker network ls
#. Verificare volume bind mount pe host
ls -la ~/Documents/homelab/html
#. Stergerea tuturor volumelor
docker volume ls
docker volume prune --all
#####Creare docker volume pentru diferentie cu bind volume
docker volume create web_data
docker run --name web \
-p 8080:80 \
-v web_data:/usr/share/nginx/html \
-d nginx:perl
## pentru verificare entrypoint aplicatie folosim:
docker inspect nginx --format '{{.Config.Entrypoint}} {{.Config.Cmd}}'