Когда я только начинал работать с Docker, мне было очень сложно разобраться во всём. Но вам не нужно беспокоиться. Я помогу.

Docker — это превосходный инструмент, который просто нельзя игнорировать. Docker используется повсюду!

Итак, я собрал базовые вещи, которые нужно знать о Docker, в одном материале. Гарантирую — всё кратко и лаконично.

Я познакомлю вас с концептами: контейнерами и образами. А затем мы напишем собственный Dockerfile для контейнеризации простого приложения на Python.

Содержание

Что такое Docker

Docker — это способ контейнеризации приложений (помещения кода в коробки, которые могут работать самостоятельно). Контейнеры работают и ощущаются как виртуальные машины, но на самом деле виртуальными машинами не являются.

Контейнеры — это коробки в изолированной среде, поэтому они не зависят от устройства, на котором запущены.

Представляйте это так: есть пчела, которой нравится жить только внутри своих сот, и она не сможет работать, если будет жить в любом другом месте. Вы просто помещаете пчелу в коробку, который выглядит и функционирует точно так же, как её любимые соты. Это и есть контейнеризация.

Контейнеры создаются с использованием образов.

Docker-образы

Образы в Docker похожи на шаблоны — как в раскраске с наклейками. Другими словами, в образе содержится набор инструкций для создания контейнера. Он включает в себя операционную систему, приложения, файлы конфигурации и переменные.

Но как создавать эти образы (чтобы потом создавать контейнеры)? Это делается с помощью Dockerfiles.

Всё о Dockerfiles

Dockerfile — это текстовый документ, содержащий все команды, которые пользователь может вызвать в командной строке для сборки образа.

Давайте создадим Dockerfile вместе. 

Для начала скачайте Docker на своё устройство.

После этого напишем простое приложение на Flask и поместим его в контейнер. Вот пример приложения:

Несмотря на свою простоту, приложению много чего потребуется для запуска:

  • Python 3.9.

  • Flask (команда pip install flask).

  • Доступ к port 5000.

Некоторые программы могут запускаться только на определённых операционных системах — например, только на Windows или только на Linux.

Все эти проблемы решаются путем написания простого Dockerfile, который устанавливает для нас Docker-образ.

Итак, нам нужно создать файл с именем Dockerfile (без какого-либо расширения).

Пошаговая инструкция:

  • используйте FROM для использования базового образа ОС с установленным Python;

  • используйте RUN чтобы выполнить pip install flask;

  • используйте COPY для копирования файла app.py в контейнер;

  • используйте CMD для запуска "python app.py", когда контейнер запустится.

Вот и всё!

Создание образа и запуск контейнера

Теперь создайте Docker-образ с помощью команды docker build, а затем запустите образ с помощью команды docker run ..

Вы также можете использовать --tag, чтобы дать образу название и упростить его дальнейший запуск:

docker build --tag flask .
docker run --name flask -p 5000:5000 flask

Здесь --name — это имя запускаемого контейнера (который я назвал flask), а -p назначает порт Docker-контейнера на вашем компьютере, чтобы вы могли видеть своё приложение на localhost. Наконец, flask в названии — это имя образа, который будет запущен.

Дополнительные команды

Вот, в общем-то, и всё.

  • используйте команду docker ps, чтобы получить список запущенных контейнеров;

  • docker ps -a, чтобы получить список всех контейнеров;

  • docker images, чтобы получить список образов;

  • docker --help, чтобы получить список всех команд.

Попробуйте различные команды, они довольно понятные сами по себе. Официальная документация находится здесь.

Комментарии (3)


  1. php7
    20.01.2023 19:09
    +8

    Оригинал написал ChatGPT?
    Зачем тянуть такие переводы?
    Если бы сами написали, то ладно. Мне кажется, автор сам бы мог написать куда лучшую статью.


  1. Ilusha
    21.01.2023 02:54
    +8

    «Докер для самых маленьких» - это про решение задач, которые могут возникнуть у «самых маленьких»: развернуть базу, nginx, бэк/фронт. И все с docker-compose, «маленьким» не нужно думать о ручном запуске: only code.

    Нужен простой, топорный путь, который решает конкретную типовую распространенную задачу.

    Далее показать, как посмотреть логи, как зайти в контейнер, как поставить на паузу, как удалить всё, и как удалит вообще всё со всеми кешами и т.д.

    А эта статья абсолютно бесполезна и должна быть удалена с позором.


  1. sotland
    21.01.2023 11:23

    Команда

    COPY app.py .

    Берёт файл app.py из текущего каталога компьютера? Значит Dockerfile и app.py должны быть вместе?

    А куда она копирует этот файл, куда в докер? Где сейчас "курсор" в образе? Файл app.py попадёт в корень файловой системы?