Android

Docker запускает команду с примерами

Docker Networking Tutorial | Container Network Model | Docker Tutorial For Beginners | Simplilearn

Docker Networking Tutorial | Container Network Model | Docker Tutorial For Beginners | Simplilearn

Оглавление:

Anonim

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

Testing Docker Volumes

Запустите контейнер интерактивно

При работе с интерактивными процессами, такими как 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.

докер