15%

БпСстСтС 15% ΠΎΡ‚ всички услуги Π·Π° хостинг

ВСствайтС умСнията си ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Ρ‚Π΅ ΠΎΡ‚ΡΡ‚ΡŠΠΏΠΊΠ° Π·Π° всСки хостинг ΠΏΠ»Π°Π½

Π˜Π·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ ΠΊΠΎΠ΄:

Skills
Π—Π° Π½Π°Ρ‡Π°Π»ΠΎ
20.11.2024

Какво Π΅ Docker ΠΈ ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚ΠΈ

Docker Π΅ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° с ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ ΠΊΠΎΠ΄, която Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€Π° внСдряванСто, ΠΌΠ°Ρ‰Π°Π±ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° прилоТСния Π² Π»Π΅ΠΊΠΈ, прСносими ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ. ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΡ‚Π΅ капсулират Π΄Π°Π΄Π΅Π½ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Π½Π΅Π³ΠΎΠ²ΠΈΡ‚Π΅ зависимости, ΠΊΠ°Ρ‚ΠΎ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€Π°Ρ‚, Ρ‡Π΅ Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚ΠΈ послСдоватСлно Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ срСди – ΠΎΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π΄ΠΎ производството. Π’ Ρ‚Π°Π·ΠΈ статия Ρ‰Π΅ Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ ΠΊΠ°ΠΊΠ²ΠΎ прСдставлява Docker, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚ΠΈ ΠΈ ΠΊΠ°ΠΊΠ²ΠΈ са ΠΏΠΎΠ»Π·ΠΈΡ‚Π΅ ΠΎΡ‚ Π½Π΅Π³ΠΎ.

1. Π Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π½Π° Docker

Docker Π΅ създадСн, Π·Π° Π΄Π° опрости Ρ€Π°Π·Π³Ρ€ΡŠΡ‰Π°Π½Π΅Ρ‚ΠΎ Π½Π° прилоТСния Ρ‡Ρ€Π΅Π· ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° тСхнологията Π·Π° контСйнСризация. Π—Π° Ρ€Π°Π·Π»ΠΈΠΊΠ° ΠΎΡ‚ Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΈΡ‚Π΅ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½ΠΈ машини (VM), ΠΊΠΎΠΈΡ‚ΠΎ изискват пълна ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π° систСма Π·Π° всСки СкзСмпляр, ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΡ‚Π΅ Docker сподСлят ядрото Π½Π° хост ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π°Ρ‚Π° систСма, ΠΊΠ°Ρ‚ΠΎ ΡΡŠΡ‰Π΅Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Ρ‚ изолация. Π’ΠΎΠ²Π° позволява ΠΏΠΎ-Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° рСсурситС ΠΈ ΠΏΠΎ-Π±ΡŠΡ€Π·ΠΎ Ρ€Π°Π·Π³Ρ€ΡŠΡ‰Π°Π½Π΅ Π½Π° прилоТСнията.

2. Основни ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ Π½Π° Docker

2.1. Π”Π²ΠΈΠ³Π°Ρ‚Π΅Π» Π½Π° Docker

ДвигатСлят Π½Π° Docker Π΅ основният ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, ΠΊΠΎΠΉΡ‚ΠΎ стартира ΠΈ управлява ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ. Π’ΠΎΠΉ Π²ΠΊΠ»ΡŽΡ‡Π²Π°:

  • Docker Daemon: Π€ΠΎΠ½ΠΎΠ²Π° услуга, която управлява ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΡ‚Π΅ Docker.
  • Docker CLI (интСрфСйс Π½Π° командния Ρ€Π΅Π΄): Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ Π·Π° ΠΊΠΎΠΌΠ°Π½Π΄Π΅Π½ Ρ€Π΅Π΄, ΠΊΠΎΠΉΡ‚ΠΎ позволява Π½Π° ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈΡ‚Π΅ Π΄Π° взаимодСйстват с Docker Daemon Π·Π° създаванС, ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈ стартиранС Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ.

2.2. Π˜Π·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡ Π½Π° Docker

