Docker: базовый набор команд

0
10294
views

Перевод второй части статьи «Docker simplified: a hands-on guide for absolute beginners».

Команда Docker

В предыдущей статье – «Docker: практическое руководство для совершенных новичков» – мы рассмотрели, что такое Docker, где он может нам пригодиться и как его установить. А теперь давайте, наконец, познакомимся с основными командами, которые позволят вам начать использовать Docker.

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

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, но есть и много других.

Заключение

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

Docker это очень мощный движок контейнеризации, который может предложить вам очень многое. Мы рассмотрели его лишь поверхностно, а в нем есть, что изучать:

  • команды (более мощные, чем рассмотренные здесь)
  • образы (создание собственных образов)
  • Docker Networking (настройка сетей)
  • Docker Services (группирование контейнеров, использующих один образ)
  • Docker Stack (группирование сервисов по приложению)
  • Docker Compose (инструмент для управления несколькими контейнерами и их запуска)
  • Docker Swarm (группирование и управление оной или большим количеством машин, на которых запущен docker)
  • И многое другое…

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

Для абсолютных новичков я советую вот этот курс – он специально разработан для начинающих.

Если у вас уже есть опыт работы с Docker и вы хотите расширить свои знания, можете записаться на этот курс. Там рассматриваются более продвинутые темы, имеющие отношение к Docker.

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

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

Please enter your comment!
Please enter your name here