Лучшее решение - просто использовать стандартное изображение nginx , если вы вообще не собираетесь настраивать изображение.
Если вы пишете собственное изображение,Вы должны широко предполагать, что команды типа service
просто не работают.CMD изображения, которое вы показываете (при условии, что оно успешно), пытается запустить nginx в качестве фоновой службы;после запуска в фоновом режиме основной процесс контейнера завершается и контейнер завершается.CMD, как правило, должен запускать один процесс, который контейнер запускает на переднем плане .
С точки зрения ваших различных вращений docker run
параметры всегда располагаются в одном и том же порядке:
docker run \
-d -p 80:80 \ # docker-specific options
nginxserver \ # the image name
nginx -g 'daemon off;' # the command to run and its options
Если вы укажете альтернативную команду (например, /bin/bash
), которая будет запускать вместо основного процесса контейнера, и если контейнер обычно запускает сетевой сервер, вы получите оболочкувместо./bin/bash
- это команда, а не аргумент -it
;такая же разбивка будет
docker run \
--rm -i -t \ # docker-specific options
nginxserver \ # the image name
/bin/bash # the command to run and its options