Π§ΡΠΎ Π½Π°Ρ ΠΏΠΎΠ±ΡΠ΄ΠΈΠ»ΠΎ ΡΠΎΠ·Π΄Π°ΡΡ
ΠΠΎΠ±ΡΠ΄ΠΈΠ»ΠΈ Π½Π°Ρ ΡΡΡΠ΄Π΅Π½ΡΡ Β«
Π ΠΌΡ ΠΏΠΎΠ½ΡΠ»ΠΈ, ΡΡΠΎ Ρ Π½Π°Ρ Ρ Π²Π°ΡΠ°Π΅Ρ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π°, ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΊΠ΅ΠΉΡΠΎΠ², Π²Π½ΡΡΡΠ΅Π½Π½Π΅ΠΉ ΡΠ½Π΅ΡΠ³Π΅ΡΠΈΠΊΠΈ ΡΠΏΠΈΠΊΠ΅ΡΠΎΠ². ΠΠ»ΡΡ Π΅ΡΡΡ Π·Π°ΠΏΡΠΎΡ ΡΡΡΠ΄Π΅Π½ΡΠΎΠ², Π΅ΡΡΡ ΡΠ²Π½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΠ΅Ρ β ΠΎΡΡΠ°Π»ΠΎΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π²ΡΠ΄Π΅Π»ΠΈΡΡ Docker Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΠΊΡΡΡ.
Π ΠΊΡΡΡΠ΅ ΠΌΡ ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ:
- Π²ΡΠ΅ Π΅Π³ΠΎ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ;
- ΠΎΡΠ½ΠΎΠ²Π½ΡΡ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΉ;
- ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΡΠ΅ΡΠΈ;
- Π½ΡΠ°Π½ΡΡ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ ΠΠ‘ ΠΈ ΡΠ·ΡΠΊΠ°ΠΌΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
Π Π²Ρ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΠ΅ΡΡ Ρ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠ΅ΠΉ ΠΈ ΠΏΠΎΠΉΠΌΡΡΠ΅, Π³Π΄Π΅ ΠΈ ΠΊΠ°ΠΊ Π»ΡΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Docker. Π’Π°ΠΊΠΆΠ΅ ΠΌΡ ΠΏΠΎΠ΄Π΅Π»ΠΈΠΌΡΡ best practice ΠΊΠ΅ΠΉΡΠ°ΠΌΠΈ, ΠΊΠ°ΠΊ ΠΈ Π²ΡΠ΅Π³Π΄Π° Π΄Π΅Π»Π°Π΅ΠΌ Π½Π° Π½Π°ΡΠΈΡ ΠΊΡΡΡΠ°Ρ , ΠΈΠ½ΡΠ΅Π½ΡΠΈΠ²Π°Ρ ΠΈ Π²Π΅Π±ΠΈΠ½Π°ΡΠ°Ρ . Π‘ΡΡΠ΄Π΅Π½ΡΠ°ΠΌ Π±ΡΠ΄Π΅Ρ Π΄ΠΎΡΡΡΠΏΠ΅Π½ Git-ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ Ρ ΠΌΠ°ΡΠ΅ΡΠΈΠ°Π»Π°ΠΌΠΈ ΠΈ ΡΡΠ΅Π½Π΄ Π΄Π»Ρ ΠΏΡΠ°ΠΊΡΠΈΠΊΠΈ Π½Π° ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ. ΠΠΎΠΏΡΠΎΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ Π·Π°Π΄Π°ΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΡΡΠ°ΠΌ ΡΠ΅Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ.
Π§ΡΠΎ Π²Ρ ΡΠ·Π½Π°Π΅ΡΠ΅, ΠΊΡΠΎΠΌΠ΅ Π²ΡΠ΅Π³ΠΎ ΠΏΡΠΎΡΠ΅Π³ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠ³ΠΎ?
- Π§ΡΠΎ Π΄Π΅Π»Π°ΡΡ, Π΅ΡΠ»ΠΈ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎ Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΠΎΠ±ΠΈΡΠ°Π΅ΡΡΡ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ, Π° Π½Π° ΠΏΡΠΎΠ΄Π°ΠΊΡΠ΅Π½Π΅ Π²ΡΠ΅ Π»ΠΎΠΌΠ°Π΅ΡΡΡ?
- ΠΠ°ΠΊ ΡΠ°Π·ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΠΈ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈ Π½Π°Π»ΠΈΡΠΈΠΈ ΠΎΠ³ΡΠΎΠΌΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ?
- ΠΠ΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π»ΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ Π² Docker Π½Π΅Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΡΠΉ ΠΊΠΎΠ΄? Π ΡΠ°ΠΊΠΆΠ΅ ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ Π΄ΡΡΠ³ΠΈΠ΅ ΠΌΠΈΡΡ ΠΈ Π»Π΅Π³Π΅Π½Π΄Ρ ΠΎ Docker.
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΊΡΡΡΠ°
β1: ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² Docker. 12 ΡΠ°ΠΊΡΠΎΡΠΎΠ² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
- Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Docker.
- ΠΠ°ΠΊ ΠΎΠ½ Π²ΠΎΠ·Π½ΠΈΠΊ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΡΠ΅ΡΠ°Π΅Ρ ΠΈ Π΄Π»Ρ ΡΠ΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ.
- ΠΠΈΡΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡ vs ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΠ·Π°ΡΠΈΡ.
β2: ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΈ Docker. ΠΠ±ΡΠ°Ρ ΡΡ Π΅ΠΌΠ° ΡΠ°Π±ΠΎΡΡ Docker
- Registry, Docker Daemon, Container, Image, Dockerfile ΠΈ ΠΈΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅
β3: Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Docker Π½Π° ΡΠ°Π·Π½ΡΠ΅ ΠΠ‘
- Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Docker Π½Π° Centos, Debian, Mac ΠΈ Windows.
- ΠΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Docker Π½Π° Windows, ΠΊΠ°ΠΊ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°ΡΡ Π΄Π΅ΠΌΠΎΠ½ ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ Π΅ΡΡΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ.
β4: ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Docker. CLI
- ΠΠΎΠΌΠ°Π½Π΄Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°ΠΌΠΈ, ΠΎΠ±ΡΠ°Π·Π°ΠΌΠΈ (run, rm, push ΠΈ Ρ.Π΄.).
β5: ΠΠ°ΠΏΡΡΠΊ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π² Docker
- ΠΠ°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ Dockerfile.
- Π‘Π±ΠΎΡΠΊΠ° Image.
- Π₯ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π² DockerHub.
- ΠΠ°ΠΏΡΡΠΊ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ
β6: Docker-compose
- Π§ΡΠΎ ΡΡΠΎ, Π΄Π»Ρ ΡΠ΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ, ΠΊΠ°ΠΊ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π΅ΡΡΡ.
- Π Π°Π·Π½ΠΈΡΠ° v2 ΠΈ v3.
- ΠΠ°ΠΏΡΡΠΊ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² Π² Docker-compose.
β7: Docker ΠΈ CI/CD
- ΠΠΎΡΡΡΠΎΠ΅Π½ΠΈΠ΅ ΠΏΠ°ΠΉΠΏΠ»Π°ΠΉΠ½ΠΎΠ² Π½Π° ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Gitlab.
- ΠΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π³ΠΎΠ»ΠΎΠ³ΠΎ Docker ΠΈ CI/CD.
β8: Docker ΠΏΠΎΠ΄ ΠΊΠ°ΠΏΠΎΡΠΎΠΌ. ΠΠ°ΠΊ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Docker Π½Π° ΡΡΠΎΠ²Π½Π΅ ΠΠ‘ ΠΈ ΡΠ΄ΡΠ°
- Namespaces, Cgroups, Capabilities, limits/requests ΠΈ Ρ.Π΄.
- CΠΎΠ·Π΄Π°Π½ΠΈΠ΅ "ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°" Π±Π΅Π· Π΄ΠΎΠΊΠ΅ΡΠ°.
β9: Π‘Π΅ΡΡ Π² Docker
- ΠΠ°ΠΊΠΈΠ΅ Π΅ΡΡΡ Π²Π°ΡΠΈΠ°Π½ΡΡ ΡΠ°Π±ΠΎΡΡ ΡΠ΅ΡΠΈ, Π³Π΄Π΅ ΠΈΡ Π½Π°ΡΡΡΠΎΠΈΡΡ.
β10: ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° Docker Daemon’Π°
- docker.json β ΡΡΠΎ Π·Π° ΡΠ°ΠΉΠ» ΠΈ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡΡΠΎΠΈΡΡ Π΄Π΅ΠΌΠΎΠ½.
β11: ΠΡΠΎΠ΄Π²ΠΈΠ½ΡΡΠ°Ρ ΡΠ°Π±ΠΎΡΠ° Ρ ΠΎΠ±ΡΠ°Π·Π°ΠΌΠΈ. ΠΠ°ΡΡΡΠΎΠΉΠΊΠ° ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ Registry
- ΠΡΠΈΡΡΠΊΠ° Π½Π΅Π½ΡΠΆΠ½ΡΡ ΠΎΠ±ΡΠ°Π·ΠΎΠ².
- ΠΡΠΎΡΠΌΠΎΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΡΠ»ΠΎΠ΅Π².
- Gitlab Registry (Container Registry tag expiration policy).
β12: Π Π°Π±ΠΎΡΠ° ΡΠΎ stateful-Π΄Π°Π½Π½ΡΠΌΠΈ Π² Docker
- Docker Volumes, ΡΠΈΠΏΡ Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡ.
- ΠΠΎΠ΄Π²ΠΎΠ΄Π½ΡΠ΅ ΠΊΠ°ΠΌΠ½ΠΈ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ stateful ΠΈ Docker.
β13: Best practice ΠΏΠΎ Docker
- Π£ΠΌΠ΅Π½ΡΡΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΡΠ°Π·ΠΎΠ².
- ΠΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ΅ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠ΅ Dockerfile.
- Multistage ΡΠ±ΠΎΡΠΊΠ°.
β14: ΠΡΠ°Π½ΡΡ ΡΠ°Π±ΠΎΡΡ Ρ Docker ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΠ°Π·Π½ΡΡ ΡΠ·ΡΠΊΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ
- Ruby, php, python, go, java.
ΠΡΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π»ΠΈ Π΄Π΅ΠΉΡΡΠ²ΡΡΡΠΈΠ΅ ΠΈΠ½ΠΆΠ΅Π½Π΅ΡΡ ΠΈ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΠΎΡΡ Southbridge: ΠΠ°ΡΡΠ΅Π»Ρ ΠΠ±ΡΠ°Π΅Π², ΠΠ»ΠΈΠ·Π°Π²Π΅ΡΠ° ΠΠΈΡ Π½ΠΎ, ΠΠ»Π΅ΠΊΡΠ°Π½Π΄Ρ Π¨Π²Π°Π»ΠΎΠ²
Π€ΠΎΡΠΌΠ°Ρ Π²ΠΈΠ΄Π΅ΠΎΠΊΡΡΡΠ°: 5 ΡΠ°ΡΠΎΠ².
ΠΠ°ΠΏΡΡΠΊ: 31 ΠΈΡΠ»Ρ
Π¦Π΅Π½Π°: 5 000 ΡΡΠ±. 20 000 ΡΡΠ±. (Π΄ΠΎ 30 ΠΈΡΠ»Ρ)
ΠΡΡΠΎΡΠ½ΠΈΠΊ: habr.com