Docker для чайников: как скачать (pull), запустить Nginx (-p 80:80) и остановить контейнер
Пользователь только что установил Docker на сервер, но не понимает базовых концепций: как скачать готовый образ с Docker Hub, как открыть доступ к сайту через порт 80 и как посмотреть список работающих контейнеров.
Что такое образ (Image) и контейнер (Container)?
- Образ (Image) — это «шаблон / слепок» программы со всеми нужными файлами (как установочный образ ISO).
- Контейнер (Container) — это живой запущенный экземпляр этого образа в изолированной песочнице.
Шаг 1. Скачивание образа с Docker Hub (команда docker pull)
Скачаем официальный легковесный веб-сервер Nginx:
sudo docker pull nginx:latestШаг 2. Запуск контейнера с пробросом портов (docker run)
Запустим Nginx одной командой:
sudo docker run -d --name my-web-server -p 80:80 nginxРазбор флагов команды:
-d(detached) — запустить контейнер в фоновом режиме, чтобы терминал не завис;--name my-web-server— дать понятное человеческое имя нашему контейнеру;-p 80:80— проброс портов. Первая цифра80— это порт на вашем сервере, вторая80— порт внутри контейнера;nginx— имя образа, из которого создается контейнер.
Теперь откройте браузер и введите IP-адрес вашего сервера — вы увидите страницу «Welcome to nginx!».
Шаг 3. Просмотр списка работающих контейнеров (docker ps)
sudo docker psЧтобы увидеть все контейнеры (включая остановленные), добавьте флаг -a: sudo docker ps -a.
Шаг 4. Остановка и удаление контейнера
- Временно остановить контейнер:
sudo docker stop my-web-server - Снова запустить остановленный контейнер:
sudo docker start my-web-server - Удалить контейнер навсегда:
sudo docker rm my-web-server
Частые вопросы (FAQ)
Что делать, если при запуске пишет: 'Bind for 0.0.0.0:80 failed: port is already allocated'?
Порт 80 на вашем сервере уже занят другой программой (например, локальным Apache или другим Nginx). Запустите контейнер на другом внешнем порту: -p 8080:80, и открывайте сайт по адресу http://IP:8080.
Как посмотреть логи того, что происходит внутри контейнера?
Используйте команду: sudo docker logs -f my-web-server (флаг -f транслирует новые логи в реальном времени).
Как зайти внутрь работающего контейнера в терминал?
Выполните команду интерактивного входа: sudo docker exec -it my-web-server /bin/bash (или sh).
Сохранятся ли файлы внутри контейнера, если его удалить командой docker rm?
Нет! Контейнеры эфемерны. При удалении контейнера все созданные внутри него файлы стираются. Для сохранения файлов используют Docker Volumes или Bind Mounts.