🐳 Docker & Docker Compose: Π˜Π½ΡΡ‚Π°Π»Π°Ρ†ΠΈΡ Π·Π° сСкунди

🐳 Docker & Docker Compose: Π˜Π½ΡΡ‚Π°Π»Π°Ρ†ΠΈΡ Π·Π° сСкунди

Π’ свСта Π½Π° DevOps, ΡΡŠΡ€Π²ΡŠΡ€Π½Π°Ρ‚Π° автоматизация ΠΈ ΠΌΠΎΠ΄Π΅Ρ€Π½ΠΈΡ‚Π΅ ΡƒΠ΅Π± услуги, Docker Π΅ Π΅Π΄ΠΈΠ½ ΠΎΡ‚ Π½Π°ΠΉ-ΠΌΠΎΡ‰Π½ΠΈΡ‚Π΅ инструмСнти Π·Π° ΠΈΠ·ΠΎΠ»ΠΈΡ€Π°Π½Π΅, Ρ€Π°Π·Π³Ρ€ΡŠΡ‰Π°Π½Π΅ ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° прилоТСния. А ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΈ Docker Compose, ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°ΠΌΠ΅ ΠΈΠ΄Π΅Π°Π»Π½Π°Ρ‚Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° Π·Π° стартиранС Π½Π° Ρ†Π΅Π»ΠΈ инфраструктури с Π΅Π΄Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°.

Π’ Ρ‚Π°Π·ΠΈ статия Ρ‰Π΅ Ρ‚ΠΈ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ ΠΊΠ°ΠΊ Π΄Π° ΠΈΠ½ΡΡ‚Π°Π»ΠΈΡ€Π°Ρˆ Docker ΠΈ Docker Compose Π·Π° сСкунди, ΠΊΠ°ΠΊΠ²ΠΎ прСдставляват, ΠΊΠ°ΠΊ работят, ΠΈ Π·Π°Ρ‰ΠΎ всСки Linux администратор ΠΈΠ»ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ трябва Π΄Π° Π³ΠΈ ΠΈΠΌΠ° Π² арсСнала си.


πŸ“¦ Какво Π΅ Docker?

Docker Π΅ инструмСнт Π·Π° контСйнСризация – тСхнология, която позволява Π½Π° прилоТСнията Π΄Π° работят Π² ΠΈΠ·ΠΎΠ»ΠΈΡ€Π°Π½Π° срСда, Π½Π°Ρ€Π΅Ρ‡Π΅Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€. ВсСки ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° всичко Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π° изпълнСниС Π½Π° Π΄Π°Π΄Π΅Π½ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅: ΠΊΠΎΠ΄, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, зависимости ΠΈ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ.

πŸ”‘ ΠŸΡ€Π΅Π΄ΠΈΠΌΡΡ‚Π²Π° Π½Π° Docker:

  • Π›Π΅ΠΊ ΠΈ Π±ΡŠΡ€Π·
  • ΠŸΠΎΡ€Ρ‚Π°Ρ‚ΠΈΠ²Π΅Π½ – Ρ€Π°Π±ΠΎΡ‚ΠΈ Π΅Π΄Π½Π°ΠΊΠ²ΠΎ Π½Π° всяка машина
  • ΠœΠ°Ρ‰Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌ ΠΈ лСсСн Π·Π° CI/CD процСси
  • ИдСалСн Π·Π° microservices Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΈ

πŸ”€ Какво Π΅ Docker Compose?

Docker Compose позволява Π΄Π° Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π°Ρˆ ΠΈ ΡƒΠΏΡ€Π°Π²Π»ΡΠ²Π°Ρˆ ΠΌΠ½ΠΎΠ³ΠΎΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π½ΠΈ прилоТСния. ВмСсто Π΄Π° ΡΡ‚Π°Ρ€Ρ‚ΠΈΡ€Π°Ρˆ ΠΏΠΎΠΎΡ‚Π΄Π΅Π»Π½ΠΎ Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ, Π±Π΅ΠΊΠ΅Π½Π΄, Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄ ΠΈ кСш систСма, с Docker Compose моТСш Π΄Π° Π³ΠΈ опишСш Π² Π΅Π΄ΠΈΠ½ Ρ„Π°ΠΉΠ» docker-compose.yml ΠΈ Π΄Π° Π³ΠΈ ΡΡ‚Π°Ρ€Ρ‚ΠΈΡ€Π°Ρˆ навСднъТ с:

