15%

Π—Π°ΠΎΡ‰Π°Π΄ΠΆΡƒΠΉΡ‚Π΅ 15% Π½Π° всіх послугах хостингу

ΠŸΠ΅Ρ€Π΅Π²Ρ–Ρ€Ρ‚Π΅ свої Π½Π°Π²ΠΈΡ‡ΠΊΠΈ Ρ‚Π° ΠΎΡ‚Ρ€ΠΈΠΌΠ°ΠΉΡ‚Π΅ Π—Π½ΠΈΠΆΠΊΡƒ Π½Π° Π±ΡƒΠ΄ΡŒ-який Ρ‚Π°Ρ€ΠΈΡ„Π½ΠΈΠΉ ΠΏΠ»Π°Π½

Використовуй ΠΊΠΎΠ΄:

Skills
ΠŸΠΎΡ‡Π°Ρ‚ΠΈ
20.11.2024

Π©ΠΎ Ρ‚Π°ΠΊΠ΅ Docker Ρ– як Π²Ρ–Π½ ΠΏΡ€Π°Ρ†ΡŽΡ”

Docker – Ρ†Π΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° Π· Π²Ρ–Π΄ΠΊΡ€ΠΈΡ‚ΠΈΠΌ Π²ΠΈΡ…Ρ–Π΄Π½ΠΈΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, яка Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΡƒΡ” розгортання, ΠΌΠ°ΡΡˆΡ‚Π°Π±ΡƒΠ²Π°Π½Π½Ρ Ρ‚Π° управління Π΄ΠΎΠ΄Π°Ρ‚ΠΊΠ°ΠΌΠΈ Π² Π»Π΅Π³ΠΊΠΈΡ…, ΠΏΠΎΡ€Ρ‚Π°Ρ‚ΠΈΠ²Π½ΠΈΡ… ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°Ρ…. ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ Ρ–Π½ΠΊΠ°ΠΏΡΡƒΠ»ΡŽΡŽΡ‚ΡŒ Π΄ΠΎΠ΄Π°Ρ‚ΠΎΠΊ Ρ‚Π° ΠΉΠΎΠ³ΠΎ залСТності, Π·Π°Π±Π΅Π·ΠΏΠ΅Ρ‡ΡƒΡŽΡ‡ΠΈ ΠΉΠΎΠ³ΠΎ послідовну Ρ€ΠΎΠ±ΠΎΡ‚Ρƒ Π² Ρ€Ρ–Π·Π½ΠΈΡ… сСрСдовищах, Π²Ρ–Π΄ Ρ€ΠΎΠ·Ρ€ΠΎΠ±ΠΊΠΈ Π΄ΠΎ Π²ΠΈΡ€ΠΎΠ±Π½ΠΈΡ†Ρ‚Π²Π°. Π£ Ρ†Ρ–ΠΉ статті ΠΌΠΈ розглянСмо, Ρ‰ΠΎ Ρ‚Π°ΠΊΠ΅ Docker, як Π²Ρ–Π½ ΠΏΡ€Π°Ρ†ΡŽΡ” Ρ‚Π° які ΠΉΠΎΠ³ΠΎ ΠΏΠ΅Ρ€Π΅Π²Π°Π³ΠΈ.

1. Розуміння Docker

Docker ΠΏΡ€ΠΈΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ для спрощСння розгортання Π΄ΠΎΠ΄Π°Ρ‚ΠΊΡ–Π² Π·Π° допомогою Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³Ρ–Ρ— ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΠ·Π°Ρ†Ρ–Ρ—. На Π²Ρ–Π΄ΠΌΡ–Π½Ρƒ Π²Ρ–Π΄ Ρ‚Ρ€Π°Π΄ΠΈΡ†Ρ–ΠΉΠ½ΠΈΡ… Π²Ρ–Ρ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΈΡ… машин (Π’Πœ), які Π²ΠΈΠΌΠ°Π³Π°ΡŽΡ‚ΡŒ ΠΏΠΎΠ²Π½ΠΎΡ†Ρ–Π½Π½ΠΎΡ— ΠΎΠΏΠ΅Ρ€Π°Ρ†Ρ–ΠΉΠ½ΠΎΡ— систСми для ΠΊΠΎΠΆΠ½ΠΎΠ³ΠΎ СкзСмпляра, ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ Docker Π²ΠΈΠΊΠΎΡ€ΠΈΡΡ‚ΠΎΠ²ΡƒΡŽΡ‚ΡŒ ядро хостової ОБ, Π·Π±Π΅Ρ€Ρ–Π³Π°ΡŽΡ‡ΠΈ ΠΏΡ€ΠΈ Ρ†ΡŒΠΎΠΌΡƒ Ρ–Π·ΠΎΠ»ΡΡ†Ρ–ΡŽ. Π¦Π΅ дозволяє Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½Ρ–ΡˆΠ΅ використовувати рСсурси Ρ– швидшС Ρ€ΠΎΠ·Π³ΠΎΡ€Ρ‚Π°Ρ‚ΠΈ Π΄ΠΎΠ΄Π°Ρ‚ΠΊΠΈ.

