ΠΠ΄ΡΠ°Π²Π΅ΠΉΡΠ΅ Π½Π° Π²ΡΠΈΡΠΊΠΈ! Π ΡΠ²ΠΎΠ΅ΡΠΎ , ΠΎΠ±Π΅ΡΠ°Ρ Π΄Π° ΡΠ°Π·ΠΊΠ°ΠΆΠ° Π·Π° ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° Docker Π² Docker ΠΈ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΡΠ΅ Π°ΡΠΏΠ΅ΠΊΡΠΈ Π½Π° ΡΠΎΠ²Π° Π·Π°Π½ΠΈΠΌΠ°Π½ΠΈΠ΅. ΠΡΠ΅ΠΌΠ΅ Π΅ Π΄Π° ΠΈΠ·ΠΏΡΠ»Π½Ρ ΠΎΠ±Π΅ΡΠ°Π½ΠΈΠ΅ΡΠΎ ΡΠΈ. ΠΠΏΠΈΡΠ΅Π½ DevOps ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΡΡ ΠΌΠΎΠΆΠ΅ Π΄Π° Π²ΡΠ·ΡΠ°Π·ΠΈ, ΡΠ΅ Π½Π° ΡΠ΅Π·ΠΈ, Π½Π° ΠΊΠΎΠΈΡΠΎ ΠΈΠΌ Π΅ Π½ΡΠΆΠ΅Π½ Docker Π² Docker, ΠΏΡΠΎΡΡΠΎ ΠΏΡΠΎΠ±ΠΈΠ²Π°Ρ ΡΠΎΠΊΠ΅ΡΠ° Π½Π° Docker Π΄Π΅ΠΌΠΎΠ½Π° ΠΎΡ Ρ ΠΎΡΡΠ° Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° ΠΈ ΡΠΎΠ²Π° Π΅ Π΄ΠΎΡΡΠ°ΡΡΡΠ½ΠΎ Π² 99% ΠΎΡ ΡΠ»ΡΡΠ°ΠΈΡΠ΅. ΠΠΎ Π½Π΅ Π±ΡΡΠ·Π°ΠΉΡΠ΅ Π΄Π° ΠΌΠ΅ Π·Π°ΠΌΠ΅ΡΡΡΠ΅ Ρ Π±ΠΈΡΠΊΠ²ΠΈΡΠΈ, Π·Π°ΡΠΎΡΠΎ ΡΡΠ°Π²Π° Π²ΡΠΏΡΠΎΡ Π·Π° ΠΈΡΡΠΈΠ½ΡΠΊΠΎ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° Docker Π²ΡΡΡΠ΅ Π² Docker. Π’ΠΎΠ²Π° ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΈΠΌΠ° ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΈ ΠΎΠ±Π»Π°ΡΡΠΈ Π½Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Π·Π° Π΅Π΄Π½Π° ΠΎΡ ΡΡΡ Π΅ ΡΠ°Π·ΠΈ ΡΡΠ°ΡΠΈΡ, ΡΠ°ΠΊΠ° ΡΠ΅ ΡΠ΅ Π½Π°ΡΡΠ°Π½Π΅ΡΠ΅ ΡΠ΄ΠΎΠ±Π½ΠΎ ΠΈ ΠΈΠ·ΠΏΡΠ°Π²Π΅ΡΠ΅ ΡΡΡΠ΅ΡΠ΅ ΡΠΈ ΠΏΡΠ΅Π΄ ΡΠ΅Π±Π΅ ΡΠΈ.

