Docker: основные команды

Docker Container – технология, которая позволяет автоматизировать процесс развертывания и управления приложениями в среде виртуализации на уровне операционной системы. В основном Docker-контейнеры используются для СI/CD cистем.

В статье рассмотрим 13 самых часто используемых Docker команд на примере Linux-систем.

docker create

Эта команда Docker позволяет нам создать новый контейнер. Вот синтаксис команды:

docker create [options] IMAGE [commands] [arguments]

Обратите внимание: все, что заключено в квадратные скобки, – опционально. Это касается всех команд, которые мы разберем в этом руководстве.

Рассмотрим пару примеров использования команды.

$ docker create fedora 
02576e880a2ccbb4ce5c51032ea3b3bb8316e5b626861fc87d28627c810af03

В примере, указанном выше, команда docker create создаст новый контейнер с использованием последнего образа Fedora.

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

После успешного создания контейнера Docker вернет его ID. Например, в указанном примере 02576e880a2ccbb4ce5c51032ea3b3bb8316e5b626861fc87d28627c810af03 это ID контейнера, возвращенный Docker.

Каждый контейнер имеет уникальный ID. С его помощью мы обращаемся к контейнеру при осуществлении разнообразных операций, таких как запуск, остановка, перезапуск и так далее.

Давайте рассмотрим другой пример использования команды docker create, с опциями и передаваемыми командами.

$ docker create -t -i ubuntu bash
30986b73dc0022dbba81648d9e35e6e866b4356f026e75660460c3474f1ca005

В этом примере команда docker create создает контейнер, используя образ Ubuntu. Как уже говорилось, если на хосте нужного образа не окажется, он будет скачан из Docker Hub.

Опции -t и -i говорят Docker назначить контейнеру терминал, чтобы пользователь мог взаимодействовать с контейнером. Также Docker получает инструкцию выполнять команду bash при каждом старте.

docker ps

Команда docker ps дает нам возможность увидеть все контейнеры, запущенные на хосте.

$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
30986b73dc00        ubuntu              "bash"              45 minutes ago      Up About a minute                 elated_franklin

Отображаются только те контейнеры, которые запущены в настоящее время. Если вы хотите увидеть вообще все созданные на этом хосте контейнеры независимо от их текущего статуса, вам нужно добавить к команде опцию -а.

$ docker ps -a
CONTAINER ID      IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
30986b73dc00      ubuntu              "bash"              About an hour ago   Up 29 minutes     elated_franklin
02576e880a2c        fedora              "/bin/bash"         About an hour ago   Created     hungry_sinoussi

Прежде чем идти дальше, давайте разберемся в выводе этой команды.

Вывод команды docker ps

CONTAINER ID: уникальная строка, состоящая из цифр и букв, привязанная к каждому контейнеру.

IMAGE: имя образа, который использован для создания этого контейнера.

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

CREATED: показывает текущий статус контейнера, а также сколько времени он находится в текущем состоянии.

Если контейнер запущен, время будет отображаться как Up About an hour или Up 3 minutes.

Если контейнер остановлен, будет написано Exited, в скобках будет указан код статуса выхода, а затем – время, прошедшее с момента выхода. Например, Exited (0) 3 weeks ago или Exited (137) 15 seconds ago, где 0 и 137 это коды выхода.

PORTS: показывает, какие порты определены для контейнера.

NAMES: помимо CONTAINER ID, у каждого контейнера есть еще и уникальное имя. Обращаться к нему можно и по ID, и по имени. При создании контейнеров Docker автоматически назначает им дурацкие, хотя и уникальные имена. Если хотите, чтобы у контенера было выбранное вами имя, добавьте к команде docker create или docker run (о ней будем говорить позже) опцию —name (спереди двойной дефис).

Надеюсь, теперь вы лучше понимаете вывод команды docker ps.

docker start

Эта команда запускает любой остановленный контейнер. Ее синтаксис:

docker start [options] CONTAINER ID/NAME [CONTAINER ID/NAME…]

Для обозначения контейнера можно брать или несколько первых уникальных символов из его ID, или его имя. Несколько примеров:

$ docker start 30986

В примере, указанном выше, Docker запускает контейнер, чей ID начинается с 30986.

$ docker start elated_franklin

А здесь Docker запускает контейнер с именем elated_franklin.

docker stop

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

$ docker stop 30986

В указанном выше примере Docker останавливает контейнер, чей ID начинается с 30986.

$ docker stop elated_franklin

Docker останавливает контейнер по имени elated_franklin.

docker restart

