Docker
Docker - ΡΡΡΠΊΠ° Π΄Π»Ρ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΠ·Π°ΡΠΈΠΈ ΠΠ
ΠΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΠ·Π°ΡΠΈΡ - Π·Π°ΡΠΎΠ²ΡΠ²Π°Π½ΠΈΠ΅ ΠΠ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ (ΡΠΏΠ°ΡΠΈΠ±ΠΎ ΠΊΡΠΏ) - ΠΌΠΈΠ½ΠΈ-Π²ΠΈΡΡΡΠ°Π»ΠΊΠΈ
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠ°Π²ΠΈΡΡ ΡΠ΅Π±Π΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡΠ»ΠΈΠ½Ρ Π² ΠΏΠ°ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄ ΠΈΠ»ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΏΠ°ΠΊΠΎΠ²ΡΠ²Π°ΡΡ ΡΠ²ΠΎΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΡΡ ΠΈ ΠΈ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΠΈΡ Π½Π° Π»ΡΠ±ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Π΅
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ°
ΠΡΠ»ΠΈ Π΅ΡΡΡ Win10 Pro, Enterprise or Education, ΡΠΎ Docker ΡΡΠ°Π²ΠΈΡΡΡ ΡΠ΅ΡΠ΅Π· ΠΈΠ½ΡΡΠ°Π»Π»Π΅Ρ
ΠΠ½Π°ΡΠ΅, Π΅ΡΠ»ΠΈ ΠΎΠ±ΡΡΠ½Π°Ρ Win10, - ΡΠ΅ΡΠ΅Π· DockerToolbox:
Π‘ΡΠ°Π²ΠΈΠΌ DockerToolbox
ΠΠ°ΠΏΡΡΠΊΠ°Π΅ΠΌ Docker Quickstart Terminal
ΠΠ΅Π»Π°Π΅ΠΌ DockerMachine Ρ 4 Π³Π± ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Ρ - ΡΡΠΎΠ±Ρ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡΠ»ΠΈΠ½
ΠΠ° Linux ΡΡΠ°Π²ΠΈΡΡΡ ΠΏΠΎ ΠΈΠ½ΡΡΡΠΊΡΠΈΠΈ, ΠΈΠ»ΠΈ Π΅ΡΠ»ΠΈ ΡΠ΅ΡΡ ΠΈΠ΄Π΅Ρ ΠΎ ΡΠ΅ΡΠ²Π°ΠΊΠ΅, ΡΠΎ Ρ ΠΎΡΡΠΈΠ½Π³ΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, reg.ru ΠΈ DigitalOcean) ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ ΠΌΠ°ΡΠΈΠ½ΠΊΠΈ Ρ ΠΏΡΠ΅Π΄ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΡΠΌ Π΄ΠΎΠΊΠ΅ΡΠΎΠΌ:

ΠΠ°ΠΏΡΡΠΊ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°
Π‘ΠΎΠ·Π΄Π°ΡΠ΅Π»ΠΈ ΠΠ ΡΠ°ΡΡΠΎ ΡΠ°ΠΌΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ Π³Π°ΠΉΠ΄Ρ ΠΏΠΎ Π·Π°ΠΏΡΡΠΊΡ ΡΠ²ΠΎΠ΅Π³ΠΎ ΠΠ ΡΠ΅ΡΠ΅Π· Docker, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ MSSQL
ΠΠΎ ΠΎΠ±ΡΡΠ½ΠΎ Π²ΡΠ΅ ΡΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΊ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌ ΡΠ°Π³Π°ΠΌ:
ΠΡΠΊΠ°ΡΠΈΠ²Π°Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π΄ΠΆΠ° (ΠΎΠ±ΡΠ°Π·Π°) Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
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 {Π½Π°Π·Π²Π°Π½ΠΈΠ΅_ΡΠ±ΠΎΡΠΊΠΈ}
Last updated
Was this helpful?