Noțiuni de bază Docker pentru dezvoltatori
- 3 minute de citit
- 2 exemple de cod
- 2 imagini
Disponibil și în English
Pe această pagină
Introducere
Salut 🙋♂️
În acest articol vom discuta despre un instrument numit Docker 🐬
Docker este o platformă care permite împachetarea aplicațiilor individuale în containere. Astfel se obține izolarea aplicațiilor la nivelul sistemului de operare, fără a fi nevoie de tehnologii de virtualizare, folosind API-urile sistemului de operare.
Deoarece poate fi puțin greu să începi cu Docker dacă ești nou în domeniu, voi încerca să fiu scurt și concis.
Un mic exemplu
Să presupunem că vrei să implementezi două aplicații pe un server Linux, iar una dintre ele depinde de biblioteca imagemagick versiunea A, iar cealaltă de versiunea B.
Deoarece poți avea instalată o singură versiune a bibliotecii în același timp, nu poți implementa ambele aplicații. ☹
Cu Docker, poți împacheta aplicația și toate dependențele ei în containere. 📦
Ceva ce probabil poți realiza și fără Docker, dacă te străduiești suficient. Dar Docker face asta incredibil de ușor pentru noi.
Odată ce ai împachetat aplicația, o poți publica pe Docker Hub ca să o folosească și alți oameni.
Să recapitulăm:
- 🐬Docker este o platformă care le dă putere dezvoltatorilor.
- ☁Docker Hub este un hub pentru partajarea containerelor, instrumentelor și pluginurilor Docker.
- 📦Containerul este o abstracție la nivel de aplicație.
Instalarea Docker ⚙
Pentru a instala Docker, urmează ghidul oficial, este bine scris.
Dacă folosești Windows 10 Home, îți recomand să instalezi WSL și WSL2 înainte de Docker.
| [Install WSL on Windows 10 | Microsoft Docs](https://docs.microsoft.com/en-us/windows/wsl/install-win10) |
Împachetarea 📦
Pentru a împacheta ai nevoie de un Dockerfile. Dockerfile este un document text care conține toți pașii necesari pentru a împacheta aplicația într-un container.
Pentru o aplicație Golang, un exemplu de Dockerfile ar arăta așa:
# Golang este imaginea noastră de bază.FROM golang:1.7# Creează un director numit simplFTRUN mkdir -p /go/src/github.com/metonimie/simplFT/# Copiază conținutul directorului curent în simplFTADD . /go/src/github.com/metonimie/simplFT/# Setează directorul de lucru la simplFTWORKDIR /go/src/github.com/metonimie/simplFT/# Instalează dependențeleRUN go get "github.com/zyxar/image2ascii/ascii"RUN go get "github.com/spf13/viper"# Construiește aplicațiaRUN go build ./main.go# Rulează simplFT când pornește containerulCMD ["./main", "-config-name", "docker-config"]După ce ai un Dockerfile configurat, poți construi o imagine rulând: docker build . -f path_to_dockerfile -t my_app
Odată ce imaginea este construită, o poți folosi ca bază pentru containere și poți rula câte vrei: docker run -d -p 8080:8080 -p 8081:8081 my_app
Pentru a vedea containerele care rulează, poți scrie: docker ps
Iar pentru a opri un container: docker stop container_id
Poți, de asemenea, să te conectezi prin SSH la containere, să montezi volume, să expui porturi, să obții jurnale și multe altele.
** Dacă ai secrete în directorul curent!!! **
Creează un fișier numit .dockerignore și include în el toate fișierele care conțin informații sensibile. Dacă nu o faci, poți scurge informații sensibile în imaginile Docker.
Docker și Docker-Compose
Docker-compose este un alt instrument care permite rularea unor scenarii care implică mai multe containere, cu ușurință.
Dacă ești dezvoltator, aplicația ta va depinde de alte servicii precum Nginx, Reddit, MongoDB, RabbitMQ și așa mai departe. A-ți configura mediul de DEZVOLTARE și a instala toate acestea pe mașina ta este dureros și plictisitor, iar dacă instalezi versiunea greșită de MongoDB, aplicația ta s-ar putea bloca.
La fel ca la Dockerfile, poți crea un fișier docker-compose.yaml, în care poți referi imagini terțe sau propriul tău Dockerfile.
Un mediu local de dezvoltare pentru WordPress ar arăta așa:
version: "3.9" services: db: image: mysql:5.7 volumes: - db_data:/var/lib/mysql restart: always environment: MYSQL_ROOT_PASSWORD: somewordpress MYSQL_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_PASSWORD: wordpress wordpress: depends_on: - db image: wordpress:latest volumes: - wordpress_data:/var/www/html ports: - "8000:80" restart: always environment: WORDPRESS_DB_HOST: db:3306 WORDPRESS_DB_USER: wordpress WORDPRESS_DB_PASSWORD: wordpress WORDPRESS_DB_NAME: wordpressvolumes: db_data: {} wordpress_data: {}Poți rula docker-compose up -d pentru a porni toate serviciile și docker-compose down pentru a le opri.
| Exemplul complet poate fi găsit la [Quickstart: Compose and WordPress | Docker Documentation](https://docs.docker.com/samples/wordpress/). |
Mulțumesc că ai citit! 🧾
Ai grijă de tine și fii sănătos!