My Terminal
docker compose up -d

πŸš€ Π˜Π½ΡΡ‚Π°Π»Π°Ρ†ΠΈΡ Π½Π° Docker Π·Π° сСкунди

Π•Ρ‚ΠΎ ΠΊΠ°ΠΊ само с няколко ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ моТСш Π΄Π° имаш напълно Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰ Docker Π½Π° твоя Linux ΡΡŠΡ€Π²ΡŠΡ€ (тСства сС Π½Π° Ubuntu, Debian, CentOS, Fedora, Arch):

πŸ”½ 1. Π˜Π·Ρ‚Π΅Π³Π»ΠΈ официалния инсталационСн скрипт:

My Terminal
curl -fsSL https://get.docker.com -o install-docker.sh

▢️ 2. Π‘Ρ‚Π°Ρ€Ρ‚ΠΈΡ€Π°ΠΉ инсталацията с root ΠΈΠ»ΠΈ Ρ‡Ρ€Π΅Π· sudo:

My Terminal
sudo sh install-docker.sh

πŸŽ‰ Π’ΠΎΠ²Π° Π΅ всичко! Π‘Π»Π΅Π΄ няколко сСкунди Docker Ρ‰Π΅ Π΅ инсталиран ΠΈ Π³ΠΎΡ‚ΠΎΠ² Π·Π° ΠΏΠΎΠ»Π·Π²Π°Π½Π΅.


πŸ§ͺ ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° слСд инсталацията

Π£Π²Π΅Ρ€ΠΈ сС, Ρ‡Π΅ всичко Π΅ Π½Π°Ρ€Π΅Π΄ с:

My Terminal
docker –version

ΠžΡ‡Π°ΠΊΠ²Π°Π½ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚:

My Terminal
Docker version 24.x.x, build xxxxxxxx

Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° тСствай Π΄Π°Π»ΠΈ Docker Π΄Π΅ΠΌΠΎΠ½ΡŠΡ‚ Ρ€Π°Π±ΠΎΡ‚ΠΈ:

My Terminal
sudo systemctl status docker

πŸ” Docker ΠΈ сигурност

Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‡Π΅ Docker улСснява ΠΆΠΈΠ²ΠΎΡ‚Π° Π½ΠΈ, Π½Π΅ трябва Π΄Π° забравямС основни ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈ:

  • Никога Π½Π΅ стартирай ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ с --privileged, освСн Π°ΠΊΠΎ Π½Π΅ Π΅ Π½Π°Π»ΠΎΠΆΠΈΡ‚Π΅Π»Π½ΠΎ.
  • Пази .env ΠΈ docker-compose.yml ΠΎΡ‚ Ρ‡ΡƒΠΆΠ΄ΠΈ ΠΎΡ‡ΠΈ.
  • Използвай ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»Π½ΠΈ ΠΈ Π΄ΠΎΠ²Π΅Ρ€Π΅Π½ΠΈ ΠΎΠ±Ρ€Π°Π·ΠΈ ΠΎΡ‚ Docker Hub.
  • Обновявай Ρ€Π΅Π΄ΠΎΠ²Π½ΠΎ Docker, Compose ΠΈ ΠΎΠ±Ρ€Π°Π·ΠΈΡ‚Π΅.

🧹 ΠŸΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° ΠΈ почистванС

Docker ΠΌΠΎΠΆΠ΅ Π΄Π° Π½Π°Ρ‚Ρ€ΡƒΠΏΠ° кСш ΠΈ остарСли ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ. ΠŸΠΎΡ‡ΠΈΡΡ‚ΠΈ Π³ΠΈ лСсно с:

My Terminal
docker system prune -a

