Как использовать контейнеры Docker

Контейнеры являются жизненной силой каждой установки Docker. Они служат основой платформы Docker и позволяют вам запускать службы на вашем компьютере, не беспокоясь о зависимостях и конфликтах версий. Здесь мы покажем вам основы создания, управления и настройки контейнеров Docker с помощью инструмента командной строки Docker.
Содержание
- Как найти и загрузить образ Docker
- Как запустить и остановить контейнер Docker
- Как просмотреть контейнер Docker
- Как настроить контейнер Docker
- Как удалить контейнеры и образы Docker
Примечание: Начните с установки Docker на вашу систему Linux.
Как найти и загрузить образ Docker
Контейнеры Docker — это особый тип программной среды, который позволяет вам запускать программы отдельно от остальной части вашей оригинальной системы. Для этого Docker использует “программные образы”. Это статические копии программ, которые служат базой, с которой начинается контейнер.
Это различие между образом и контейнером позволяет вам воссоздавать и адаптировать ваше программное обеспечение любым необходимым образом. Например, вы можете иметь образ, такой как “httpd”, но создать из него два отдельных контейнера: “website1” и “website2”.
Самый простой способ найти новый образ Docker — использовать подкоманду search:
docker search httpd
Вы также можете искать пакеты на сайте Docker Hub, если предпочитаете использовать веб-браузер.

Чтобы загрузить образ на вашу систему, выполните следующую команду:
docker image pull httpdПодтвердите, что вы правильно добавили новый образ в вашу систему, используя подкоманду images:
docker images
Создание нового образа с помощью Dockerfiles
Помимо загрузки предустановленных образов с Docker Hub, вы можете создавать образы прямо из командной строки Docker. Это полезно, если вы хотите создать пользовательские версии существующих программных пакетов или переносите новые приложения на Docker.
Для этого сначала создайте папку в вашем домашнем каталоге для ваших файлов сборки:
mkdir ~/my-docker-image && cd ~/my-docker-imageСоздайте новый Dockerfile с помощью вашего любимого текстового редактора:
nano ./DockerfileВставьте следующие строки кода в ваш новый Dockerfile:
FROM nginx
COPY sample-site /usr/share/nginx/htmlСоздайте папку “sample-site” и либо скопируйте в нее, либо создайте базовый HTML-сайт:
mkdir ./sample-site
cp ~/index.html ./sample-site/Сохраните ваш новый Dockerfile, затем выполните следующую команду, чтобы собрать его на вашей системе:
docker build -t custom-nginx .Проверьте, присутствует ли ваш новый образ Docker в вашем списке образов Docker:
docker images
Создание нового образа из существующих контейнеров
Инструмент командной строки Docker также может создавать новые образы из контейнеров, которые в настоящее время существуют в вашей системе. Это полезно, если вы уже работаете в существующей среде и хотите создать новый образ из вашей текущей настройки.
Для этого убедитесь, что ваш контейнер в данный момент не запущен:
docker stop my-http-serverЗапустите подкоманду commit, за которой следует имя вашего контейнера, затем укажите имя вашего нового образа Docker:
docker commit my-http-server my-new-server-imageПодтвердите, что ваш новый образ Docker находится в вашей системе, запустив docker images.

Как запустить и остановить контейнер Docker
С вашим образом Docker готовым, вы теперь можете начать использовать его для создания вашего первого контейнера. Для этого используйте подкоманду run, за которой следует имя образа, который вы хотите запустить:
docker run httpdХотя это сработает для запуска вашего первого контейнера Docker, делать это таким образом займет вашу текущую сессию оболочки. Чтобы запустить ваш контейнер в фоновом режиме, добавьте флаг -d после подкоманды run:
docker run -d httpdПодкоманда run также может принимать ряд дополнительных флагов, которые могут изменить поведение вашего нового контейнера Docker. Например, флаг --name позволяет вам добавить настраиваемое имя к вашему контейнеру:
docker run -d --name=my-http-server httpdС другой стороны, вы можете использовать флаг --publish, чтобы перенаправить сетевой порт, по которому вы можете получить доступ к вашему контейнеру Docker. Это в первую очередь полезно, если вы не хотите, чтобы ваш контейнер занимал привилегированный порт:
docker run -d --name=my-http-server --publish 8080:80 httpd
Вы можете проверить все текущие запущенные контейнеры Docker в вашей системе, выполнив следующую команду:
docker psПодобно подкоманде run, ps также может принимать несколько флагов, которые изменят его поведение. Например, чтобы просмотреть контейнеры, которые в данный момент отключены, используйте флаг -a:
docker ps -aЧтобы отключить запущенный контейнер, используйте подкоманду stop, за которой следует либо ID контейнера, либо имя вашего контейнера Docker:
docker stop my-http-serverВы можете перезапустить любой контейнер, который вы остановили, повторно запустив подкоманду start:
docker start my-http-serverКстати: изучите основы веб-хостинга с помощью Docker, запустив простой веб-сайт с использованием darkhttpd.
Приостановка и завершение работы контейнера Docker
Инструмент командной строки Docker также позволяет вам временно приостанавливать и завершать работу процесса контейнера. Это может быть полезно, если вы устраняете проблему с вашей настройкой Docker и хотите либо изолировать, либо остановить неправильно работающий контейнер.
Начните с выполнения docker ps, чтобы перечислить все запущенные контейнеры в системе.
Найдите либо ID, либо имя контейнера, который вы хотите управлять.

