Когда я только начинал работать с Docker, мне было очень сложно разобраться во всём. Но вам не нужно беспокоиться. Я помогу.
Docker — это превосходный инструмент, который просто нельзя игнорировать. Docker используется повсюду!
![](https://habrastorage.org/getpro/habr/upload_files/ea5/f0b/750/ea5f0b7501d8dba5d63383bbfbbe6137.jpg)
Итак, я собрал базовые вещи, которые нужно знать о Docker, в одном материале. Гарантирую — всё кратко и лаконично.
Я познакомлю вас с концептами: контейнерами и образами. А затем мы напишем собственный Dockerfile для контейнеризации простого приложения на Python.
Содержание
Что такое Docker
Docker — это способ контейнеризации приложений (помещения кода в коробки, которые могут работать самостоятельно). Контейнеры работают и ощущаются как виртуальные машины, но на самом деле виртуальными машинами не являются.
Контейнеры — это коробки в изолированной среде, поэтому они не зависят от устройства, на котором запущены.
Представляйте это так: есть пчела, которой нравится жить только внутри своих сот, и она не сможет работать, если будет жить в любом другом месте. Вы просто помещаете пчелу в коробку, который выглядит и функционирует точно так же, как её любимые соты. Это и есть контейнеризация.
Контейнеры создаются с использованием образов.
![](https://habrastorage.org/getpro/habr/upload_files/1b5/6ec/8ca/1b56ec8ca5abec83363a1d537af2c796.png)
Docker-образы
Образы в Docker похожи на шаблоны — как в раскраске с наклейками. Другими словами, в образе содержится набор инструкций для создания контейнера. Он включает в себя операционную систему, приложения, файлы конфигурации и переменные.
Но как создавать эти образы (чтобы потом создавать контейнеры)? Это делается с помощью Dockerfiles.
Всё о Dockerfiles
Dockerfile — это текстовый документ, содержащий все команды, которые пользователь может вызвать в командной строке для сборки образа.
Давайте создадим Dockerfile вместе.
Для начала скачайте Docker на своё устройство.
После этого напишем простое приложение на Flask и поместим его в контейнер. Вот пример приложения:
![](https://habrastorage.org/getpro/habr/upload_files/500/5f5/992/5005f5992f29abaa5adef103a84de0c0.jpeg)
Несмотря на свою простоту, приложению много чего потребуется для запуска:
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", когда контейнер запустится.
Вот и всё!
![](https://habrastorage.org/getpro/habr/upload_files/f0a/e8c/c83/f0ae8cc83957c21e6575043dfc7a5ae3.png)
Создание образа и запуск контейнера
Теперь создайте 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)
Ilusha
21.01.2023 02:54+8«Докер для самых маленьких» - это про решение задач, которые могут возникнуть у «самых маленьких»: развернуть базу, nginx, бэк/фронт. И все с docker-compose, «маленьким» не нужно думать о ручном запуске: only code.
Нужен простой, топорный путь, который решает конкретную типовую распространенную задачу.
Далее показать, как посмотреть логи, как зайти в контейнер, как поставить на паузу, как удалить всё, и как удалит вообще всё со всеми кешами и т.д.
А эта статья абсолютно бесполезна и должна быть удалена с позором.
sotland
21.01.2023 11:23Команда
COPY app.py .
Берёт файл app.py из текущего каталога компьютера? Значит Dockerfile и app.py должны быть вместе?
А куда она копирует этот файл, куда в докер? Где сейчас "курсор" в образе? Файл app.py попадёт в корень файловой системы?
php7
Оригинал написал ChatGPT?
Зачем тянуть такие переводы?
Если бы сами написали, то ладно. Мне кажется, автор сам бы мог написать куда лучшую статью.