Docker. Управление образами и контейнерами

Эта запись будет шпаргалкой по докеру. Все самые основные команды которые могут пригодиться начинающему. Docker для чайников.

Термины

Image (Образ) — это статический билд на основе определенной OS (дистрибутива). На основе 1 образа можно создавать разные контейнеры.

Container (Контейнер) — это кастомизированный инстанс образа. Создается на основе Dockerfile.

Volume (Том) — предпочтительный способ для постоянного хранения/обмена данными между контейнером и хост-машиной.

Права на запуск docker

Чтобы запускать Docker контейнеры под своим пользователем (без sudo), нужно добавиться в соответствующую группу:

sudo usermod -aG docker YOU_USER

Что такое Docker

Docker – это платформа с открытым исходным кодом, которая позволяет оптимизировать управление разработкой, тестированием и размещением веб-приложений. В основе работы Docker лежит упаковка программ (вместе с окружением и зависимостями) в виртуальные блоки — контейнеры.

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

Контейнер можно быстро создать и так же быстро удалить. Чтобы создать контейнер, нужно активировать образ docker — шаблонный элемент. Образы запускаются из публичного репозитория Docker Hub. После запуска срабатывает разметка файловой системы, создаётся сетевой интерфейс и назначается IP-адрес. После этого контейнер готов к работе.

Что такое Docker

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

Читайте также:  Поддержка iOS 14: какие айфоны совместимы с iOS 14?

Преимущества Docker:

Описание платформы

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

Контейнеризация – процесс, при котором приложения Линукс развертываются в контейнерах. Идея об изолировании приложений возникла еще при создании первых моделей ПК, а применяться на практике начала только недавно. Популярности контейнеризации поспособствовали высокие темпы развития ПО.

Итак, в чем главные отличия образа от контейнера:

  1. Под образом подразумевается некий исполняемый пакет, в который включены библиотеки, программный код, конфигурационные файлы, среда выполнения и ее переменные – все, что требуется для открытия приложения.
  2. Под контейнером подразумевается экземпляр образа. То есть один образ может вмещать в себя сразу несколько контейнеров.

Открыть образы можно в режиме «для чтения». Образы платформы делятся на два вида: дистрибутивы Линукс и сконфигурированное корпоративное ПО, подготовленное к запуску. Вид можно прописать в специальном файле Dockerfile. Он представляет собой файл текстового формата, который может понять только демон Docker. Файл создается для того, чтобы можно было запустить новый образ.

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

Открыть приложение на платформе можно в несколько шагов:

  1. Выбрать нужное приложение.
  2. Описать его в Dockerfile, указать среду для выполнения приложения.
  3. Сформировать общий файл – образ, который будет включать в себя набор библиотек (без общей системной) и исполняемые файлы. Все элементы войдут в контейнер и станут неизменными при дальнейшей работе.
  4. Запустить платформу, в которой уже указан образ приложения, использующегося для решения прикладной задачи.
Читайте также:  Установка и настройка OpenVPN для Ubuntu

Основные команды Docker или шпаргалка по командам докера:

  • Вывести все запущенные контейнеры:
    • -a покажет все контейнеры на локальной машине не важно запущенные или нет

docker ps

docker ps -a

  • Показать все образы из которых можно создать и запустить контейнер:

docker images

  • Запустить докер контейнер:
    • -d — запустить в фоне, без лога в текущей командной строке
    • -it — запустить с логом в текущем окне командной строки
    • -p 123:80 — запустить на определенный порт где
      • 123 — внешний порт за пределами контейнера
      • 80 — порт внутри контейнера

docker run [image_name] -d

  • Скачать образ из Докер репозитория или любого другого, но тогда надо сначала залогинеться (Amazon или любой другой)

docker pull [image_name]

  • поиск образа в репозитории:

docker search [key_word]

  • удалить локальный образ, тот что уже скаченный на локальную машину:

docker rmi [image_name]

  • удалить контейнер который был запущенный на текущей машине:

docker rm [container_name]

  • Сгенерировать образ на основе файла Dockerfile который лежит в текущей папке

docker build .

  • Сгенерировать образ на основе файла Dockerfile и добавить этому образу имя и версию:

docker build -t new_image_name:v1

  • Изменить название и версию образа (тег):

docker tag new_image_name:v1 super_new_image_name:v2

  • Залогинеться в контейнер как бы через ssh
    • в конце bash или /bin/bash

docker exec -it [container_name] bash

  • сгенерировать из запущенного контейнера новый образ

docker commit [container_name] [new_image_name]

Вроде получилось описать все нужные команды в Docker. Когда мне что-то еще понадобится, буду дополнять. Если ты нашел еще какую-то важную команду которую я упустил — напиши ее в комментариях, я добавлю.

Читайте также:  Настраиваем Linux Mint

Всем счастья и здоровья