Запустите подкоманду pause, за которой следует имя контейнера, который вы хотите временно приостановить:
docker pause my-http-serverВы можете возобновить приостановленный процесс, запустив подкоманду unpause:
docker unpause my-http-serverЧтобы остановить неправильно работающий процесс, выполните подкоманду kill, за которой следует имя вашего контейнера:
docker kill my-http-serverКак просмотреть контейнер Docker
Знание тонкостей вашего контейнера является важной частью поддержания здоровья вашего стека Docker. Это позволяет вам быстро взглянуть на любые потенциальные проблемы, и это может быть разницей между исправлением и переделкой всей вашей развертки.
Чтобы посмотреть обзор вашего контейнера Docker, выполните подкоманду inspect:
docker inspect my-http-serverВыполнение этого выведет длинную строку JSON, которая описывает текущее состояние вашего контейнера. Вы можете сузить это, либо перенаправив вывод в jq, либо используя встроенный флаг -f, за которым следует JSON-объект, который вы хотите напечатать:
docker inspect -f {{.Name}} my-http-serverПечать логов контейнера в терминал
Кроме того, вы также можете отслеживать и печатать логи любого текущего работающего контейнера Docker. Это может быть полезно, если вы хотите проверить, как ваша служба в настоящее время ведет себя, и посмотреть на вывод, который она возвращает в STDOUT.
Для этого выполните подкоманду logs, за которой следует имя вашего контейнера:
docker logs my-http-serverВы также можете запустить подкоманду logs с флагом --follow, чтобы создать непрерывный лог вашей службы Docker. Это похоже на выполнение tail -f в конце UNIX-конвейера:
docker logs --follow my-http-server
Подобно другим подкомандам, вы также можете добавить различные флаги, чтобы настроить вывод логов вашего контейнера Docker. Например, флаг --timestamps добавляет детализированную метку времени для каждого сообщения, которое ваш контейнер отправляет в свой STDOUT:
docker logs --timestamps my-http-serverФлаг --details выведет даже переменные окружения, которые вы установили для вашего текущего контейнера Docker. Тем временем флаг --since позволяет вам показывать только логи, которые произошли после определенного момента времени:
docker logs --details --since 8m my-http-server
Как настроить контейнер Docker
В своей основе контейнер Docker — это небольшая, упрощенная версия Linux, работающая поверх вашей текущей системы. Это означает, что, подобно виртуальной машине, вы можете получить доступ и извлечь данные внутри вашего контейнера.
Чтобы скопировать локальный файл с вашего хост-машины в контейнер, выполните подкоманду cp:
docker cp ~/my-file my-http-server:/tmpИногда вам также нужно будет “войти” в контейнеры, открыв оболочку внутри них. Таким образом, вы можете редактировать файлы, устанавливать бинарные файлы и настраивать их в соответствии с вашими потребностями:
docker exec -it my-http-server /bin/bashТеперь вы можете, например, отредактировать “index.html” и создать домашнюю страницу для сайта внутри.

Чтобы выйти из оболочки контейнера, нажмите Ctrl + D или выполните exit в терминале.

Полезно знать: узнайте, как переместить существующий контейнер Docker на новую систему.
Как удалить контейнеры и образы Docker
Удаление неиспользуемых контейнеров и образов Docker является важной частью общего обслуживания вашей развертки. Это позволяет вам удалить ненужные файлы с вашего сервера, экономя место для хранения в долгосрочной перспективе.
Перед тем как удалить контейнер, убедитесь, что вы сначала остановили его:
docker stop my-http-serverТеперь удалите контейнер, используя подкоманду rm:
docker rm my-http-serverПодтвердите, что вы правильно удалили ваш старый контейнер Docker, выполнив docker ps -a.

Удалите ваш оригинальный образ Docker из вашей развертки Docker:
docker rmi my-new-server-image
Проверьте, правильно ли вы удалили ваш оригинальный образ Docker, выполнив docker images.

Изучение того, как создавать, управлять и удалять контейнеры Docker, — это лишь некоторые из того, что вы можете сделать с вашим сервером Linux. Исследуйте глубокий мир администрирования систем Linux, размещая сервер и хранилище контейнеров Docker с XPipe.
Кредит изображения: Shamin Haky через Unsplash. Все изменения и скриншоты сделаны Ramces Red.