Docker для новичков: команды docker pull, run -p 80:80 и stop
Что такое 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) контейнер мгновенно остановится.
Эксперты ITSTM разработают архитектуру, настроят CI/CD пайплайны и упакуют приложения в отказоустойчивый кластер Docker Swarm или Kubernetes.
Частые вопросы (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.