Docker - Контейнеры и хосты

Здравствуйте,野心勃勃的技术爱好者们!我很高兴与你们一起开始这段Docker之旅。作为一位拥有多年经验的虚拟教师,我将引导你们进入容器和主机的精彩世界。如果你是编程新手,不用担心——我们将从基础开始,逐步提升。让我们开始吧!

Docker - Container & Hosts

Docker-изображения

Представьте, что вы пакуете вещи для поездки. Вы создадите список всего необходимого, правильно? Exactly! Docker-изображение — это precisely того, что нужно для работы контейнера. Это как рецепт для вашего приложения, включая код, среда выполнения, библиотеки и системные инструменты.

Создание вашего первого Docker-изображения

Давайте создадим простое Docker-изображение для приложения "Hello, World!":

# Dockerfile
FROM python:3.9-slim
WORKDIR /app
COPY . /app
CMD ["python", "hello.py"]

Давайте разберем это:

  1. FROM python:3.9-slim: Это как сказать: "Я хочу начать с минимальной среды Python 3.9."
  2. WORKDIR /app: Мы настраиваем нашу рабочую область, как если бы создавали новую папку для нашего проекта.
  3. COPY . /app: Мы копируем наши локальные файлы в контейнер.
  4. CMD ["python", "hello.py"]: Это команда, которая будет выполняться при запуске контейнера.

Чтобы построить это изображение, мы выполним:

docker build -t my-hello-world .

Запуск контейнера

Теперь, когда у нас есть изображение, давайте оживим его! Запуск контейнера похож на запуск виртуального компьютера, загруженного вашим приложением.

Основной запуск контейнера

docker run my-hello-world

Эта команда запустит контейнер на основе нашего изображения my-hello-world и выполнит скрипт hello.py.

Интерактивный режим

Иногда вы хотите взаимодействовать с вашим контейнером. Это как открытие терминала напрямую внутри контейнера:

docker run -it my-hello-world /bin/bash

Флаги -it делают контейнер интерактивным, а /bin/bash запускает bash-shell.

Список всех контейнеров

Работая с Docker, вы создадите множество контейнеров. Важно за ними следить. Представьте, что вы проверяете, какие приложения目前正在 работают на вашем компьютере.

docker ps

Эта команда показывает все работающие контейнеры. Чтобы увидеть все контейнеры, включая остановленные:

docker ps -a

Вот удобная таблица опций docker ps:

Опция Описание
-a, --all Показать все контейнеры (по умолчанию показаны только работающие)
-q, --quiet Только отображать ID контейнеров
-s, --size Отображать общие sizes
--format Красиво выводить контейнеры с использованием шаблона Go

Остановка контейнера

Как и закрытие приложения на вашем компьютере, вы можете остановить Docker-контейнер, когда закончите с ним.

Гραциозная остановка

docker stop <container_id>

Этот сигнал отправляет SIGTERM, позволяя контейнеру безопасно завершить работу.

Принудительная остановка

docker kill <container_id>

Это как принудительное завершение приложения. Используйте это, когда docker stop не работает.

Удаление контейнера

После остановки контейнера вы можете полностью удалить его:

docker rm <container_id>

Совет: Вы можете combine остановку и удаление в одной команде:

docker rm -f <container_id>

Заключение

Поздравляю! Вы сделали первые шаги в мир Docker-контейнеров и хостов. Запомните, работа с Docker похожа на управление флотом крошечных, специализированных компьютеров. Каждый контейнер — это самостоятельая среда, готовая к выполнению вашего приложения на любом систем.

Заканчивая, вот забавная аналогия: Docker-контейнеры похожи на food trucks. Each truck (контейнер) имеет все необходимое для приготовления и подачи своего speciality (ваше приложение). Вы можете легко перемещать эти грузовики, запускать их или убирать по мере необходимости.

В следующем уроке мы深入研究им Docker-сетевое взаимодействие и持久ность данных. До свидания, счастливого контейнеризации!

Credits: Image by storyset