ΠΠ°ΡΠ°Π»ΠΎ
ΠΡΠΈΡΠΊΠΎ Π·Π°ΠΏΠΎΡΠ½Π° Π½Π° Π΄ΡΠΆΠ΄ΠΎΠ²Π΅Π½ ΡΠ΅ΠΏΡΠ΅ΠΌΠ²ΡΠΈΠΉΡΠΊΠΈ Π²Π΅ΡΠ΅Ρ, ΠΊΠΎΠ³Π°ΡΠΎ ΡΠΈΡΡΠ΅Ρ Π½Π°Π΅ΡΠ°ΡΠ° Π·Π° 5 $ ΠΌΠ°ΡΠΈΠ½ΠΊΠ° Π½Π° Digital Ocean, ΠΊΠΎΡΡΠΎ ΡΠ΅ Π±Π»ΠΎΠΊΠΈΡΠ° Π·Π°ΡΠ°Π΄ΠΈ ΡΠΎΠ²Π°, ΡΠ΅ Docker Π·Π°ΠΏΡΠ»Π½ΠΈ Π²ΡΠΈΡΠΊΠΈΡΠ΅ 24 Π³ΠΈΠ³Π°Π±Π°ΠΉΡΠ° Π½Π°Π»ΠΈΡΠ½ΠΎ Π΄ΠΈΡΠΊΠΎΠ²ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ Ρ ΠΎΠ±ΡΠ°Π·ΠΈ ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ. ΠΡΠΎΠ½ΠΈΡΡΠ° Π±Π΅ΡΠ΅ Π² ΡΠΎΠ²Π°, ΡΠ΅ Π²ΡΠΈΡΠΊΠΈΡΠ΅ ΡΠ΅Π·ΠΈ ΠΎΠ±ΡΠ°Π·ΠΈ ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ Π±ΡΡ Π° ΠΏΡΠ΅Ρ ΠΎΠ΄Π½ΠΈ ΠΈ Π±ΡΡ Π° Π½ΡΠΆΠ½ΠΈ ΡΠ°ΠΌΠΎ Π·Π° ΡΠ΅ΡΡΠ²Π°Π½Π΅ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡΡΠ° Π½Π° ΠΌΠΎΠ΅ΡΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²ΡΠ΅ΠΊΠΈ ΠΏΡΡ, ΠΊΠΎΠ³Π°ΡΠΎ ΠΈΠ·Π»Π΅Π·Π΅ Π½ΠΎΠ²Π° Π²Π΅ΡΡΠΈΡ Π½Π° Π½ΡΠΊΠΎΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΈΠ»ΠΈ ΡΡΠ΅ΠΉΠΌΡΠΎΡΠΊ. ΠΠΏΠΈΡΠ°Ρ ΡΠ΅ Π΄Π° ΠΏΠΈΡΠ° shell ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅ ΠΈ Π΄Π° Π½Π°ΡΡΡΠΎΠΉΠ²Π°ΠΌ cron Π·Π°Π΄Π°ΡΠΈ Π·Π° ΠΏΠΎΡΠΈΡΡΠ²Π°Π½Π΅ Π½Π° ΠΌΡΡΡΠΎΡΠΈΠΈΡΠ΅, Π½ΠΎ ΡΠΎΠ²Π° Π½Π΅ ΠΏΠΎΠΌΠΎΠ³Π½Π°: Π²ΡΠ΅ΠΊΠΈ ΠΏΡΡ Π²ΡΠΈΡΠΊΠΎ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π½ΠΎ Π·Π°Π²ΡΡΡΠ²Π°ΡΠ΅ Ρ ΡΠΎΠ²Π°, ΡΠ΅ Π΄ΠΈΡΠΊΠΎΠ²ΠΎΡΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ Π½Π° ΠΌΠΎΡΡ ΡΡΡΠ²ΡΡ Π±Π΅ΡΠ΅ Π·Π°Π΅ΡΠΎ, Π° ΡΡΡΠ²ΡΡΡΡ Π·Π°Π²ΠΈΡΠ²Π°ΡΠ΅ (Π² Π½Π°ΠΉ-Π΄ΠΎΠ±ΡΠΈΡ ΡΠ»ΡΡΠ°ΠΉ). Π Π΅Π΄ΠΈΠ½ ΠΌΠΎΠΌΠ΅Π½Ρ ΠΏΠΎΠΏΠ°Π΄Π½Π°Ρ Π½Π° ΡΡΠ°ΡΠΈΡ Π·Π° ΡΠΎΠ²Π° ΠΊΠ°ΠΊ Π΄Π° ΡΡΠ°ΡΡΠΈΡΠ°ΠΌ Jenkins Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ ΠΈ ΠΊΠ°ΠΊ ΡΠΎΠΉ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΡΠ·Π΄Π°Π²Π° ΠΈ ΠΏΡΠ΅ΠΌΠ°Ρ Π²Π° ΠΊΠΎΠ½Π²Π΅ΠΉΡΠΈ Π·Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ ΡΡΠ΅Π· ΠΏΡΠΎΠ±ΠΈΡ Π² Π½Π΅Π³ΠΎ ΡΠΎΠΊΠ΅Ρ Π½Π° Docker Π΄Π΅ΠΌΠΎΠ½Π°. ΠΠ΄Π΅ΡΡΠ° ΠΌΠΈ Ρ Π°ΡΠ΅ΡΠ°, Π½ΠΎ ΡΠ΅ΡΠΈΡ Π΄Π° ΠΎΡΠΈΠ΄Π° ΠΏΠΎ-Π΄Π°Π»Π΅Ρ ΠΈ Π΄Π° Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈΡΠ°ΠΌ Ρ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° Docker Π²ΡΡΡΠ΅ Π² Docker. Π’ΠΎΠ³Π°Π²Π° ΠΌΠΈ ΡΠ΅ ΡΡΡΡΠ²Π°ΡΠ΅ Π½Π°ΠΏΡΠ»Π½ΠΎ Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π΄Π° ΠΈΠ·ΡΠ΅Π³Π»ΡΠΌ docker ΠΎΠ±ΡΠ°Π·ΠΈ ΠΈ Π΄Π° ΡΡΠ·Π΄Π°Π²Π°ΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ Π½Π° Π²ΡΠΈΡΠΊΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΊΠΎΠΈΡΠΎ ΠΌΠΈ ΡΡΡΠ±Π²Π°Ρ Π·Π° ΡΠ΅ΡΡΠ²Π°Π½Π΅, Π²ΡΡΡΠ΅ Π² Π΄ΡΡΠ³ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ (Π½Π΅ΠΊΠ° Π³ΠΎ Π½Π°ΡΠ΅ΡΠ΅ΠΌ staging ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ). ΠΠ΄Π΅ΡΡΠ° Π±Π΅ΡΠ΅ Π΄Π° ΡΡΠ°ΡΡΠΈΡΠ°ΠΌ staging ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° Ρ ΡΠ»Π°Π³Π° -rm, ΠΊΠΎΠΉΡΠΎ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ ΠΈΠ·ΡΡΠΈΠ²Π° ΡΠ΅Π»ΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ Ρ ΡΡΠ»ΠΎΡΠΎ ΠΌΡ ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ ΠΏΡΠΈ ΡΠΏΠΈΡΠ°Π½Π΅. Π Π°Π·Π³Π»Π΅Π΄Π°Ρ Docker ΠΎΠ±ΡΠ°Π·Π° ΠΎΡ ΡΠ°ΠΌΠΈΡ Docker (), Π½ΠΎ ΡΠΎΠΉ ΡΠ΅ ΠΎΠΊΠ°Π·Π° ΡΠ²ΡΡΠ΄Π΅ ΠΎΠ±Π΅ΠΌΠ΅Π½ ΠΈ Π½Π΅ ΡΡΠΏΡΡ Π΄Π° Π³ΠΎ Π½Π°ΠΊΠ°ΡΠ°ΠΌ Π΄Π° ΡΠ°Π±ΠΎΡΠΈ ΠΏΠΎ Π½Π°ΡΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΠΉΡΠΎ ΠΌΠΈ ΡΡΡΠ±Π²Π°ΡΠ΅, ΠΈ ΠΈΡΠΊΠ°Ρ Π΄Π° ΠΏΡΠ΅ΠΌΠΈΠ½Π° ΠΏΡΠ΅Π· ΡΠ΅Π»ΠΈΡ ΠΏΡΠΎΡΠ΅Ρ ΡΠ°ΠΌ.
ΠΡΠ°ΠΊΡΠΈΠΊΠ°. ΠΠ΅ΡΡΠΏΠ΅Ρ ΠΈ
ΠΠΎΡΡΠ°Π²ΠΈΡ ΡΠΈ Π·Π° ΡΠ΅Π» Π΄Π° Π½Π°ΠΊΠ°ΡΠ°ΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ° Π΄Π° ΡΠ°Π±ΠΎΡΠΈ ΡΠ°ΠΊΠ°, ΠΊΠ°ΠΊΡΠΎ ΠΌΠΈ ΡΡΡΠ±Π²Π°ΡΠ΅, ΠΈ ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠΈΡ Π΄Π° Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈΡΠ°ΠΌ, ΡΠ΅Π·ΡΠ»ΡΠ°ΡΡΡ ΠΎΡ ΠΊΠΎΠ΅ΡΠΎ Π±ΡΡ Π° Π±Π΅Π·Π±ΡΠΎΠΉ ΠΏΡΠ΅ΡΠΊΠΈ. Π ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠ° Π½Π° ΠΌΠΎΠ΅ΡΠΎ ΡΠ°ΠΌΠΎΠΈΠ·ΡΠ΅Π·Π°Π½ΠΈΠ΅ ΠΈΠ·Π»Π΅Π·Π΅ ΡΠ»Π΅Π΄Π½ΠΈΡΡ Π°Π»Π³ΠΎΡΠΈΡΡΠΌ:
Π‘ΡΠ°ΡΡΠΈΡΠ°ΠΌΠ΅ Docker ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ Π² ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π΅Π½ ΡΠ΅ΠΆΠΈΠΌ.
docker run --privileged -it docker:18.09.6ΠΠ±ΡΡΠ½Π΅ΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π²Π΅ΡΡΠΈΡΡΠ° Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°, Π²ΡΡΠΊΠ° ΡΡΡΠΏΠΊΠ° Π½Π°Π»ΡΠ²ΠΎ ΠΈΠ»ΠΈ Π½Π°Π΄ΡΡΠ½ΠΎ ΠΈ Π²Π°ΡΠΈΡΡ DinD ΡΠ΅ ΠΏΡΠ΅Π²ΡΡΡΠ° Π² ΡΠΈΠΊΠ²Π°. ΠΡΡΡΠ½ΠΎΡΡ, Π²ΡΠΈΡΠΊΠΎ ΡΠ΅ΡΡΠΎ ΡΠ΅ ΡΡΡΠΏΠ²Π° Ρ ΠΈΠ·Π»ΠΈΠ·Π°Π½Π΅ΡΠΎ Π½Π° Π½ΠΎΠ²Π° Π²Π΅ΡΡΠΈΡ.
Π’ΡΡΠ±Π²Π° Π΄Π° ΠΏΠΎΠΏΠ°Π΄Π½Π΅ΠΌ Π½Π°ΠΏΡΠ°Π²ΠΎ Π² shell.ΠΠΏΠΈΡΠ²Π°ΠΌΠ΅ Π΄Π° ΡΠ°Π·Π±Π΅ΡΠ΅ΠΌ ΠΊΠ°ΠΊΠ²ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ ΡΠ° ΡΡΠ°ΡΡΠΈΡΠ°Π½ΠΈ (ΠΡΠ³ΠΎΠ²ΠΎΡ: Π½ΠΈΠΊΠ°ΠΊΠ²ΠΈ), Π½ΠΎ Π½Π΅ΠΊΠ° Π²ΡΠ΅ ΠΏΠ°ΠΊ ΠΈΠ·ΠΏΡΠ»Π½ΠΈΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ°:
docker psΠ©Π΅ Π±ΡΠ΄Π΅ΡΠ΅ ΠΌΠ°Π»ΠΊΠΎ ΠΈΠ·Π½Π΅Π½Π°Π΄Π°Π½ΠΈ, Π½ΠΎ ΡΠ΅ ΠΎΠΊΠ°Π·Π²Π°, ΡΠ΅ Docker Π΄Π΅ΠΌΠΎΠ½ΡΡ Π΄ΠΎΡΠΈ Π½Π΅ Π΅ ΡΡΠ°ΡΡΠΈΡΠ°Π½:
error during connect: Get http://docker:2375/v1.40/containers/json: dial tcp: lookup docker on 192.168.65.1:53: no such hostΠΠ΅ΠΊΠ° Π³ΠΎ ΡΡΠ°ΡΡΠΈΡΠ°ΠΌΠ΅ ΡΠ°ΠΌΠΈ:
dockerd &ΠΡΠ΅ Π΅Π΄Π½ΠΎ Π½Π΅ΠΏΡΠΈΡΡΠ½ΠΎ ΠΈΠ·Π½Π΅Π½Π°Π΄Π²Π°Π½Π΅:
failed to start daemon: Error initializing network controller: error obtaining controller instance: failed to create NAT chain DOCKER: Iptables not foundΠΠ½ΡΡΠ°Π»ΠΈΡΠ°ΠΌΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠΈΡΠ΅ iptables ΠΈ bash (Π² bash Π΅ Π²ΠΈΠ½Π°Π³ΠΈ ΠΏΠΎ-ΠΏΡΠΈΡΡΠ½ΠΎ, ΠΎΡΠΊΠΎΠ»ΠΊΠΎΡΠΎ Π² sh):
apk add --no-cache iptables bashΠ‘ΡΠ°ΡΡΠΈΡΠ°ΠΌΠ΅ bash. ΠΠ°ΠΊΡΠ°Ρ ΡΠΌΠ΅ ΠΎΡΠ½ΠΎΠ²ΠΎ Π² ΠΏΠΎΠ·Π½Π°ΡΠΈΡ shell
ΠΎΠΏΠΈΡΠ²Π°ΠΌΠ΅ ΠΎΡΠ½ΠΎΠ²ΠΎ Π΄Π° ΡΡΠ°ΡΡΠΈΡΠ°ΠΌΠ΅ Docker:
dockerd &Π’ΡΡΠ±Π²Π° Π΄Π° Π²ΠΈΠ΄ΠΈΠΌ Π΄ΡΠ»Π³Π° ΠΏΠΎΡΠ΅Π΄ΠΈΡΠ° ΠΎΡ Π»ΠΎΠ³ΠΎΠ²Π΅, Π·Π°Π²ΡΡΡΠ²Π°ΡΠ° Ρ:
INFO[2019-11-25T19:51:19.448080400Z] Daemon has completed initialization INFO[2019-11-25T19:51:19.474439300Z] API listen on /var/run/docker.sockΠΠ°ΡΠΈΡΠΊΠ°ΠΌΠ΅ Enter. ΠΡΠ½ΠΎΠ²ΠΎ ΡΠΌΠ΅ Π² bash.
ΠΠ°ΠΏΠΎΡΠ²Π°ΠΉΠΊΠΈ ΠΎΡ ΡΠΎΠ·ΠΈ ΠΌΠΎΠΌΠ΅Π½Ρ, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΎΠΏΠΈΡΠ²Π°ΠΌΠ΅ Π΄Π° ΡΡΠ°ΡΡΠΈΡΠ°ΠΌΠ΅ Π΄ΡΡΠ³ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ Π² Π½Π°ΡΠΈΡ Docker ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ, Π½ΠΎ ΠΊΠ°ΠΊΠ²ΠΎ ΡΠ΅ ΡΡΠ°Π½Π΅, Π°ΠΊΠΎ ΠΈΡΠΊΠ°ΠΌΠ΅ Π΄Π° Π²Π΄ΠΈΠ³Π½Π΅ΠΌ ΠΎΡΠ΅ Π΅Π΄ΠΈΠ½ Docker ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ Π²ΡΡΡΠ΅ Π² Π½Π°ΡΠΈΡ Docker ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ ΠΈΠ»ΠΈ Π½Π΅ΡΠΎ Π½Π΅ Π²ΡΡΠ²ΠΈ ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡΡ "ΠΈΠ·Π»ΠΈΡΠ°"? ΠΠ°ΠΏΠΎΡΠ²Π°ΠΌΠ΅ ΠΎΡΠ½Π°ΡΠ°Π»ΠΎ.
Π‘ΠΎΠ±ΡΡΠ²Π΅Π½ DinD ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ ΠΈ Π½ΠΎΠ²ΠΈ Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈ
ΠΠ° Π΄Π° Π½Π΅ ΠΏΠΎΠ²ΡΠ°ΡΡΠΌ ΡΡΡΠΏΠΊΠΈΡΠ΅ ΠΎΡΠ³ΠΎΡΠ΅ ΠΎΡΠ½ΠΎΠ²ΠΎ ΠΈ ΠΎΡΠ½ΠΎΠ²ΠΎ, ΡΡΠ·Π΄Π°Π΄ΠΎΡ
ΡΠΎΠ±ΡΡΠ²Π΅Π½ DinD ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ:
Π Π°Π±ΠΎΡΠ½ΠΎΡΠΎ DinD ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΌΠΈ Π΄Π°Π΄Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π΄Π° ΡΡΠ°ΡΡΠΈΡΠ°ΠΌ Docker Π²ΡΡΡΠ΅ Π² Docker ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΠΎ ΠΈ Π΄Π° ΠΏΡΠΎΠ²Π΅ΠΆΠ΄Π°ΠΌ ΠΏΠΎ-ΡΠΌΠ΅Π»ΠΈ Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈ.
ΠΠ΄ΠΈΠ½ ΡΠ°ΠΊΡΠ² (ΡΡΠΏΠ΅ΡΠ΅Π½) Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½Ρ Ρ MySQL ΠΈ Nodejs ΡΠ΅Π³Π° ΡΠ΅ ΠΎΠΏΠΈΡΠ°.
ΠΠ°ΠΉ-Π½Π΅ΡΡΡΠΏΠ΅Π»ΠΈΠ²ΠΈΡΠ΅ ΠΌΠΎΠ³Π°Ρ Π΄Π° Π²ΠΈΠ΄ΡΡ ΠΊΠ°ΠΊ Π±Π΅ΡΠ΅ ΡΡΠΊ

