Отлично, теперь, когда мы знаем, что такое Docker, самое время создать первый контейнер.
А внутри этого контейнера будет стоять Nginx.

docker container run (docker run)

Собственно, для создания контейнера используется команда docker run.
При этом, если образ для контейнера локально еще не загружен, произойдёт сперва его загрузка, а потом уже создание самого контейнера.

docker container run -d --name mynginx -p 80:80 nginx:latest

В итоге при выполненные команды docker container run -d --name mynginx -p 80:80 nginx:latest произошло:

  1. Скачивание образа контейнера с Docker Hub
  2. Создание нового контейнера из этого образа с именем mynginx
  3. Проброс локального порта 80 в контейнер (также порт 80).
    Т.е. весь трафик на порт 80 сервера перебрасывается на порт 80 контейнера.

Если вы хотите, чтобы ваш контейнер не работал постоянно в фоновом режиме, а только в интерактивном (пока не нажать CTRL + C), то нужно убрать опцию -d из команды.

docker container ls (docker ps)

Проверяем, что контейнер запущен с помощью команды docker ps,
которая выводит список всех запущенных контейнеров.
Если вдруг docker ps не выведет список контейнеров — добавьте опцию -a,
которая выведет список всех контейнеров (даже не запущенных).

CONTAINER ID   IMAGE         PORTS                               NAMES
39b04287fcf4   nginx:latest  0.0.0.0:80->80/tcp, :::80->80/tcp   mynginx

Теперь, когда контейнер запущен, можно проверить, что Nginx работает и отвечает на запросы.
Для этого локально можно выполнить запрос curl http://127.0.0.1:80 и в ответ получить:

<h1>Welcome to nginx!</h1>

Если же у вас локально стоит браузер, то, перейдя всё по тому же адресу (http://127.0.0.1:80),
в браузере должна открыться стандартная страница Nginx.

Но если необходимо открыть страницу на другом компьютере,
то для начала нужно открыть порт 80 на файрволе и узнать IP-адрес.

sudo firewall-cmd --add-port=80/tcp --permanent
sudo firewall-cmd --reload
ip a
172.31.144.9

Далее в браузере открываем url http://172.31.144.9:80

docker container stop (docker stop)

Для остановки работающего контейнера используется команда docker stop.
В качестве аргумента нужно передать имя контейнера или его ID
(можно не писать весь ID), получить которые можно, выполнив команду docker ps.

docker stop mynginx
docker ps -a
CONTAINER ID   STATUS                        NAMES
39b04287fcf4   Exited (0) 14 seconds ago     mynginx

docker container start (docker start)

Для запуска остановленного контейнера используется команда docker start.
В качестве аргумента нужно передать имя контейнера или его ID (можно не писать весь ID), получить которые можно, выполнив команду docker ps.

docker start mynginx
docker ps
CONTAINER ID   STATUS                        NAMES
39b04287fcf4   Up 3 seconds                  mynginx

Не путайте команду docker start с docker run.

случайные имена для контейнеров

Если выполнить команду docker container run с опцией –name mynginx,
то имя у созданного контейнера будет mynginx.
Но это не всегда нужно — точнее, иногда это вообще только мешает.

Дело в том, что бывают ситуации, когда нужно запустить несколько экземпляров контейнера,
при этом не переживая за имена.
Чтобы это выполнить, запускаем команду docker container run без –name.

docker container run -d nginx:latest
docker container run -d nginx:latest
docker ps
CONTAINER ID   STATUS                  NAMES
e68a72f1ec7a   Up 2 seconds            interesting_mclaren
1acc09807f14   Up 3 seconds            fervent_lewin

docker container rm (docker rm)

Теперь настал момент, когда необходимо удалить все созданные контейнеры во время написания этой статьи.
Для удаления контейнера используется команда docker rm, в качестве параметра передаём имя контейнера (может быть несколько).

docker ps -a
docker rm mynginx 1acc f510
1acc
f510
Error response from daemon: cannot remove container "/mynginx": container is running: stop the container before removing or force remove

Контейнер с названием mynginx не удалился потому что он запущен. Для того чтобы удалить даже запущенные контейнеры добавляем -f. Но я рекомендую так не делать, а вместо этого сперва остановить контейнер и потом его удалять, чтобы не удалить что-то важное.