2016-11-23 3 views
-1

У меня есть файл докеров для установки httpd. Когда я запустить эту dockerfile с помощью командыКонтейнерный выход с кодом 0 при использовании файла docker compose

докер запустить -dit/bin/Баш,

контейнер запускается и работает в фоновом режиме. когда я выполняю docker ps Я мог видеть, как работает контейнер.

Я создал Докер-compose.yml файл, как показано ниже,

version: '2' 
services: 
    web: 
    build: 
     context: ./web 
     dockerfile: Dockerfile-apache 
    image: web:1.0 
    container_name: web 
    ports: 
    - "80:80" 
    command: service httpd start 

я построил этот файл с помощью создания сообщения

докера-сборки создания сообщения.

После того, как после этого я начал контейнеры с помощью

Докер-составляют до -d.

Контейнеры выходят из строя. Я не уверен, как заставить контейнеры работать на фоне.

Также я хочу, чтобы службы выполнялись внутри контейнера. Например, мне нужно запустить команду как сервис httpd start внутри контейнера и как это сделать?

+0

Возможный дубликат изображения [Docker CentOS не запускается через httpd] (http://stackoverflow.com/questions/21280174/docker-centos-image- это-не-авто-старт-HTTPD) – VladoDemcak

ответ

6

Это связано с тем, что контейнер Docker работает только до тех пор, пока его команда запускается. Ваша команда service httpd start запустит httpd в фоновом режиме, а затем выйдет. Это приведет к завершению работы httpd и контейнера.

Вы должны запустить процесс HTTPd непосредственно и на переднем плане, см official image's start script:

httpd -DFOREGROUND

1

Вы не можете запустить докер с -dit варианты вместе. -d означает запустить его в фоновом режиме, а -ti означает взаимодействие с терминалом. Таким образом, нужно запускать с -d OR с -ti, а не с обоими