Docker: объяснение на пальцах

0
1234
views

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

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

И все, что вам нужно о нем знать для начала, вы найдете в одной статье. Не переживайте, она будет достаточно короткой.

Я расскажу вам обо всех основных концепциях — контейнерах, образах и т. п. А затем мы напишем наш собственный Dockerfile, чтобы контейнеризовать простое приложение на Python.

Итак…

Что такое Docker?

Docker — это средство для контейнеризации приложений, т. е. для помещения кода в контейнеры, способные работать самостоятельно. Он волшебным образом создает виртуальный компьютер, но только на самом деле это НЕ «виртуалка».

Контейнеры не имеют собственной операционной системы.

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

Контейнеры создаются при помощи образов (англ. image — образ).

Образы Docker

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

Но как создаются образы (а затем и контейнеры)?

Они создаются при помощи файлов Docker (Dockerfiles).

Все о Dockerfile

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

Давайте перейдем к практике.

Скачайте Docker на свою машину — https://www.docker.com/get-started

Теперь давайте напишем приложение и поместим его в контейнер.

Вот очень простое и минималистичное flask-приложение:

from flask import Flask

app = Flask(__name__)

@app.route("/")
def hello_world():
    return "<p>Hello, World!</p>"

Несмотря на то, что приложение элементарное, для его работы нужны:

  • Python 3.9
  • Flask (запуск pip install flask)
  • открытие 5000 порта

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

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

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

В этом файле мы используем ключевые слова:

  • FROM — для использования базового образа Python
  • COPY — для копирования файла app.py в контейнер
  • RUN для pip install flask
  • CMD для запуска python app.py при запуске контейнера.
FROM python3.9-alpine

RUN pip install flask

# "." означает текущую директорию
COPY app.py .

# Также можно написать
# COPY app.py app.py

CMD ["python", "app.py"]

Все очень просто!

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

Теперь мы собираем образ при помощи команды 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 — вывод списка всех доступных команд.

Попробуйте поиграться с разными командами (их названия, в общем-то, достаточно «говорящие»).

Также, безусловно, стоит читать официальную документацию.

Перевод статьи «Docker: Explained to a 5 year old».

От редакции Techrocks. Если это объяснение вам не подошло, попробуйте почитать статью «Руководство по Docker для начинающих».

ОСТАВЬТЕ ОТВЕТ

Please enter your comment!
Please enter your name here