2016-08-04 101 views
-1

我有一個正在構建的容器,它只包含memcached,並且我希望容器在構建容器時啓動。問題獲取memcache容器在Docker中自動啓動

這是我目前泊塢文件 -

FROM centos:7 
MAINTAINER Some guy <[email protected]> 
RUN yum update -y 
RUN yum install -y git https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm 

RUN yum install -y ansible && yum clean all -y 
RUN yum install -y memcached 
RUN (cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i == systemd-tmpfiles-setup.service ] || rm -f $i; done); \ 
rm -f /lib/systemd/system/multi-user.target.wants/*;\ 
rm -f /etc/systemd/system/*.wants/*;\ 
rm -f /lib/systemd/system/local-fs.target.wants/*; \ 
rm -f /lib/systemd/system/sockets.target.wants/*udev*; \ 
rm -f /lib/systemd/system/sockets.target.wants/*initctl*; \ 
rm -f /lib/systemd/system/basic.target.wants/*;\ 
rm -f /lib/systemd/system/anaconda.target.wants/*; 

VOLUME [ "/sys/fs/cgroup" ] 
EXPOSE 11211/tcp 11211/udp 
CMD ["/usr/bin/memcached"] 
#CMD ["/usr/bin/memcached -u root"] 
#CMD ["/usr/bin/memcached", "-D", "FOREGROUND"] 

容器成功建立,但是當我嘗試使用命令

docker run -d -i -t -P <image id>運行的容器,我無法看到列表內的形象,返回docker ps

我試圖讓我的memcached服務以和我的httpd容器相同的方式運行,但是我無法使用-D標誌傳入參數(因爲它已經是一個守護進程即時猜測)。這是我的httpd CMD是如何設置 -

CMD ["/usr/sbin/httpd", "-D", "FOREGROUND"]

本地,如果我運行命令​​它會作爲一個過程,但是當我嘗試在容器CMD它告訴我,它無法找到指定的文件(與我猜測的-u root部分有關)。

CMD設置爲/ bin/bash仍然不允許服務啓動。

如何讓我的memcached服務運行並允許在運行docker ps時看到它,以便我可以在其中打開bash部分?

謝謝。

+0

'docker ps -a'也會顯示停止的容器。然後,您可以使用'docker logs '查看日誌 – BMitch

回答

1

默認情況下,memcached將在前臺運行,這正是您想要的。 -d option would run memcached as a daemon這將導致容器立即退出。

的Dockerfile看起來過於複雜,試試這個

FROM centos:7 
RUN yum update -y && yum install -y epel-release && yum install -y memcached && yum clean all 
EXPOSE 11211 
CMD ["/usr/bin/memcached","-p","11211","-u","memcached","-m","64"] 

然後,你可以做你需要

$ docker build -t me/memcached . 
<snipped build> 

$ CID=$(docker create me/memcached) 

$ docker start $CID 
4ac5afed0641f07f4694c30476cef41104f6fd864c174958b971822005fd292a 

$ docker ps 
CONTAINER ID  IMAGE       COMMAND     CREATED    STATUS    PORTS     NAMES 
4ac5afed0641  me/memcached     "/usr/bin/memcached -" About a minute ago Up 4 seconds  11211/tcp    jovial_bardeen 

$ docker exec $CID ps -ef 
UID  PID PPID C STIME TTY   TIME CMD 
memcach+  1  0 0 01:03 ?  00:00:00 /usr/bin/memcached -p 11211 -u memcached -m 64 
root  10  0 2 01:04 ?  00:00:00 ps -ef 


$ docker exec -ti $CID bash 
[[email protected] /]# 
1

或跳過你的Dockerfile如果它實際上只運行Memcached和使用:

docker run --name my-memcache -d memcached 

至少要讓你的基本設置進行,然後你可以根據需要更新官方圖片編輯。