Это руководство, введёт вас в команды Docker, использование которых просто обязательно для всёх, кто только начинает с ним работу!
Давайте познакомимся со списком полезных команд и узнаем как ими пользоваться!
Оглавление:
- Введение
- Поиск информации о версии и системе Docker
- Поиск и загрузка образов Docker
- Экспериментируем с образами Docker
- Запускаем контейнер Docker
- Смотрим список контейнеров Docker
- Запуск, остановка, перезапуск и уничтожение контейнеров
Введение
Docker - это развивающаяся система, разработчики которой активно работают над улучшением её производительности и вариантов использования. Поэтому команды постоянно меняются. Команды Docker часто устаревают и заменяются новыми или более эффективными. Вы можете использовать опцию help для проверки последних доступных команд в вашей установке Docker:
$ docker --help
Чтобы проверить опции для конкретной команды, вы можете использовать флаг help для этой команды. Например, чтобы проверить опции команды docker run
, вы можете использовать следующее:
$ docker run --help
Будучи опытным пользователем в Docker, у вас есть определенные задачи, которые вам придется выполнять регулярно. Поэтому мы разделим информацию на более мелкие части. Это позволит лучше понять смысл для выполнения различных команд.
На данный момент существует 13 команд управления и 41 общая команда. Вот основные команды Docker, которые мы будем использовать в наших статьях:
docker attach
- Присоединяет локальный поток ввода/вывода/ошибок к запущенному контейнеру.docker commit
- Создает новый образ из текущего измененного состояния контейнера.docker exec
- Выполняет команду в активном или запущенном контейнере.docker history
- Отображает историю образа.docker info
- Показывает общесистемную информацию.docker inspect
- Поиск информации системного уровня о контейнерах и образах docker.docker login
- Вход в локальный реестр или Docker Hub.docker pull
- Извлечение образа или репозитория из локального реестра или Docker Hub.docker ps
- Перечисляет различные свойства контейнеров.docker restart
- Остановка и запуск контейнера.docker rm
- Удалить контейнеры.docker rmi
- Удаление образов.docker run
- Выполнение команды в изолированном контейнере.docker search
- Поиск образов в Docker Hub.docker start
- Запускает уже остановленные контейнеры.docker stop
- Останавливает запущенные контейнеры.docker version
- Предоставляет информацию о версии docker.
Более подробное описание можно найти здесь и здесь(на русском).
Давайте рассмотрим различные действия, которые вы можете выполнить с помощью этих команд Docker.
Примечание: Для частичных информационных дампов( примеров выполнения команд) будем использовать три точки (...).
Некоторые примеры выполнения кода проиллюстрированы в среде PowerShell(Windows), однако команды по умолчанию идут вместе с $
- приглашением командной строки( ожидание ввода) в UNIX системах. Для выполнения в среде PowerShell копировать $
не стоит. Прочий синтаксис сохраняется.
Поиск информации о версии и системе Docker
Работаете ли вы на своей машине или работаете в облаке, вам часто потребуется проверить версию Docker и информацию о системе Docker. Вы можете узнать версию Docker с помощью команды:
$ docker version
Еще одна важная команда - docker info
:
$ docker info
Она покажет вам различные важные сведения, такие как версия сервера, драйвер хранилища, версия ядра, операционная система, общее количество памяти и многое другое. Эта информация может быть полезна, когда вы пытаетесь задействовать новые ресурсы для текущей установки Docker или пытаетесь выяснить проблему с распределением ресурсов на уровне системы. Это также быстрый способ проверить количество запущенных, приостановленных и остановленных контейнеров и количество загруженных в систему образов.
Поиск и загрузка образов Docker
Вы можете искать уже доступные образы на Docker Hub с помощью команды docker search
.
$ docker search ubuntu
Приведенный выше search ubuntu показывает доступные образы и их описания, рейтинг(stars), официальные статусы и автоматические статусы. Рейтинг, официальные и автоматизированные статусы - это полезные способы определить репутацию образа.
Давайте загрузим самый рейтинговый" образ ubuntu. Вы можете использовать команду docker pull
:
Экспериментируем с образами Docker
Вы можете использовать команду docker info
, чтобы узнать количество имеющихся у вас образов:
$ docker info
Client:
Context: default
Debug Mode: false
Plugins:
buildx: Build with BuildKit (Docker Inc., v0.6.3)
compose: Docker Compose (Docker Inc., v2.0.0)
scan: Docker Scan (Docker Inc., v0.8.0)
Server:
Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 1
Server Version: 20.10.8
Storage Driver: overlay2
...
Но команда docker images
подробно перечислит имеющиеся у вас образы:
$ docker images
Предположим, вы решили загрузить образ NGINX.(оф.сайт) Вы можете просто выполнить еще одну команду docker pull
:
$ docker pull nginx
Теперь, если вы проверите свои образы Docker, вы увидите что-то вроде этого:
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest 597ce1600cf4 4 days ago 72.8MB
nginx latest f8f4ffc8092c 7 days ago 133MB
Вы можете узнать больше об этих образах здесь:
Вы можете использовать эти страницы для поиска конкретной версии образа. На странице Ubuntu вы заметите, что последняя версия Ubuntu - 18.04. Если вы ищете версию Ubuntu 16.04, вы можете использовать тег 16.04, чтобы загрузить именно эту версию:
$ docker pull ubuntu:16.04
После этого на вашей машине будет две версии образа Ubuntu:
Примечание: Вам не нужно регистрироваться в Docker Hub для получения образов. Но если вы хотите отправлять образы в Docker Hub, вам нужно зарегистрироваться, а затем войти в систему с помощью команды docker login
:
$ docker login --username=yourhubusername --email=youremail@post.com
Запускаем контейнер Docker для образов
Предположим, вы хотите запустить сервер NGINX на docker. Выполните следующую команду:
$ docker run -p 8080:80 nginx
Вы использовали команду run для создания контейнера NGINX из образа nginx, который вы ранее извлекли из Docker Hub. Параметр '-p 8080:80'
указывает Docker на сопоставление порта 8080 вашего локального хоста с портом 80 контейнера Docker. Вы должны иметь доступ к вашему серверу NGINX с сайта http://localhost:8080
.
Контейнер NGINX подключен к вашей командной строке. Поэтому, если вы выйдете из командной строки, контейнер будет остановлен. Вы можете запустить контейнер NGINX с опцией detach ('-d'
), чтобы он продолжал работать, даже если вы выйдете из командной строки.
$ docker run -p 8080:80 -d nginx
Приведенная выше команда запустит контейнер в обособленном режиме и вернет обратно в командную строку.
Смотрим список контейнеров Docker с помощью команды docker ps
Команда docker ps
позволяет просмотреть все запущенные контейнеры.
Здесь показаны различные свойства контейнеров. Видно, что он был создан из образа nginx, также показана информация о пробросе портов. Свойства CONTAINER ID и NAMES требуют особого упоминания. Вы можете использовать эти свойства для уникальной идентификации контейнеров. Оба эти свойства генерируются автоматически. Но вы также можете присвоить имя контейнеру в процессе его создания. Давайте создадим контейнер NGINX с именем "my_nginx":
$ docker run --name my_nginx -p 8888:80 -d nginx
Давайте снова посмотрим список контейнеров Docker:
Обратите внимание, что новый контейнер имеет имя "my_nginx". Когда вы имеете дело с большим количеством контейнеров, вы можете использовать соглашение об именовании. Это поможет вам лучше организовать контейнеры.
Команда docker ps
показывает только запущенные контейнеры. Если вы используете команду docker info
для вышеописанного случая:
$ docker info
Server:
Containers: 3
Running: 2
Paused: 0
Stopped: 1
Images: 3
Server Version: 20.10.8
Storage Driver: overlay2
...
Видно, что запущено 2 контейнера. Если у вас есть приостановленный или остановленный контейнер, вы не увидите эти контейнеры только с помощью команды docker ps
. Вам придется использовать опцию all ('-a
'):
$ docker ps -a
Запуск, остановка, перезапуск и уничтожение контейнеров
Вы можете запускать и останавливать контейнеры с помощью следующих команд Docker.
Предположим, вы хотите остановить контейнер 'my_nginx'. Вы можете использовать либо идентификатор контейнера, либо его имя. В данном случае будем использовать имя:
$ docker stop my_nginx
my_nginx
Давайте посмотрим список контейнеров Docker:
$ docker ps
$ docker ps -a
Если вы запустите docker ps
без опции -a
, он покажет только запущенные контейнеры. Во втором случае видно, что контейнер 'my_nginx' находится в статусе exited.
Давайте запустим контейнер с docker start
:
$ docker start my_nginx
my_nginx
Если вы проверите список контейнеров Docker:
$ docker ps
Вы можете видеть, что STATUS показывает, что контейнер 'my_nginx' снова работает.
Если вы хотите остановить и запустить контейнер из-за какой-то проблемы, вы можете использовать команду restart
. Это быстрее, чем останавливать и запускать контейнеры по отдельности:
$ docker restart my_nginx
Вы можете уничтожить(далее kill(англ.) - убить) контейнер docker, как процесс. Давайте "убьем" контейнер 'my_nginx':
$ docker kill my_nginx
Снова глянем список контейнеров Docker:
$ docker ps -a
Контейнер my_nginx не работает. Также в информации видно, что у вас есть запущенный контейнер и остановленный контейнер:
$ docker info
Server:
Containers: 3
Running: 1
Paused: 0
Stopped: 2
Images: 3
Server Version: 20.10.8
Storage Driver: overlay2
...
Используйте команды start или restart для запуска "убитого" контейнера.
Что ж. В этой части статьи мы с вами познакомились со списком основных команд Docker. Научились находить и "заливать" себе образы, просматривать запущенные контейнеры и вообще все имеющиеся, а так же запускать и останавливать, завершать контейнеры в Docker.
Следующая часть статьи обещает быть не менее интересной! Найти её можно здесь.
Изучи Docker на нашем курсе по Devops
Попробовать бесплатно
Оригинал статьи на английском можно найти здесь.

Sample bio text.