⚠️ Π’ΠΎΠ²Π° Ρ‰Π΅ ΠΈΠ·Ρ‚Ρ€ΠΈΠ΅ всички Π½Π΅Π°ΠΊΡ‚ΠΈΠ²Π½ΠΈ ΠΎΠ±Ρ€Π°Π·ΠΈ, ΠΌΡ€Π΅ΠΆΠΈ ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ!


πŸ” ПолСзни Docker ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ

КомандаОписаниС
docker psПокаТи Ρ€Π°Π±ΠΎΡ‚Π΅Ρ‰ΠΈΡ‚Π΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ
docker ps -aВсички (Π²ΠΊΠ». спрСни) ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ
docker imagesБписък с ΠΎΠ±Ρ€Π°Π·ΠΈ
docker stop <id>Π‘ΠΏΡ€ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€
docker rm <id>Π˜Π·Ρ‚Ρ€ΠΈΠΉ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€
docker rmi <image>Π˜Π·Ρ‚Ρ€ΠΈΠΉ ΠΎΠ±Ρ€Π°Π·
docker logs <container>Π’ΠΈΠΆ Π»ΠΎΠ³ΠΎΠ²Π΅Ρ‚Π΅ Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€
docker exec -it <container> bashΠ’Π»Π΅Π· Π²ΡŠΡ‚Ρ€Π΅ Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ (Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π»)

πŸ“ ПолСзни Compose ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ

КомандаОписаниС
docker compose up -dΠ‘Ρ‚Π°Ρ€Ρ‚ΠΈΡ€Π° всички услуги Π½Π° Π·Π°Π΄Π΅Π½ ΠΏΠ»Π°Π½
docker compose downΠ‘ΠΏΠΈΡ€Π° ΠΈ ΠΏΡ€Π΅ΠΌΠ°Ρ…Π²Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΡ‚Π΅
docker compose logsПоказва Π»ΠΎΠ³ΠΎΠ²Π΅Ρ‚Π΅
docker compose psПоказва статуса
docker compose restartРСстартира всички услуги

🧠 Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΡΡ‚Π° Π²Π΅Ρ‡Π΅ Π½Π΅ Π΅ Π±ΡŠΠ΄Π΅Ρ‰Π΅Ρ‚ΠΎ – тя Π΅ настоящС. Π‘Π»Π°Π³ΠΎΠ΄Π°Ρ€Π΅Π½ΠΈΠ΅ Π½Π° Docker ΠΈ Docker Compose моТСш Π΄Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Ρˆ, Ρ‚Π΅ΡΡ‚Π²Π°Ρˆ, Ρ€Π°Π·Π³Ρ€ΡŠΡ‰Π°Ρˆ ΠΈ ΡƒΠΏΡ€Π°Π²Π»ΡΠ²Π°Ρˆ прилоТСния с Π½Π΅Ρ‡ΡƒΠ²Π°Π½Π° Π»Π΅ΠΊΠΎΡ‚Π°. А сСга, слСд ΠΊΠ°Ρ‚ΠΎ знаСш ΠΊΠ°ΠΊ Π΄Π° Π³ΠΈ ΠΈΠ½ΡΡ‚Π°Π»ΠΈΡ€Π°Ρˆ Π±ΡƒΠΊΠ²Π°Π»Π½ΠΎ Π·Π° сСкунди, моТСш Π΄Π° Π³ΠΈ добавиш към всСки Ρ‚Π²ΠΎΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚.

Π‘Π»Π°Π³ΠΎΠ΄Π°Ρ€ΠΈΠΌ Π²ΠΈ Π·Π° ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π½Π΅Ρ‚ΠΎ Π½Π° статията! Ако Π½Π°ΠΌΠ΅Ρ€ΠΈΡ…Ρ‚Π΅ информацията Π·Π° ΠΏΠΎΠ»Π΅Π·Π½Π°, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π΄Π°Ρ€ΠΈΡ‚Π΅ посрСдством Π±ΡƒΡ‚ΠΎΠ½ΠΈΡ‚Π΅ ΠΏΠΎ-Π΄ΠΎΠ»Ρƒ: πŸ”°