簡體   English   中英

使Memcache容器自動在Docker中啟動的問題

[英]Issue getting memcache container to automatically start in Docker

我有一個正在構建的容器,該容器僅真正包含memcached,並且我希望它在構建容器后就啟動。

這是我當前的Docker文件-

FROM centos:7
MAINTAINER Some guy <someguy@guysome.org>
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返回的列表中的圖像。

我試圖以與httpd容器相同的方式運行memcached服務,但是我無法使用-D標志傳遞參數(因為它已經是后台程序了,我正在猜測)。 這就是我的httpd CMD的設置方式-

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

在本地,如果我運行命令/usr/bin/memcached -u root它將作為進程運行,但是當我嘗試在容器CMD運行時,它會通知我找不到指定的文件(與-u root節有關)我猜)。

CMD設置為/ bin / bash仍然不允許該服務啟動。

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

謝謝。

默認情況下,memcached將在前台運行,這就是您想要的。 -d選項會將memcached作為守護程序運行,這將導致容器立即退出。

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
[root@4ac5afed0641 /]# 

或者,如果您的Dockerfile實際上僅運行memcached並使用,則跳過該文件:

docker run --name my-memcache -d memcached

至少可以進行基本設置,然后可以根據需要更新該官方映像。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM