Докер - система для работы с изолированными средами (контейнерами) для запуска приложений. В отличии от виртуализации контейнеры Докера не требуют трансляции команд одной операционной системы в другую. Вместо этого контейнер работает на ядре хостовой операционной системы, тем не менее, имея изолированные память, файловую систему, сеть и т.д.
Docker поддерживается на разных операционных системах таких как: Linux, Windows, MacOS. Это позволяет программировать на одной ОС, получать образ контейнера и запускать его на другой ОС без проблем с окружением программ внутри контейнера.
Как пишется Dockerfile
Для описания процесса сборки докер-контейнеров используется файл специального формата - Dockerfile
.
Выглядит он примерно так:
FROM python:3
ENV PYTHONDONTWRITEBYTECODE=1
ENV PYTHONUNBUFFERED=1
WORKDIR /app
COPY requirements.txt /app/
RUN pip install -r requirements.txt
COPY . /app/
ENTRYPOINT ["/app/docker-entrypoint.sh"]
- В блоке
FROM
указывается образ, от которого будет "наследоваться" (базироваться) ваш образ. посмотреть возможные образы можно на https://hub.docker.com/. По сути, это минимальное окружение, которое необходимо вашему проекту. Если вы пишите на python определённой версии - выбираетеpython
, если node -node
. Если просто нужен Linux -ubuntu
илиalpine
или ещё какой дистрибутив. - Блоки
ENV
указывают переменные окружения, которые будут использованы для запуска Вашего приложения. WORKDIR
- создать и перейти внутрь директории внутри образа.COPY
- копируем из директории рабочей машины в директорию образа.RUN
- запускаем внутри образа команду.ENTRYPOINT
- то, что будет запускаться при старте контейнера из этого образа.
Как собирается образ Docker
После чего можно собрать образ командой docker-build.
docker build --tag {{ имя образа }} .
--tag {{ имя образа }}
- название образа, чтобы отличать его от других - понадобится при запуске контейнеров..
- путь до папки, где лежит Dockerfile.
Как запускается Docker-контейнер
В простейшем случае docker контейнер можно запустить из образа командой docker-run:
docker run -d -p 8000:8000 {{ имя образа }}
-d
- отвязаться от консоли.-p 8000:8000
- прокидываем порт из контейнера наружу.
Прочие рецепты (как зайти в контейнер, как остановить и т.д.) можно найти в специальной рубрике по Докеру.