💻 Примеры: первые шаги с Docker

⚡ Кратко: три ключевых примера

# Терминал — пример 1: hello-world
docker run hello-world

# Терминал — пример 2: nginx на порту 8080
docker run -d -p 8080:80 --name my-nginx nginx
# Откройте браузер: http://localhost:8080

# Терминал — пример 3: Ubuntu интерактивно
docker run -it --rm ubuntu bash
# Внутри контейнера:
cat /etc/os-release
exit

Пример 1: hello-world — первый запуск

Классическая проверка работоспособности Docker. Образ hello-world специально создан для демонстрации механизма работы.

# Терминал
docker run hello-world

Что происходит пошагово:

  1. Docker CLI отправляет команду Docker Daemon
  2. Daemon проверяет: есть ли образ hello-world локально?
  3. Если нет — скачивает с Docker Hub (docker pull hello-world неявно)
  4. Создаёт контейнер из образа
  5. Контейнер выводит сообщение и завершает работу

Ожидаемый вывод в терминале:

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-nginx
  • nginx — образ для запуска

Проверяем:

# Терминал
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