Пример 1: hello-world — первый запуск
Классическая проверка работоспособности Docker. Образ hello-world специально создан для демонстрации механизма работы.
# Терминал
docker run hello-world
Что происходит пошагово:
- Docker CLI отправляет команду Docker Daemon
- Daemon проверяет: есть ли образ
hello-worldлокально? - Если нет — скачивает с Docker Hub (
docker pull hello-worldнеявно) - Создаёт контейнер из образа
- Контейнер выводит сообщение и завершает работу
Ожидаемый вывод в терминале:
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
...
Hello from Docker!
This message shows that your installation appears to be working correctly.
Пример 2: nginx в контейнере
Запустим веб-сервер nginx — показывает пробрасывание портов и фоновый режим.
# Терминал
docker run -d -p 8080:80 --name my-nginx nginx
Разбор флагов:
-d— запустить в фоне (detached)-p 8080:80— порт 8080 на хосте → порт 80 в контейнере--name my-nginx— назвать контейнерmy-nginxnginx— образ для запуска
Проверяем:
# Терминал
docker ps # увидим работающий контейнер my-nginx
docker logs my-nginx # логи nginx (запросы к серверу)
Откройте браузер по адресу http://localhost:8080 — появится страница приветствия nginx.
Остановить и удалить:
# Терминал
docker stop my-nginx
docker rm my-nginx
Пример 3: Ubuntu интерактивно
Заходим «внутрь» контейнера — полноценная Linux-среда в изоляции.
# Терминал
docker run -it --rm ubuntu bash
Флаги:
-it— interactive + TTY: присоединяем терминал--rm— удалить контейнер автоматически после выходаubuntu— образbash— команда для запуска внутри контейнера
Внутри контейнера вы увидите промпт вида root@a3f1c2d4e5b6:/#. Можно выполнять команды:
# Внутри контейнера Ubuntu
cat /etc/os-release # версия Ubuntu
ls / # корневая файловая система
apt update # обновить пакеты (изолировано!)
exit # выйти и удалить контейнер (из-за --rm)
Пример 4: работа с образами
# Терминал
# Скачать образ Python
docker pull python:3.12-slim
# Посмотреть список образов
docker images
# Запустить Python REPL в контейнере
docker run -it --rm python:3.12-slim python3
# Удалить образ
docker rmi python:3.12-slim
Вывод команды docker images:
REPOSITORY TAG IMAGE ID CREATED SIZE
python 3.12-slim abc123def456 2 weeks ago 130MB
nginx latest 789xyz012345 3 weeks ago 187MB
ubuntu latest 456abc789xyz 4 weeks ago 77.8MB
Пример 5: инспекция контейнера
# Терминал
docker run -d --name test-nginx nginx
docker inspect test-nginx
Из вывода docker inspect можно извлечь нужные данные (например, IP контейнера):
# Терминал — извлечь IP-адрес
docker inspect --format="{{.NetworkSettings.IPAddress}}" test-nginx
# Очистить
docker stop test-nginx && docker rm test-nginx