Docker Networking Tutorial | Container Network Model | Docker Tutorial For Beginners | Simplilearn
Оглавление:
- Команда запуска Docker
- Запустите контейнер на переднем плане
- Запустите контейнер в отдельном режиме
- Удалить контейнер после выхода
- Установите имя контейнера
- Публикация контейнерных портов
- Совместное использование данных (монтирование томов)
- Запустите контейнер интерактивно
- Вывод
Docker - это платформа, которая позволяет вам разрабатывать, тестировать и развертывать приложения в виде переносимых самодостаточных контейнеров, которые работают практически везде.
Команда
docker run
создает контейнер из заданного изображения и запускает контейнер, используя данную команду. Это одна из первых команд, с которыми вам следует ознакомиться при начале работы с Docker.
Мы будем использовать официальное изображение Nginx, чтобы показать различные способы запуска контейнера Docker.
Команда запуска Docker
Команда
docker run
принимает следующую форму:
docker run IMAGE
Имя образа, из которого должен быть создан контейнер, является единственным обязательным аргументом для команды
docker run
. Если образ отсутствует в локальной системе, он извлекается из реестра.
Если команда не указана, команда, указанная в инструкциях Dockerfile
CMD
или
ENTRYPOINT
выполняется при запуске контейнера.
Начиная с версии 1.13, интерфейс командной строки Docker был реструктурирован, и все команды были сгруппированы по объекту, с которым они взаимодействуют.
Поскольку команда
run
взаимодействует с контейнерами, теперь она является подкомандой
docker container
. Синтаксис новой команды следующий:
docker container run IMAGE
Старый, до 1.13 синтаксис все еще поддерживается. Под капотом команда
docker run
является псевдонимом
docker container run
. Пользователям рекомендуется использовать новый командный синтаксис.
Список всех параметров
docker container run
Docker-
docker container run
можно найти на странице документации Docker.
Запустите контейнер на переднем плане
По умолчанию, когда в команде
docker run
не предоставлено ни одной опции, корневой процесс запускается на переднем плане. Это означает, что стандартный ввод, вывод и ошибка корневого процесса привязаны к сеансу терминала.
docker container run nginx
Вывод процесса nginx будет отображаться на вашем терминале. Поскольку нет никаких подключений к веб-серверу, терминал пуст.
Чтобы остановить контейнер, завершите запущенный процесс Nginx, нажав
CTRL+C
Запустите контейнер в отдельном режиме
Чтобы контейнер продолжал работать при выходе из сеанса терминала, запустите его в отдельном режиме. Это похоже на запуск процесса Linux в фоновом режиме.
Используйте опцию
-d
для запуска отдельного контейнера:
docker container run -d nginx
050e72d8567a3ec1e66370350b0069ab5219614f9701f63fcf02e8c8689f04fa
Отсоединенный контейнер остановится после завершения корневого процесса.
Вы можете просмотреть список запущенных контейнеров с помощью команды
docker container ls
.
Чтобы подключить ваш терминал к корневому процессу отсоединенного контейнера, используйте команду
docker container attach
.
Удалить контейнер после выхода
По умолчанию при выходе из контейнера его файловая система сохраняется в хост-системе.
Опция
--rm
указывает команде
docker run
удалить контейнер при его автоматическом выходе:
docker container run --rm nginx
Изображение Nginx может быть не лучшим примером для очистки файловой системы контейнера после выхода из контейнера. Этот параметр обычно используется в контейнерах переднего плана, которые выполняют краткосрочные задачи, такие как тестирование или резервное копирование базы данных.
Установите имя контейнера
В Docker каждый контейнер идентифицируется по его
UUID
и имени. По умолчанию, если не указано иное, имя контейнера автоматически генерируется демоном Docker.
Используйте параметр
--name
чтобы назначить пользовательское имя контейнеру:
docker container run -d --name my_nginx nginx
Имя контейнера должно быть уникальным. Если вы попытаетесь запустить другой контейнер с тем же именем, вы получите ошибку, подобную этой:
docker: Error response from daemon: Conflict. The container name "/my_nginx" is already in use by container "9…c". You have to remove (or rename) that container to be able to reuse that name.
Запустите
docker container ls -a
чтобы
docker container ls -a
список всех контейнеров и увидеть их имена:
docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9d695c1f5ef4 nginx "nginx -g 'daemon of…" 36 seconds ago Up 35 seconds 80/tcp my_nginx
Значимые имена полезны для ссылки на контейнер в сети Docker или при выполнении команд командной строки Docker.
Публикация контейнерных портов
По умолчанию, если порты не опубликованы, процесс, запущенный в контейнере, доступен только внутри контейнера.
Публикация портов означает сопоставление портов контейнера с портами хост-машины, чтобы порты были доступны для служб за пределами Docker.
Чтобы опубликовать порт, используйте параметры
-p
следующим образом:
-p host_ip:host_port:container_port/protocol
- Если
host_ip
не указан, по умолчанию используется0.0.0.0
Еслиprotocol
не указан, по умолчанию используется TCP.Для публикации нескольких портов используйте несколько опций-p
.
Чтобы сопоставить порт TCP 80 (nginx) в контейнере с портом 8080 на интерфейсе локального хоста, вы должны выполнить:
docker container run --name web_server -d -p 8080:80 nginx
Вы можете проверить, опубликован ли порт, открыв
http://localhost:8080
в вашем браузере или выполнив следующую команду
curl
на хосте Docker:
curl -I
Вывод будет выглядеть примерно так:
HTTP/1.1 200 OK Server: nginx/1.17.6 Date: Tue, 26 Nov 2019 22:55:59 GMT Content-Type: text/html Content-Length: 612 Last-Modified: Tue, 19 Nov 2019 12:50:08 GMT Connection: keep-alive ETag: "5dd3e500-264" Accept-Ranges: bytes
Совместное использование данных (монтирование томов)
Когда контейнер останавливается, все данные, сгенерированные контейнером, удаляются. Тома Docker являются предпочтительным способом сохранения данных и их совместного использования в нескольких контейнерах.
Для создания томов и управления ими используйте параметры
-p
следующим образом:
-v host_src:container_dest:options
-
host_src
может быть абсолютным путем к файлу или каталогу на хосте или именованнымhost_src
- это абсолютный путь к файлу или каталогу на контейнере.rw
могут бытьrw
(чтение-запись) иro
(только чтение)). Если опция не указана, по умолчанию используется значениеrw
.
Чтобы объяснить, как это работает, давайте создадим каталог на хосте и поместим в него файл
index.html
:
mkdir public_html
echo "Testing Docker Volumes" > public_html/index.html
Затем, смонтируйте каталог
public_html
в
/usr/share/nginx/html
в контейнере:
docker run --name web_server -d -p 8080:80 -v $(pwd)/public_html:/usr/share/nginx/html nginx
Вместо указания абсолютного пути к каталогу
public_html
мы используем команду
$(pwd)
, которая печатает текущий рабочий каталог.
Теперь, если вы введете
http://localhost:8080
в своем браузере, вы должны увидеть содержимое файла
index.html
. Вы также можете использовать
curl
:
curl
Запустите контейнер интерактивно
При работе с интерактивными процессами, такими как
bash
, используйте параметры
-i
и
-t
, чтобы запустить контейнер.
Опция
-it
указывает Docker, чтобы стандартный ввод был подключен к терминалу и выделил псевдо-tty:
docker container run -it nginx /bin/bash
Оболочка Bash контейнера будет присоединена к терминалу, и командная строка изменится:
root@1da70f1937f5:/#
Теперь вы можете взаимодействовать с оболочкой контейнера и выполнять любую команду внутри него.
В этом примере мы предоставили команду (
/bin/bash
) в качестве аргумента для команды
docker run
которая была выполнена вместо команды, указанной в Dockerfile.
Вывод
Docker является стандартом для упаковки и развертывания приложений и важным компонентом CI / CD, автоматизации и DevOps.
Команда
docker container run
используется для создания и запуска контейнеров Docker.
Команда Echo в Linux с примерами
Команда echo является одной из самых основных и часто используемых команд в Linux. Аргументы, передаваемые echo, выводятся на стандартный вывод.
Команда curl в linux с примерами
Curl - это утилита командной строки для передачи данных с или на сервер, предназначенная для работы без взаимодействия с пользователем. В этом руководстве мы покажем вам, как использовать инструмент скручивания, на практических примерах и подробных объяснениях наиболее распространенных вариантов скручивания.
Пробовал команду в linux с примерами
Tr - утилита командной строки в системах Linux и Unix, которая переводит, удаляет и сжимает символы из стандартного ввода и записывает результат в стандартный вывод.