ΠžΠ±Ρ€Π°Π·ΠΈΡ‚Π΅ Π½Π° Docker са шаблони само Π·Π° Ρ‡Π΅Ρ‚Π΅Π½Π΅, ΠΊΠΎΠΈΡ‚ΠΎ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π·Π° създаванС Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ. ΠžΠ±Ρ€Π°Π·ΡŠΡ‚ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° всичко Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π° стартиранС Π½Π° Π΄Π°Π΄Π΅Π½ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΊΠΎΠ΄Π° Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, зависимости ΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π½Π° срСдата. ΠžΠ±Ρ€Π°Π·ΠΈΡ‚Π΅ сС ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Ρ‚ ΠΎΡ‚ Dockerfile, ΠΊΠΎΠΉΡ‚ΠΎ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° инструкции Π·Π° сглобяванС Π½Π° ΠΎΠ±Ρ€Π°Π·Π°.

2.3. Docker Hub

Docker Hub Π΅ ΠΎΠ±Π»Π°Ρ‡Π½ΠΎ Π±Π°Π·ΠΈΡ€Π°Π½ Ρ€Π΅Π³ΠΈΡΡ‚ΡŠΡ€, ΠΊΠΎΠΉΡ‚ΠΎ позволява Π½Π° ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈΡ‚Π΅ Π΄Π° сподСлят ΠΈ разпространяват ΠΎΠ±Ρ€Π°Π·ΠΈ Π½Π° Docker. Π’ΠΎΠΉ прСдоставя Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π·Π° ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΎΠ±Ρ€Π°Π·ΠΈ, ΠΊΠ°Ρ‚ΠΎ улСснява изтСглянСто Π½Π° ΠΎΠ±Ρ€Π°Π·ΠΈ ΠΎΡ‚ Ρ€Π΅Π³ΠΈΡΡ‚ΡŠΡ€Π° Π·Π° внСдряванС Π½Π° прилоТСния.

3. Как Ρ€Π°Π±ΠΎΡ‚ΠΈ Docker

Π‘Ρ‚ΡŠΠΏΠΊΠ° 1: БъздаванС Π½Π° Ρ„Π°ΠΉΠ» Docker

Π”ΠΎΠΊΠ΅Ρ€Ρ„Π°ΠΉΠ»ΡŠΡ‚ Π΅ скрипт, ΠΊΠΎΠΉΡ‚ΠΎ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° инструкции ΠΊΠ°ΠΊ Π΄Π° сС ΠΈΠ·Π³Ρ€Π°Π΄ΠΈ ΠΎΠ±Ρ€Π°Π· Π½Π° Docker. НапримСр, Π΅Π΄ΠΈΠ½ прост Dockerfile Π·Π° създаванС Π½Π° ΠΎΠ±Ρ€Π°Π· Π½Π° ΡƒΠ΅Π± ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° Ρ‚Π°ΠΊΠ°:

# Π˜Π·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»Π½Π° срСда Π·Π° изпълнСниС Π½Π° 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, ΠΊΠ°Ρ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ слСдната ΠΊΠΎΠΌΠ°Π½Π΄Π°:

Π΄ΠΎΠΊΠ΅Ρ€ build -t my-app .

Π’Π°Π·ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΡƒΠΊΠ°Π·Π²Π° Π½Π° Docker Π΄Π° ΠΈΠ·Π³Ρ€Π°Π΄ΠΈ ΠΎΠ±Ρ€Π°Π· с ΠΈΠΌΠ΅ my-app, ΠΊΠ°Ρ‚ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Dockerfile Π² Ρ‚Π΅ΠΊΡƒΡ‰Π°Ρ‚Π° дирСктория.

Π‘Ρ‚ΡŠΠΏΠΊΠ° 3: Π‘Ρ‚Π°Ρ€Ρ‚ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° Docker

Π‘Π»Π΅Π΄ ΠΊΠ°Ρ‚ΠΎ ΠΈΠ·Π³Ρ€Π°Π΄ΠΈΡ‚Π΅ ΠΎΠ±Ρ€Π°Π·Π°, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° стартиратС ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€, Π±Π°Π·ΠΈΡ€Π°Π½ Π½Π° Ρ‚ΠΎΠ·ΠΈ ΠΎΠ±Ρ€Π°Π·:

Π΄ΠΎΠΊΠ΅Ρ€ run -p 8080:8080 my-app

