Files
serti-docs/docs/docs/docker/commands.md

14 KiB
Raw Blame History

Команды Docker

Введение

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

Список базовых команд:

  • Справочная страница:
docker help
  • Версия Dсocker:
docker version
  • Базовая информация о работе Docker:
docker info

Поиск образов

Поиск можно осуществлять на сайте образов docker, но иногда можно искать и с помощью команд.

Почему это полезно? Мы быстрее получим необходимый список и сможем выбрать нужный Docker.

Обычный поиск:

docker search wordpress

???info "Пример резульата" NAME DESCRIPTION STARS OFFICIAL wordpress The WordPress rich content management system… 5855 [OK] bitnami/wordpress Bitnami Secure Image for wordpress 281 bitnamicharts/wordpress Bitnami Helm chart for WordPress 2 elestio/wordpress Wordpress, verified and packaged by Elestio 6 secoresearch/wordpress Apache+PHP+Varnish+Wordpress 0 shinsenter/wordpress 🔋 (PHP / Wordpress) Production-ready Docker… 5 vulhub/wordpress 4 chainguard/wordpress Build, ship and run secure software with Cha… 0 corpusops/wordpress https://github.com/corpusops/docker-images/ 0 rootpublic/wordpress 0 centurylink/wordpress Wordpress image with MySQL removed. 14 erikzenker/wordpress wordpress docker image 0 arm64v8/wordpress The WordPress rich content management system… 21 arm32v7/wordpress The WordPress rich content management system… 16 tutum/wordpress Out-of-the-box Wordpress docker image 42 amd64/wordpress The WordPress rich content management system… 2 demyx/wordpress Non-root Docker image running Alpine Linux, … 2 i386/wordpress The WordPress rich content management system… 1 ppc64le/wordpress The WordPress rich content management system… 1 wodby/wordpress Vanilla WordPress container image 2 itherz/wordpress Wordpress 0 s390x/wordpress The WordPress rich content management system… 5 spatialy/wordpress Wordpress + PHP Extensions 0 arm32v5/wordpress The WordPress rich content management system… 0 mips64le/wordpress The WordPress rich content management system… 1

Здесь мы получаем список из 4 столбцов:

  • NAME Имя
  • DESCRIPTION Описание
  • STARS Звезды, которые отображат популярность образов
  • OFFICIAL Помечаються оффициальные образы

Аргументы:

  • -f (--filter) Фильтрует результат.
    • -f stars=3 больше 3 звезд
    • -f is-offical=true только оффициальные
  • --format Преобразование вывода
    • --format "{{.Name}}" Имя образа
    • --format {{.StarCount}} Кол-во звезд
    • --format {{.Description}} Описание
    • --format {{.IsOffical}} официальный образ
  • --limit Ограничивает список до определенного количества
    • --limit 5 Выводит 5 образов
  • --no-trunc Не сокращенный вариант описания

Поиск с аргументами:

docker search --limit 5 --format "{{.Name}}: {{.Description}}" --no-trunc wordpress 

???info "Пример результата" wordpress: The WordPress rich content management system can utilize plugins, widgets, and themes. bitnami/wordpress: Bitnami Secure Image for wordpress bitnamicharts/wordpress: Bitnami Helm chart for WordPress elestio/wordpress: Wordpress, verified and packaged by Elestio secoresearch/wordpress: Apache+PHP+Varnish+Wordpress

Установка образа

Теперь попробуем установить образ nginx.

Установка образа:

docker pull nginx

???info "Пример вывода" Using default tag: latest latest: Pulling from library/nginx 02d7611c4eae: Pull complete dcea87ab9c4a: Pull complete 35df28ad1026: Pull complete 99ae2d6d05ef: Pull complete a2b008488679: Pull complete d03ca78f31fe: Pull complete d6799cf0ce70: Pull complete Digest: sha256:ca871a86d45a3ec6864dc45f014b11fe626145569ef0e74deaffc95a3b15b430 Status: Downloaded newer image for nginx:latest docker.io/library/nginx:latest

Смотря от загрузки сети, через некоторое время, у нас получиться установить nginx.

!!!note "Обратите внимание" Оффициальный поставщик образов Docker имеет имя library.

Когда мы устанавливаем оффициальные образа, можно не указывать поставщика. 

Установка определенной версии:

docker pull nginx:1.29-trixie

Под версии в Docker подразумеваются Tags. Теги просматриваются на сайте hub.docker.com. В нашем случае это данный образ.

К сожалению, с помощью команды docker нельзя просмотреть список версий. Можно с помощью api или, как было написанно выше - на сайте.

image
Теги Nginx

Просмотр установленных образов

После устанвки, можно посмотреть какие образы у нас установлены:

docker images

???info "Пример вывода" REPOSITORY TAG IMAGE ID CREATED SIZE ... nginx latest 058f4935d1cb 10 days ago 152MB ...

