2016-11-23 87 views
-1

我有一個dockerfile來安裝httpd。當我使用命令使用碼頭合成文件的代碼爲0的容器退出

搬運工運行-dit /斌/慶典,運行此dockerfile

容器開始,並在後臺運行。當我執行碼頭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開始裏面的容器,以及如何做到這一點?

+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或者-ti或者-ti運行而不是同時運行