Π’Π°Π·ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π° стартира Π½ΠΎΠ² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ ΠΎΡ‚ ΠΎΠ±Ρ€Π°Π·Π° my-app ΠΈ ΡΡŠΠΏΠΎΡΡ‚Π°Π²Ρ ΠΏΠΎΡ€Ρ‚ 8080 Π½Π° хоста с ΠΏΠΎΡ€Ρ‚ 8080 Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°.

4. Ползи ΠΎΡ‚ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Docker

  • ΠŸΡ€Π΅Π½ΠΎΡΠΈΠΌΠΎΡΡ‚: ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΡ‚Π΅ Π½Π° Docker ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚ Π½Π° всяка систСма, Π½Π° която Π΅ инсталиран Docker, ΠΊΠΎΠ΅Ρ‚ΠΎ улСснява прСмСстванСто Π½Π° прилоТСнията ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈΡ‚Π΅ срСди.
  • ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»Π½ΠΎΡΡ‚: Docker Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€Π°, Ρ‡Π΅ прилоТСнията сС ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚ ΠΏΠΎ Π΅Π΄ΠΈΠ½ ΠΈ ΡΡŠΡ‰ΠΈ Π½Π°Ρ‡ΠΈΠ½ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ срСди, ΠΊΠΎΠ΅Ρ‚ΠΎ намалява ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈΡ‚Π΅ ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° “Ρ‚ΠΎΠ²Π° Ρ€Π°Π±ΠΎΡ‚ΠΈ Π½Π° моята машина”.
  • Π˜Π·ΠΎΠ»ΠΈΡ€Π°Π½Π΅: ВсСки ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ Ρ€Π°Π±ΠΎΡ‚ΠΈ Π² своя собствСна срСда, ΠΊΠΎΠ΅Ρ‚ΠΎ позволява Π½Π° няколко прилоТСния Π΄Π° ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‚ Π΅Π΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π½Π° Π΅Π΄ΠΈΠ½ ΠΈ ΡΡŠΡ‰ хост Π±Π΅Π· ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΈ.
  • ЕфСктивност Π½Π° рСсурситС: ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΡ‚Π΅ са ΠΎΠ»Π΅ΠΊΠΎΡ‚Π΅Π½ΠΈ ΠΈ сподСлят ядрото Π½Π° хост ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π°Ρ‚Π° систСма, ΠΊΠΎΠ΅Ρ‚ΠΎ Π²ΠΎΠ΄ΠΈ Π΄ΠΎ ΠΏΠΎ-Π΄ΠΎΠ±Ρ€ΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° рСсурситС Π² сравнСниС с Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΈΡ‚Π΅ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½ΠΈ машини.

5. Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Docker Π΅ ΠΌΠΎΡ‰Π΅Π½ инструмСнт Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈ ΠΈ систСмни администратори, ΠΊΠΎΠΉΡ‚ΠΎ опростява процСса Π½Π° Ρ€Π°Π·Π³Ρ€ΡŠΡ‰Π°Π½Π΅ ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° прилоТСния. Π§Ρ€Π΅Π· ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈ Docker осигурява послСдоватСлСн ΠΈ Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π΅Π½ Π½Π°Ρ‡ΠΈΠ½ Π·Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈΡ€Π°Π½Π΅ ΠΈ стартиранС Π½Π° прилоТСния Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ срСди. Π Π°Π·Π±ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° Docker ΠΈ Π½Π΅Π³ΠΎΠ²ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ ΠΌΠΎΠΆΠ΅ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ Π΄Π° ΠΏΠΎΠ΄ΠΎΠ±Ρ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΡ‚Π΅ Π²ΠΈ процСси ΠΏΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π²Π°Π½Π΅ ΠΈ внСдряванС.

15%

БпСстСтС 15% ΠΎΡ‚ всички услуги Π·Π° хостинг

ВСствайтС умСнията си ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Ρ‚Π΅ ΠΎΡ‚ΡΡ‚ΡŠΠΏΠΊΠ° Π·Π° всСки хостинг ΠΏΠ»Π°Π½

Π˜Π·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ ΠΊΠΎΠ΄:

Skills
Π—Π° Π½Π°Ρ‡Π°Π»ΠΎ