Мы получим пять колонок:

  • REPOSITORY имя образа (репозитория). Обычно пишеться имя поставщика/образ
  • TAG версия (тег) изображения
  • IMAGE ID ID изображения
  • CREATED Когда данный образ обновлялся
  • SIZE Размер образа

Запуск контейнера

Запуск происходит достаточно простым способом. Попробуем запустить контейнер nginx, который только что установили.

docker run nginx

Веб сервис nginx запуститься и отобразит логи.

???info "Пример логов" /docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration /docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/ /docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh 10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf 10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf /docker-entrypoint.sh: Sourcing /docker-entrypoint.d/15-local-resolvers.envsh /docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh /docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh /docker-entrypoint.sh: Configuration complete; ready for start up 2026/01/14 14:30:15 [notice] 1#1: using the "epoll" event method 2026/01/14 14:30:15 [notice] 1#1: nginx/1.29.4 2026/01/14 14:30:15 [notice] 1#1: built by gcc 14.2.0 (Debian 14.2.0-19) 2026/01/14 14:30:15 [notice] 1#1: OS: Linux 6.1.0-27-amd64 2026/01/14 14:30:15 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 1048576:1048576 2026/01/14 14:30:15 [notice] 1#1: start worker processes 2026/01/14 14:30:15 [notice] 1#1: start worker process 30 2026/01/14 14:30:15 [notice] 1#1: start worker process 31 2026/01/14 14:30:15 [notice] 1#1: start worker process 32 2026/01/14 14:30:15 [notice] 1#1: start worker process 33 2026/01/14 14:30:15 [notice] 1#1: start worker process 34 2026/01/14 14:30:15 [notice] 1#1: start worker process 35 2026/01/14 14:30:15 [notice] 1#1: start worker process 36 2026/01/14 14:30:15 [notice] 1#1: start worker process 37 2026/01/14 14:30:15 [notice] 1#1: start worker process 38 2026/01/14 14:30:15 [notice] 1#1: start worker process 39 2026/01/14 14:30:15 [notice] 1#1: start worker process 40 2026/01/14 14:30:15 [notice] 1#1: start worker process 41 2026/01/14 14:30:15 [notice] 1#1: start worker process 42 2026/01/14 14:30:15 [notice] 1#1: start worker process 43 2026/01/14 14:30:15 [notice] 1#1: start worker process 44 2026/01/14 14:30:15 [notice] 1#1: start worker process 45

Но зайти на стандартную страницу по порту 80, вероятнее вссего не получиться.

Проброс портов

Попробуем пробросить HTTP порт 80.

docker run -p 80:80 nginx
  • -p 80:80 - [HOST]:[CONTAINER] - проброс порта на машину хоста.
    • Тем же самым можно пробросить на другие порты хоста 81:80, 8080:80 и так далее. Это помогает избежать конфликтов, когда запущено несколько портов и они используют одни и те же порты.

Теперь, когда перейдем на адрес машины, то мы получим страницу по умолчанию:

  • http://localhost - кто поднимает контейнеры на основной машине или пробрасывает порты.
  • http://[адрес хоста с активным контейнером] - прямой доступ с удаленной машины.

???warning "Информация для тех, которые поднимают первый раз сайты" Браузер может запросить о подтверждения входа. Это из-за того, что используеться http протокол, а не https.

Принимаем риски.

???info "Стартовая страница nginx" Docker nginx title web site

Монтирование каталога

Однозначно, если мы говорим про nginx, нам нужен прямой доступ к /usr/share/nginx/html, да бы иметь доступ к исходному сайту.

docker run -p 80:80 -v /mnt/nginx:/usr/share/nginx/html:ro nginx
  • -v /mnt/nginx:/usr/share/nginx/html:ro - [HOST]:[CONTAINER]:[PERMISSION] - подключение каталога контейнера к машине с правами только для четения.
    • ro - только для четения не для контейнера, а для самого контейнера.
      • Это полезно, когда нужно что бы процесс в контейнере случайно не изменил сруктуру сайта.
      • Если не нужно прописывать такие обраничения, то не устанавливаем данный параметр и простовводим -v /mnt/nginx:/usr/share/nginx/html
    • Каталог автоматически создасться, если отсутствует.

!!!warning "Смотрите оф документацию по настройке NGINX" Это пример использования команд docker.

Читайте настройку.

Фоновый запуск

Контейнер уже готов для постоянного использования. Попробуем запустить в демоне.

docker run -p 80:80 -v /mnt/nginx:/usr/share/nginx/html:ro -d nginx
  • -d - Процесс будет запущен в фоне.

Просмотр рабочих контейнеров

Да бы проверить, какие контейнеры работают на данный момент, прописываем данную команду:

docker ps

📌 Документ в разработке. Следующие разделы в работе:

  • Управление контейнерами (exec, logs, ps, stop, rm)
  • Работа с томами (Volumes)
  • Сети Docker