Поиск по сайту:

Говорите правду — и вы будете оригинальны (А.В. Вампилов).

5 мин для чтенияКоманда запуска Docker с примерами

FavoriteLoadingДобавить в избранное
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...
27 ноября 2019
Установить Docker 1.11 на Ubuntu 16.04 LTS x64
Docker – это платформа, которая позволяет вам разрабатывать, тестировать и развертывать приложения в виде переносимых самодостаточных контейнеров, которые работают практически везде.

Команда docker run создает контейнер из заданного изображения и запускает контейнер, используя данную команду. Это одна из первых команд, с которыми вам следует ознакомиться при начале работы с Docker.

В этой статье мы будем использовать официальный образ Nginx, чтобы показать различные способы запуска контейнера Docker.

 

Команда docker run принимает следующую форму:

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

Имя образа, из которого должен быть создан контейнер, является единственным обязательным аргументом для команды docker run. Если образ отсутствует в локальной системе, он извлекается из реестра.

Если команда не указана, при запуске контейнера выполняется команда, указанная в файле Dockerfile инструкциях CMD или ENTRYPOINT.

Начиная с версии 1.13, интерфейс командной строки Docker был реструктурирован, и все команды были сгруппированы по объекту, с которым они взаимодействуют.

Поскольку команда run взаимодействует с контейнерами, теперь она является подкомандой docker container. Синтаксис новой команды следующий:

docker container run [OPTIONS] IMAGE [COMMAND] [ARG...]

Старый, до 1.13 синтаксис все еще поддерживается. Под капотом команда docker run является псевдонимом docker container run. Пользователям рекомендуется использовать новый командный синтаксис.

Список всех опций 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.

Читать  Использование арифметических операторов в сценариях Bash

 

По умолчанию при выходе из контейнера его файловая система сохраняется в хост-системе.

Команда –rm options говорит команде docker запустить удаление контейнера при его автоматическом выходе:

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
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://localhost:8080

Вывод будет выглядеть примерно так:

HTTP/1.1 200 OK
Server: nginx/1.17.6
Date: Tue, 27 Nov 2019 07:35:21 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Tue, 24 Nov 2019 15:45:22 GMT
Connection: keep-alive
ETag: "5dd3e500-264"
Accept-Ranges: bytes

Когда контейнер останавливается, все данные, сгенерированные контейнером, удаляются. Тома Docker являются предпочтительным способом сохранения данных и их совместного использования в нескольких контейнерах.

Читать  Как генерировать случайный пароль в оболочке Linux

Для создания томов и управления ими используйте следующий параметр -p:

-v host_src:container_dest:options
  • host_src – Может быть абсолютный путь к файлу или каталогу на хосте или имени тома.
  • container_dest – Абсолютный путь к файлу или директории на контейнере.
  • Варианты могут быть 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 http://localhost:8080
Testing Docker Volumes

При работе с такими интерактивными процессами, как bash, используйте параметры -i и -t для запуска контейнера.

Опции -it говорят DOCKER держать стандартный ввод, прикрепленный к терминалу и выделить псевдо-терминал:

docker container run -it nginx /bin/bash

Оболочка Bash контейнера будет присоединена к терминалу, и командная строка изменится:

root@1da70f1937f5:/#

Теперь вы можете взаимодействовать с оболочкой контейнера и выполнять любую команду внутри него.

В этом примере мы предоставили command ( /bin/bash) в качестве аргумента для команды docker run, которая была выполнена вместо той, которая указана в Dockerfile.

 

Docker является стандартом для упаковки и развертывания приложений и важным компонентом CI/CD, автоматизации и DevOps.

Команда docker container run используется для создания и запуска контейнеров Docker.

Если у вас есть какие-либо вопросы, пожалуйста, оставьте комментарий ниже.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Читайте также

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам:

Заполните форму и наш менеджер перезвонит Вам в самое ближайшее время!

badge
Обратный звонок 1
Отправить
galka

Спасибо! Ваша заявка принята

close
galka

Спасибо! Ваша заявка принята

close