Эта команда перезапускает любой контейнер. Синтаксис команды:

docker restart [options] CONTAINER ID/NAME [CONTAINER ID/NAME…]

К контейнеру обращаемся совершенно аналогично.

$ docker restart 30986

Перезапуск контейнера с ID 30986.

$ docker restart elated_franklin

Перезапуск контейнера с именем elated_franklin.

docker run

Эта команда сначала создает контейнер, а потом запускает его. Короче говоря, это комбинация команд docker create и docker start. Синтаксис этой команды:

docker run [options] IMAGE [commands] [arguments]

Синтаксис похож на синтаксис команды docker create. Рассмотрим примеры:

$ docker run ubuntu 
30fa018c72682d78cf168626b5e6138bb3b3ae23015c5ec4bbcc2a088e67520

В этом примере Docker создает контейнер, используя последний образ Ubuntu, и немедленно запускает его.

Если мы выполним указанную выше команду, контейнер будет запущен и моментально остановлен: у нас не будет никакой возможности с ним взаимодействовать.

Если нам нужно взаимодействовать с контейнером, мы должны добавить опции -it, чтобы команда docker run предоставила нам терминал. С его помощью мы сможем вводить нужные команды этому контейнеру. Вот пример такой команды:

$ docker run -it ubuntu
root@e4e633428474:/#

Чтобы выйти из контейнера, нужно набрать exit в терминале.

docker rm

Эта команда используется для удаления контейнера. Ее синтаксис:

docker rm [options] CONTAINER ID/NAME [CONTAINER ID/NAME…]

Пример использования:

$ docker rm 30fa elated_franklin

В этом примере одной командой мы говорим Docker удалить 2 контейнера. Первый мы обозначаем символами его ID, а второй – указав его имя.

Внимание: чтобы удалить контейнеры, их нужно сперва остановить.

docker images

Эта команда выведет все образы Docker, присутствующие на вашем хосте.

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
mysql               latest              7bb2586065cd        38 hours ago        477MB
httpd               latest              5eace252f2f2        38 hours ago        132MB
ubuntu              16.04               9361ce633ff1        2 weeks ago         118MB
ubuntu              trusty              390582d83ead        2 weeks ago         188MB
fedora              latest              d09302f77cfc        2 weeks ago         275MB
ubuntu              latest              94e814e2efa8        2 weeks ago         88.9MB

Давайте разберем вывод команды.

REPOSITORY: уникальное имя образа Docker.

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

IMAGE ID: уникальная для каждого контейнера строка, состоящая из букв и цифр.

CREATED: показывает время, прошедшее с момента создания образа.

SIZE: показывает размер образа.

docker rmi

Эта команда позволяет нам удалять образы из Docker Host. Ее синтаксис:

docker rmi [options] IMAGE NAME/ID [IMAGE NAME/ID…]

Примеры использования:

docker rmi mysql

Эта команда удалит с хоста образ с именем mysql.

docker rmi httpd fedora

Здесь будут удалены сразу два образа: httpd и fedora.

docker rmi 94e81

Удаление образа, ID которого начинается с 94e81.

docker rmi ubuntu:trusty

Эта команда удалит с хоста образ с именем ubuntu и тегом trusty.

docker pull

Большинство образов создаётся на основе базового образа из Docker Hub. Docker Hub содержит множество готовых образов, которые можно использовать вместо того, чтобы создавать и настраивать свой собственный. Чтобы скачать определённый образ или набор образов (репозиторий), используйте команду docker pull.

docker build

Эта команда собирает образ Docker из Dockerfile и «контекста». Контекст сборки — это набор файлов, расположенных по определённому пути или URL. Используйте флаг -t, чтобы задать имя образа. Например, команда docker build -t my_container . соберёт образ, используя текущую директорию, на что указывает точка в конце.

docker logs

Эта команда используется для просмотра логов указанного контейнера. Можно использовать флаг —follow, чтобы следить за логами работающей программы: docker logs —follow my_container.

docker volume ls

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

Заключение

Мы рассмотрели некоторые из основных команд Docker, но есть и много других.

Контейнеризация получила заслуженное внимание совсем недавно, хотя существовала уже довольно длительное время. Некоторые топовые тех-компании, такие как Google, Amazon Web Services (AWS), Intel, Tesla и Juniper Networks, имеют собственные версии движков контейнеров. Они очень широко применяют их в сборке, запуске, управлении и дистрибуции своих приложений.


Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.

Unlix © Все права защищены 2019

Копирование материалов с сайта Unlix.ru без указания полной ссылки на источник ЗАПРЕЩЕНО!