πŸ“
pypc-tlbx
  • py_poc_toolbox
  • pages
    • Sphinx
    • pre-commit
    • line_profiler
    • Postgres
    • ΠŸΠΈΡ‚ΠΎΠ½-ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ ΠΈ PyPI
    • ElasticSearch
    • Π Π°Π½Π΄ΠΎΠΌ
    • DDD
  • Devops
    • Supervisor
    • Jenkins
    • Docker
    • Jenkins + Docker
Powered by GitBook
On this page
  • Установка
  • Запуск ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°
  • Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ собствСнных ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ²
  • Π•Ρ‰Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹
  • Π”Π΅ΠΏΠ»ΠΎΠΉ

Was this helpful?

  1. Devops

Docker

PreviousJenkinsNextJenkins + Docker

Last updated 5 years ago

Was this helpful?

- ΡˆΡ‚ΡƒΠΊΠ° для ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΠΈ ПО

ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΈΠ·Π°Ρ†ΠΈΡ - засовываниС ПО Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ (спасибо кэп) - ΠΌΠΈΠ½ΠΈ-Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΊΠΈ

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΌΠΎΠΆΠ½ΠΎ ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ сСбС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒΠ»ΠΈΠ½Ρ‹ Π² ΠΏΠ°Ρ€Ρƒ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈΠ»ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΏΠ°ΠΊΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ свои ΠΏΡ€ΠΈΠ»ΠΎΠΆΡƒΡ…ΠΈ ΠΈ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΈΡ… Π½Π° любой машинС

Установка

Если Π΅ΡΡ‚ΡŒ Win10 Pro, Enterprise or Education, Ρ‚ΠΎ Docker ставится Ρ‡Π΅Ρ€Π΅Π·

Π˜Π½Π°Ρ‡Π΅, Ссли обычная Win10, - Ρ‡Π΅Ρ€Π΅Π· :

  • Π‘Ρ‚Π°Π²ΠΈΠΌ DockerToolbox

  • ЗапускаСм Docker Quickstart Terminal

  • - Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒΠ»ΠΈΠ½

На Linux ставится ΠΏΠΎ , ΠΈΠ»ΠΈ Ссли Ρ€Π΅Ρ‡ΡŒ ΠΈΠ΄Π΅Ρ‚ ΠΎ сСрвакС, Ρ‚ΠΎ хостинги (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, reg.ru ΠΈ DigitalOcean) ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ машинки с прСдустановлСнным Π΄ΠΎΠΊΠ΅Ρ€ΠΎΠΌ:

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

Но ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ всС сводится ΠΊ нСскольким шагам:

  • Π’Ρ‹ΠΊΠ°Ρ‡ΠΈΠ²Π°Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π΄ΠΆΠ° (ΠΎΠ±Ρ€Π°Π·Π°) с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹: docker pull

  • Запуск ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° со скачанным ΠΈΠΌΠ΅Π΄ΠΆΠΎΠΌ: docker run

ВсС - ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ Π·Π°ΠΏΡƒΡ‰Π΅Π½, ΠΌΠΎΠΆΠ½ΠΎ ΡŽΠ·Π°Ρ‚ΡŒ ПО Π½Π° localhost ΠΈΠ»ΠΈ Π½Π° 192.168.99.100 ΠΏΠΎΠ΄ Π²ΠΈΠ½Π΄ΠΎΠΉ

docker run

  • -d - запуск ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° Π² Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ / Ρ€Π΅ΠΆΠΈΠΌΠ΅ Π΄Π΅ΠΌΠΎΠ½Π°

  • --name={name} - установка названия ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π»Π΅Π³Ρ‡Π΅ Π±Ρ‹Π»ΠΎ с Π½ΠΈΠΌ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ

  • --restart = always/no/… - установка пСрСзапуска ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° ΠΏΡ€ΠΈ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΡ€Π°ΡˆΠ΅ ΠΈΠ»ΠΈ пСрСзапускС систСмы

  • -p 8089:80 - ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ ΠΏΠΎΡ€Ρ‚ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° (Π² Π΄Π°Π½Π½ΠΎΠΌ случаС 80) для ΠΏΠΎΡ€Ρ‚Π° машинки (8089). ПолСзно, ΠΊΠΎΠ³Π΄Π° запускаСтся nginx-ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ смотрит Π½Π° 80, Π° Π½Π° машинС этот ΠΏΠΎΡ€Ρ‚ занят ΠΈ Π½ΡƒΠΆΠ½ΠΎ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΠΎΡ€Ρ‚ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρƒ.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ собствСнных ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ²

Для создания собствСнного ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Dockerfile.

НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ создания nginx-ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ сСрвит sphinx-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ:

# Π΄Π΅Π»Π°Π΅ΠΌ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ с python
FROM python as build

# ставим poetry
RUN curl -sSL https://raw.githubusercontent.com/sdispater/poetry/master/get-poetry.py | python
ENV PATH="/root/.poetry/bin:${PATH}"

# создаСм Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ для Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°
WORKDIR /app

# ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅ΠΌ poetry-Ρ„Π°ΠΉΠ»Ρ‹, для ΠΊΠ΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ зависимостСй
COPY pyproject.toml poetry.lock /app/

# ставим зависимости
RUN poetry install

# ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅ΠΌ ΠΎΡΡ‚Π°Π²ΡˆΠΈΠ΅ΡΡ Ρ„Π°ΠΉΠ»Ρ‹
COPY . /app

# собираСм Π΄ΠΎΠΊΠΈ
RUN poetry run make html

# Π΄Π΅Π»Π°Π΅ΠΌ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ с nginx для сСрва статики
FROM nginx

# ΠΊΠΎΠΏΠΈΡ€ΡƒΠ΅ΠΌ собранныС Π΄ΠΎΠΊΠΈ ΠΈΠ· python-ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° Π² nginx-ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€
COPY --from=build /app/_build/html /usr/share/nginx/html

Когда Dockerfile написан, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ сборку ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ docker build

Π•Ρ‰Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹

Бписок всСх ΠΊΠΎΠΌΠ°Π½Π΄ отобраТаСтся ΠΏΡ€ΠΈ запускС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ docker

НаиболСС частыС:

  • docker ps - Π²Ρ‹Π²ΠΎΠ΄ Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹Ρ… ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ²

  • docker stop / docker rm - остановка ΠΈ удалСния ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°

  • docker stats - Π²Ρ‹Π²ΠΎΠ΄ потрСбляСмых ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°ΠΌΠΈ рСсурсов

Π”Π΅ΠΏΠ»ΠΎΠΉ

Π”Π΅ΠΏΠ»ΠΎΠΉ осущСствляСтся Π² нСсколько этапов:

  • Π‘Π±ΠΎΡ€ΠΊΠ° Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±Ρ€Π°Π·Π°: docker build

  • ΠžΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° старого ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°: docker stop

  • Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ старого ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°: docker rm

  • Запуск Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°: docker run

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ скрипта:

# Π½Π΅ Π·Π°Π±Ρ‹Π²Π°Π΅ΠΌ ΡΡ‚ΡΠ³ΠΈΠ²Π°Ρ‚ΡŒ мастСр
git pull
docker build -t {Π½Π°Π·Π²Π°Π½ΠΈΠ΅_сборки} .
docker stop {Π½Π°Π·Π²Π°Π½ΠΈΠ΅_Π·Π°ΠΏΡƒΡ‰Π΅Π½ΠΎΠ³ΠΎ_ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°}
docker rm {Π½Π°Π·Π²Π°Π½ΠΈΠ΅_Π·Π°ΠΏΡƒΡ‰Π΅Π½ΠΎΠ³ΠΎ_ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°}
docker run --name {Π½Π°Π·Π²Π°Π½ΠΈΠ΅_Π·Π°ΠΏΡƒΡ‰Π΅Π½ΠΎΠ³ΠΎ_ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°} -p 8079:80 \
  -d --restart unless-stopped {Π½Π°Π·Π²Π°Π½ΠΈΠ΅_сборки}

Π‘ΠΎΠ·Π΄Π°Ρ‚Π΅Π»ΠΈ ПО часто сами ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ Π³Π°ΠΉΠ΄Ρ‹ ΠΏΠΎ запуску своСго ПО Ρ‡Π΅Ρ€Π΅Π· Docker, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€

запускаСт ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€, ΠΈΠΌΠ΅Π΅Ρ‚ мноТСство ΠΎΠΏΡ†ΠΈΠΉ:

MSSQL
Данная ΠΊΠΎΠΌΠ°Π½Π΄Π°
Docker
инсталлСр
DockerToolbox
Π”Π΅Π»Π°Π΅ΠΌ DockerMachine с 4 Π³Π± ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Ρ‹
ΠΈΠ½Ρ‚Ρ€ΡƒΠΊΡ†ΠΈΠΈ
reg.ru