Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

Linux / DevOps

Docker для новичков: команды docker pull, run -p 80:80 и stop

Обновлено: 26.08.2026 · Официальная документация ↗

Что такое Docker и почему его обожают инженеры

Docker (Докер) — это инструмент, который позволяет запаковать программу со всеми ее библиотеками, настройками и зависимостями в единую изолированную коробку, которая называется Контейнером (Container). В отличие от тяжелых виртуальных машин (VirtualBox/VMware), Docker не запускает отдельную копию операционной системы, а работает прямо на ядре Linux, стартуя за доли секунды и потребляя минимум оперативной памяти.

Базовые сущности Docker простыми словами

СущностьЧто это такоеАналогия из жизни
Image (Образ)Шаблон только для чтения со всеми файлами программы.Кулинарный рецепт или установочная флешка.
Container (Контейнер)Живой запущенный процесс, созданный из образа.Готовое блюдо, приготовленное по рецепту.
Docker HubПубличное облачное хранилище тысяч готовых образов.Магазин приложений App Store или Google Play.

Пошаговый запуск первого веб-сервера в Docker

Шаг 1: Скачивание готового образа (docker pull)

Скачаем официальный образ популярного веб-сервера Nginx из интернета:

docker pull nginx:latest

Шаг 2: Запуск контейнера с пробросом порта (docker run)

Запустим контейнер с Nginx в фоновом режиме, связав порт сервера с портом контейнера:

docker run -d --name my-web-server -p 80:80 nginx

Разбор флагов команды:

  • -d (Detached) — запустить контейнер в фоновом режиме (чтобы терминал остался свободным).
  • --name my-web-server — дать нашему контейнеру понятное имя вместо случайного набора букв.
  • -p 80:80 — пробросить порт: [Порт хоста (снаружи)] : [Порт внутри контейнера].
  • nginx — имя образа, из которого запускается контейнер.

Теперь откройте браузер на своем компьютере и введите http://IP_вашего_сервера — вы увидите стартовую страницу «Welcome to nginx!».

Шаг 3: Просмотр запущенных контейнеров (docker ps)

Посмотрим список всех работающих контейнеров:

docker ps

 Посмотреть вообще все контейнеры (включая остановленные)
docker ps -a

Шаг 4: Остановка и удаление контейнера

 Остановить работающий контейнер
docker stop my-web-server

 Удалить остановленный контейнер
docker rm my-web-server

Типовые ошибки администраторов

  • Конфликт портов (Bind for 0.0.0.0:80 failed: port is already allocated): Ошибка возникает, если на сервере уже запущен локальный Apache или Nginx, который занял 80-й порт. Решение: пробросьте внешний порт на другой номер, например -p 8080:80.
  • Забытый флаг -d: Если запустить docker run без флага -d, логи контейнера займут всю консоль, а при закрытии терминала (Ctrl+C) контейнер мгновенно остановится.
Планируете перевести сервисы компании на микросервисы и Docker?
Эксперты ITSTM разработают архитектуру, настроят CI/CD пайплайны и упакуют приложения в отказоустойчивый кластер Docker Swarm или Kubernetes.
💡 Практика специалистов: Никогда не запускайте контейнеры с флагом '--privileged' в рабочей среде (Production), если только вы не строите специфический VPN/Cisco шлюз. Привилегированный контейнер дает потенциальному злоумышленнику прямой доступ к хостовой ОС и оборудованию сервера.

Частые вопросы (FAQ)

Сохраняются ли файлы внутри контейнера после его остановки (docker stop)?

Да, при обычной остановке и повторном запуске (docker start) файлы внутри сохраняются. Но если контейнер удалить командой 'docker rm', все несохраненные данные сотрутся. Для сохранения файлов используют тома (Volumes).

Как зайти внутрь работающего контейнера и выполнить команды?

Используйте команду: docker exec -it имя_контейнера bash (или sh, если bash не установлен).

Как посмотреть логи ошибок внутри контейнера?

Используйте команду просмотра логов в реальном времени: docker logs -f имя_контейнера.

Как сделать так, чтобы контейнер сам перезапускался при падении или перезагрузке сервера?

Добавьте флаг перезапуска при создании контейнера: docker run -d --restart unless-stopped -p 80:80 nginx.

Полезные материалы
Рекомендуем