2. ΠšΠ»ΡŽΡ‡ΠΎΠ²Ρ– ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ Docker

2.1. Π”Π²ΠΈΠΆΠΎΠΊ Docker

Docker Engine – Ρ†Π΅ основний ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, який запускає ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ Ρ‚Π° ΠΊΠ΅Ρ€ΡƒΡ” Π½ΠΈΠΌΠΈ. Π’Ρ–Π½ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ” Π² сСбС

  • Docker Daemon: Π€ΠΎΠ½ΠΎΠ²Π° слуТба, яка ΠΊΠ΅Ρ€ΡƒΡ” ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°ΠΌΠΈ Docker.
  • Docker CLI (інтСрфСйс ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠ³ΠΎ рядка): ІнструмСнт ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠ³ΠΎ рядка, який дозволяє користувачам взаємодіяти Π· Docker Daemon для створСння, кСрування Ρ‚Π° запуску ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ–Π².

2.2. ΠžΠ±Ρ€Π°Π·ΠΈ Docker

ΠžΠ±Ρ€Π°Π·ΠΈ Π΄ΠΎΠΊΠ΅Ρ€Ρ–Π² – Ρ†Π΅ шаблони, доступні лишС для читання, які Π²ΠΈΠΊΠΎΡ€ΠΈΡΡ‚ΠΎΠ²ΡƒΡŽΡ‚ΡŒΡΡ для створСння ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ–Π². ΠžΠ±Ρ€Π°Π· ΠΌΡ–ΡΡ‚ΠΈΡ‚ΡŒ всС Π½Π΅ΠΎΠ±Ρ…Ρ–Π΄Π½Π΅ для запуску ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈ, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‡ΠΈ ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈ, Π±Ρ–Π±Π»Ρ–ΠΎΡ‚Π΅ΠΊΠΈ, залСТності Ρ‚Π° Π·ΠΌΡ–Π½Π½Ρ– оточСння. ΠžΠ±Ρ€Π°Π·ΠΈ Π·Π±ΠΈΡ€Π°ΡŽΡ‚ΡŒΡΡ Π· Docker-Ρ„Π°ΠΉΠ»Ρƒ, який ΠΌΡ–ΡΡ‚ΠΈΡ‚ΡŒ інструкції Π·Ρ– збирання ΠΎΠ±Ρ€Π°Π·Ρƒ.

2.3. Docker Hub

Docker Hub – Ρ†Π΅ Ρ…ΠΌΠ°Ρ€Π½ΠΈΠΉ рСєстр, який дозволяє користувачам ділитися Ρ– ΠΏΠΎΡˆΠΈΡ€ΡŽΠ²Π°Ρ‚ΠΈ ΠΎΠ±Ρ€Π°Π·ΠΈ Docker. Π’Ρ–Π½ Π½Π°Π΄Π°Ρ” сховищС для збСрігання Ρ‚Π° кСрування ΠΎΠ±Ρ€Π°Π·Π°ΠΌΠΈ, Ρ‰ΠΎ дозволяє Π»Π΅Π³ΠΊΠΎ витягувати ΠΎΠ±Ρ€Π°Π·ΠΈ Π· рСєстру для розгортання ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌ.

3. Π―ΠΊ ΠΏΡ€Π°Ρ†ΡŽΡ” Docker

ΠšΡ€ΠΎΠΊ 1: БтворСння Π΄ΠΎΠΊΠ΅Ρ€-Ρ„Π°ΠΉΠ»Ρƒ

Docker-Ρ„Π°ΠΉΠ» – Ρ†Π΅ скрипт, який ΠΌΡ–ΡΡ‚ΠΈΡ‚ΡŒ інструкції ΠΏΡ€ΠΎ Ρ‚Π΅, як створити ΠΎΠ±Ρ€Π°Π· Docker. Наприклад, простий Docker-Ρ„Π°ΠΉΠ» для створСння ΠΎΠ±Ρ€Π°Π·Ρƒ Π²Π΅Π±-Π΄ΠΎΠ΄Π°Ρ‚ΠΊΡƒ ΠΌΠΎΠΆΠ΅ виглядати Ρ‚Π°ΠΊ:

# ВикористовуйтС ΠΎΡ„Ρ–Ρ†Ρ–ΠΉΠ½Π΅ сСрСдовищС виконання Node.js як Π±Π°Ρ‚ΡŒΠΊΡ–Π²ΡΡŒΠΊΠΈΠΉ ΠΎΠ±Ρ€Π°Π· FROM node:14 # Π’ΡΡ‚Π°Π½ΠΎΠ²Ρ–Ρ‚ΡŒ Ρ€ΠΎΠ±ΠΎΡ‡Ρƒ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€Ρ–ΡŽ Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ– WORKDIR /usr/src/app # Π‘ΠΊΠΎΠΏΡ–ΡŽΠΉΡ‚Π΅ package.json Ρ– Π²ΡΡ‚Π°Π½ΠΎΠ²Ρ–Ρ‚ΡŒ залСТності COPY package*.json ./ RUN npm install # Π‘ΠΊΠΎΠΏΡ–ΡŽΠΉΡ‚Π΅ Ρ€Π΅ΡˆΡ‚Ρƒ ΠΊΠΎΠ΄Ρƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈ COPY . . # Π’Ρ–Π΄ΠΊΡ€ΠΈΠ²Π°Ρ”ΠΌΠΎ ΠΏΠΎΡ€Ρ‚, Π½Π° якому ΠΏΡ€Π°Ρ†ΡŽΡ” Π΄ΠΎΠ΄Π°Ρ‚ΠΎΠΊ EXPOSE 8080 # Команда для запуску Π΄ΠΎΠ΄Π°Ρ‚ΠΊΡƒ CMD [“node”, “app.js”]

ΠšΡ€ΠΎΠΊ 2: БтворСння ΠΎΠ±Ρ€Π°Π·Ρƒ Docker

ΠŸΡ–ΡΠ»Ρ створСння Docker-Ρ„Π°ΠΉΠ»Ρƒ Π²ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ створити ΠΎΠ±Ρ€Π°Π· Docker Π·Π° допомогою наступної ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ:

docker build -t my-app .

Ця ΠΊΠΎΠΌΠ°Π½Π΄Π° Π²ΠΊΠ°Π·ΡƒΡ” Docker Π·Ρ–Π±Ρ€Π°Ρ‚ΠΈ ΠΎΠ±Ρ€Π°Π· Π· назвою my-app, Π²ΠΈΠΊΠΎΡ€ΠΈΡΡ‚ΠΎΠ²ΡƒΡŽΡ‡ΠΈ Dockerfile Ρƒ ΠΏΠΎΡ‚ΠΎΡ‡Π½ΠΎΠΌΡƒ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ·Ρ–.

ΠšΡ€ΠΎΠΊ 3: Запуск ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° Docker

ΠŸΡ–ΡΠ»Ρ створСння ΠΎΠ±Ρ€Π°Π·Ρƒ Π²ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ запустити ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ Π½Π° основі Ρ†ΡŒΠΎΠ³ΠΎ ΠΎΠ±Ρ€Π°Π·Ρƒ:

docker run -p 8080:8080 my-app

Ця ΠΊΠΎΠΌΠ°Π½Π΄Π° запускає Π½ΠΎΠ²ΠΈΠΉ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ Π· ΠΎΠ±Ρ€Π°Π·Ρƒ my-app Ρ– зіставляє ΠΏΠΎΡ€Ρ‚ 8080 Π½Π° хості Π· ΠΏΠΎΡ€Ρ‚ΠΎΠΌ 8080 Ρƒ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ–.

