Запуск образа докера ubuntu в фоновом режиме

Я пытался запустить образ докера Ubuntu в фоновом режиме. Итак, я попробовал команду ниже

sudo docker container run -d --name my-ubuntu-container ubuntu:latest

Но эта команда не запускает контейнер в фоновом режиме. На самом деле статус становится EXITED при проверке с помощью

docker container ls -a

Но если я добавлю флаг -it в команду выше. Затем контейнер запускается в фоновом режиме.

sudo docker container run -itd --name my-ubuntu-container ubuntu:latest

Теперь о регистрации docker container ls -a. Теперь мы видим статус в UP, и он работает в фоновом режиме.

Кто-нибудь может посоветовать, почему добавление флага -it в команду выше вместе с -d запускает образ докера Ubuntu в фоновом режиме?


person nayak0765    schedule 11.03.2021    source источник
comment
Стандартное изображение ubuntu само по себе ничего не делает. Есть ли причина, по которой вы хотите, чтобы он работал? У вас есть более полный файл Dockerfile для пользовательского образа, который вы пытаетесь запустить?   -  person David Maze    schedule 11.03.2021


Ответы (2)


Прежде всего, вам следует избегать запуска команды docker с помощью sudo. Вместо этого добавьте текущего пользователя в группу докеров в вашей ОС Linux.

Кроме того, вы можете сделать docker container logs <container_id>, чтобы увидеть, есть ли возможные ошибки.

Как указано в этом другом сообщении: https://stackoverflow.com/a/48368594/2409641

-это сокращение от --interactive + --tty, когда вы запускаете докер с помощью этой команды.. это приведет вас прямо внутрь контейнера, где -d является сокращением от --detach, что означает, что вы просто запускаете контейнер, а затем отсоединитесь от него, так что в основном вы запускаете контейнер в фоновом режиме.. изменить: поэтому, если вы запустите контейнер докеров с -itd, он запустит параметры-it и отсоединит вас от контейнера, поэтому ваш контейнер все еще работает в фоновом режиме даже без каких-либо значений по умолчанию приложение для запуска..

person Flo    schedule 11.03.2021
comment
Поскольку вы можете очень легко использовать docker run для компрометации хоста (скажем, смонтировать каталог хоста /etc и отредактировать /host/etc/shadow как root внутри контейнера), уместно потребовать sudo доступа для него. - person David Maze; 11.03.2021

Вы не указали команду, поэтому контейнер запускается с командой по умолчанию bash. Если вы запускаете bash в интерактивном режиме (-ti), он остается открытым, но в противном случае он немедленно закрывается. Если вы хотите запустить контейнер, отсоединенный в фоновом режиме, вы можете изменить команду с bash на команду, которая блокирует, например tail -f /dev/null.

Вы можете запустить следующую команду, и контейнер не выйдет сразу.

sudo docker container run -d --name my-ubuntu-container ubuntu:latest tail -f /dev/null
person DerMaddi    schedule 11.03.2021