Π ΡΠ°ΠΊΠ°, Π΄Π° Π·Π°ΠΏΠΎΡΠ½Π΅ΠΌ:
Π‘ΡΠ°ΡΡΠΈΡΠ°ΠΌΠ΅ DinD Π² ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π΅Π½ ΡΠ΅ΠΆΠΈΠΌ. Π ΡΠ°Π·ΠΈ Π²Π΅ΡΡΠΈΡ Π½Π° DinD ΡΡΡΠ±Π²Π° ΡΡΡΠ½ΠΎ Π΄Π° ΠΌΠ°ΠΏΠ²Π°ΠΌΠ΅ Π²ΡΠΈΡΠΊΠΈΡΠ΅ ΠΏΠΎΡΡΠΎΠ²Π΅, ΠΊΠΎΠΈΡΠΎ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΎΡ Π½Π°ΡΠΈΡΠ΅ Π΄ΡΡΠ΅ΡΠ½ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ (ΡΠ°Π±ΠΎΡΡ Π½Π°Π΄ ΡΠΎΠ²Π°)
docker run --privileged -it -p 80:8080 -p 3306:3306 alekslitvinenk/dindΠΠ»ΠΈΠ·Π°ΠΌΠ΅ Π² Π΅Π΄ΠΈΠ½ Π±Π°Ρ, ΠΎΡ ΠΊΠΎΠΉΡΠΎ ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° Π·Π°ΠΏΠΎΡΠ½Π΅ΠΌ Π²Π΅Π΄Π½Π°Π³Π° Ρ ΠΏΡΡΠΊΠ°Π½Π΅ΡΠΎ Π½Π° Π΄ΡΡΠ΅ΡΠ½ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ.
Π‘ΡΠ°ΡΡΠΈΡΠ°ΠΌΠ΅ MySQL:
docker run --name mysql -e MYSQL_ROOT_PASSWORD=strongpassword -d -p 3306:3306 mysqlΠ‘Π²ΡΡΠ·Π²Π°ΠΌΠ΅ ΡΠ΅ Ρ Π±Π°Π·Π°ΡΠ° Π΄Π°Π½Π½ΠΈ ΠΏΠΎ ΡΡΡΠΈΡ Π½Π°ΡΠΈΠ½, ΠΊΠ°ΠΊΡΠΎ Π±ΠΈΡ ΠΌΠ΅ ΡΠ΅ ΡΠ²ΡΡΠ·Π°Π»ΠΈ Π»ΠΎΠΊΠ°Π»Π½ΠΎ. Π£Π±Π΅Π΄ΡΠ²Π°ΠΌΠ΅ ΡΠ΅, ΡΠ΅ Π²ΡΠΈΡΠΊΠΎ ΡΠ°Π±ΠΎΡΠΈ.
Π‘ΡΠ°ΡΡΠΈΡΠ°ΠΌΠ΅ Π²ΡΠΎΡΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ:
docker run -d --rm -p 8080:8080 alekslitvinenk/hello-world-nodejs-serverΠΠ±ΡΡΠ½Π΅ΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΡΠ΅ ΠΊΠ°ΡΡΠΎΠ³ΡΠ°ΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΠΏΠΎΡΡΠ° ΡΡΠΊ ΡΠ΅ Π±ΡΠ΄Π΅ ΠΈΠΌΠ΅Π½Π½ΠΎ 8080:8080, ΡΡΠΉ ΠΊΠ°ΡΠΎ Π²Π΅ΡΠ΅ ΡΠΌΠ΅ ΠΊΠ°ΡΡΠΎΠ³ΡΠ°ΡΠΈΡΠ°Π»ΠΈ ΠΏΠΎΡΡ 80 ΠΎΡ Ρ ΠΎΡΡΠ° Π² ΡΠΎΠ΄ΠΈΡΠ΅Π»ΡΠΊΠΈΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ Π½Π° ΠΏΠΎΡΡ 8080.
ΠΡΠΈΠ²Π°ΠΌΠ΅ Π½Π° localhost Π² Π±ΡΠ°ΡΠ·ΡΡΠ° ΠΈ ΡΠ΅ ΡΠ±Π΅Π΄ΡΠ²Π°ΠΌΠ΅, ΡΠ΅ ΡΡΡΠ²ΡΡΡΡ ΠΎΡΠ³ΠΎΠ²Π°ΡΡ Ρ "Hello World!".
Π ΠΌΠΎΡ ΡΠ»ΡΡΠ°ΠΉ Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΡΡ Ρ Π²Π»ΠΎΠΆΠ΅Π½ΠΈ Docker ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ ΡΠ΅ ΠΎΠΊΠ°Π·Π° Π΄ΠΎΡΡΠ° ΠΏΠΎΠ»ΠΎΠΆΠΈΡΠ΅Π»Π΅Π½ ΠΈ ΡΠ΅ ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠ° Π΄Π° ΡΠ°Π·Π²ΠΈΠ²Π°ΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΠΈ Π΄Π° Π³ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌ Π·Π° ΡΡΠ΅ΠΉΠ΄ΠΆΠΈΠ½Π³. Π‘ΠΌΡΡΠ°ΠΌ, ΡΠ΅ ΡΠΎΠ²Π° Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎ-Π»Π΅ΠΊΠΎ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΎΡ Kubernetes ΠΈ Jenkins X. ΠΠΎ ΡΠΎΠ²Π° Π΅ ΠΌΠΎΠ΅ ΡΡΠ±Π΅ΠΊΡΠΈΠ²Π½ΠΎ ΠΌΠ½Π΅Π½ΠΈΠ΅.
ΠΠΈΡΠ»Ρ, ΡΠ΅ ΡΠΎΠ²Π° Π΅ Π²ΡΠΈΡΠΊΠΎ Π·Π° Π΄Π½Π΅ΡΠ½Π°ΡΠ° ΡΡΠ°ΡΠΈΡ. Π ΡΠ»Π΅Π΄Π²Π°ΡΠ°ΡΠ° ΡΡΠ°ΡΠΈΡ ΡΠ΅ ΠΎΠΏΠΈΡΠ° ΠΏΠΎ-ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠΈΡΠ΅ Ρ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΠΎΡΠΎ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° Docker Π² Docker ΠΈ ΠΌΠΎΠ½ΡΠΈΡΠ°Π½Π΅ Π½Π° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ Π½Π°Π²ΡΡΡΠ΅ Π² Π²Π»ΠΎΠΆΠ΅Π½ΠΈΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈ.
P.S. ΠΠΊΠΎ ΡΠΌΡΡΠ°ΡΠ΅, ΡΠ΅ ΡΠΎΠ·ΠΈ ΠΏΡΠΎΠ΅ΠΊΡ Π΅ ΠΏΠΎΠ»Π΅Π·Π΅Π½, ΠΌΠΎΠ»Ρ, Π΄Π°ΠΉΡΠ΅ ΠΌΡ Π·Π²Π΅Π·Π΄Π° Π² GitHub, Π½Π°ΠΏΡΠ°Π²Π΅ΡΠ΅ ΡΠΎΡΠΊ ΠΈ ΡΠ°Π·ΠΊΠ°ΠΆΠ΅ΡΠ΅ Π½Π° ΠΏΡΠΈΡΡΠ΅Π»ΠΈΡΠ΅ ΡΠΈ.
Edit1 ΠΠΎΠΏΡΠ°Π²ΠΈΡ Π³ΡΠ΅ΡΠΊΠΈ, ΡΠΎΠΊΡΡΠΈΡΠ°Ρ ΡΠ΅ Π²ΡΡΡ Ρ 2 Π²ΠΈΠ΄Π΅Π°
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: habr.com
