Отлично, теперь, когда мы знаем, что такое 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
произошло:
- Скачивание образа контейнера с Docker Hub
- Создание нового контейнера из этого образа с именем mynginx
- Проброс локального порта 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
. Но я рекомендую так не делать, а вместо этого сперва остановить контейнер и потом его удалять, чтобы не удалить что-то важное.
Комментарии