4. ΠŸΠ΅Ρ€Π΅Π²Π°Π³ΠΈ використання Docker

  • ΠŸΠ΅Ρ€Π΅Π½ΠΎΡΠΈΠΌΡ–ΡΡ‚ΡŒ: ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ Docker ΠΌΠΎΠΆΡƒΡ‚ΡŒ ΠΏΡ€Π°Ρ†ΡŽΠ²Π°Ρ‚ΠΈ Π½Π° Π±ΡƒΠ΄ΡŒ-якій систСмі, Π΄Π΅ встановлСно Docker, Ρ‰ΠΎ ΠΏΠΎΠ»Π΅Π³ΡˆΡƒΡ” пСрСміщСння ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌ ΠΌΡ–ΠΆ сСрСдовищами.
  • Π£Π·Π³ΠΎΠ΄ΠΆΠ΅Π½Ρ–ΡΡ‚ΡŒ: Docker Π³Π°Ρ€Π°Π½Ρ‚ΡƒΡ”, Ρ‰ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈ ΠΏΡ€Π°Ρ†ΡŽΡŽΡ‚ΡŒ ΠΎΠ΄Π½Π°ΠΊΠΎΠ²ΠΎ Ρƒ Ρ€Ρ–Π·Π½ΠΈΡ… сСрСдовищах, Π·ΠΌΠ΅Π½ΡˆΡƒΡŽΡ‡ΠΈ ΠΊΡ–Π»ΡŒΠΊΡ–ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, ΠΏΠΎΠ²’язаних Π· Ρ‚ΠΈΠΌ, Ρ‰ΠΎ “Ρ†Π΅ ΠΏΡ€Π°Ρ†ΡŽΡ” Π½Π° ΠΌΠΎΡ—ΠΉ ΠΌΠ°ΡˆΠΈΠ½Ρ–”.
  • Ізоляція: КоТСн ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ ΠΏΡ€Π°Ρ†ΡŽΡ” Ρƒ власному сСрСдовищі, Ρ‰ΠΎ дозволяє Π΄Π΅ΠΊΡ–Π»ΡŒΠΊΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°ΠΌ співіснувати Π½Π° ΠΎΠ΄Π½ΠΎΠΌΡƒ хості Π±Π΅Π· ΠΊΠΎΠ½Ρ„Π»Ρ–ΠΊΡ‚Ρ–Π².
  • Π•Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½Ρ–ΡΡ‚ΡŒ використання рСсурсів: ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ Π»Π΅Π³ΠΊΡ– Ρ‚Π° Π²ΠΈΠΊΠΎΡ€ΠΈΡΡ‚ΠΎΠ²ΡƒΡŽΡ‚ΡŒ ядро хостової ОБ, Ρ‰ΠΎ ΠΏΡ€ΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ Π΄ΠΎ ΠΊΡ€Π°Ρ‰ΠΎΠ³ΠΎ використання рСсурсів Ρƒ порівнянні Π· Ρ‚Ρ€Π°Π΄ΠΈΡ†Ρ–ΠΉΠ½ΠΈΠΌΠΈ Π²Ρ–Ρ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΈΠΌΠΈ машинами.

5. Висновок

Docker – Ρ†Π΅ ΠΏΠΎΡ‚ΡƒΠΆΠ½ΠΈΠΉ інструмСнт для Ρ€ΠΎΠ·Ρ€ΠΎΠ±Π½ΠΈΠΊΡ–Π² Ρ‚Π° систСмних адміністраторів, який спрощує процСс розгортання Ρ‚Π° кСрування Π΄ΠΎΠ΄Π°Ρ‚ΠΊΠ°ΠΌΠΈ. Π’ΠΈΠΊΠΎΡ€ΠΈΡΡ‚ΠΎΠ²ΡƒΡŽΡ‡ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ, Docker Π·Π°Π±Π΅Π·ΠΏΠ΅Ρ‡ΡƒΡ” послідовний Ρ‚Π° Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΈΠΉ спосіб пакування Ρ‚Π° запуску Π΄ΠΎΠ΄Π°Ρ‚ΠΊΡ–Π² Ρƒ Ρ€Ρ–Π·Π½ΠΈΡ… сСрСдовищах. Розуміння Docker Ρ‚Π° ΠΉΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ–Π² ΠΌΠΎΠΆΠ΅ Π·Π½Π°Ρ‡Π½ΠΎ ΠΏΠΎΠΊΡ€Π°Ρ‰ΠΈΡ‚ΠΈ Π²Π°ΡˆΡ– Ρ€ΠΎΠ±ΠΎΡ‡Ρ– процСси Ρ€ΠΎΠ·Ρ€ΠΎΠ±ΠΊΠΈ Ρ‚Π° розгортання.

15%

Π—Π°ΠΎΡ‰Π°Π΄ΠΆΡƒΠΉΡ‚Π΅ 15% Π½Π° всіх послугах хостингу

ΠŸΠ΅Ρ€Π΅Π²Ρ–Ρ€Ρ‚Π΅ свої Π½Π°Π²ΠΈΡ‡ΠΊΠΈ Ρ‚Π° ΠΎΡ‚Ρ€ΠΈΠΌΠ°ΠΉΡ‚Π΅ Π—Π½ΠΈΠΆΠΊΡƒ Π½Π° Π±ΡƒΠ΄ΡŒ-який Ρ‚Π°Ρ€ΠΈΡ„Π½ΠΈΠΉ ΠΏΠ»Π°Π½

Використовуй ΠΊΠΎΠ΄:

Skills
ΠŸΠΎΡ‡Π°Ρ‚ΠΈ