Отлично, теперь, когда мы знаем, что такое 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
- Выдача виртуального ip-адреса в приватной сети Docker
- Проброс локального порта 80 в контейнер (также порт 80).
Т.е. весь трафик на порт 80 сервера перебрасывается на порт 80 контейнера. - Запуск контейнера с выполнением команды CMD
Если вы хотите, чтобы ваш контейнер не работал постоянно в фоновом режиме, а только в интерактивном (пока не нажать 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. Но я рекомендую так не делать, а вместо этого сперва остановить контейнер и потом его удалять, чтобы не удалить что-то важное.


Комментарии