使memcache容器在Docker中自动启动的问题

使memcache容器在Docker中自动启动的问题,docker,memcached,containers,Docker,Memcached,Containers,我有一个正在构建的容器,它只真正包含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

我有一个正在构建的容器,它只真正包含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"]
来自centos:7
维修工
运行yum更新-y
运行yum安装-y githttps://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
运行yum install-y ansible&&yum clean all-y
运行yum安装-y memcached
运行(cd/lib/systemd/system/sysinit.target.wants/;for i in*;do[$i==systemd-tmpfiles-setup.service]| rm-f$i;完成)\
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/*;
卷[“/sys/fs/cgroup”]
公开11211/tcp 11211/udp
CMD[“/usr/bin/memcached”]
#CMD[“/usr/bin/memcached-u root”]
#CMD[“/usr/bin/memcached”、“-D”、“前台”]
容器构建成功,但当我尝试使用命令运行容器时

docker run-d-i-t-p
,我看不到随
docker ps
返回的列表中的图像

我试图让memcached服务以与httpd容器相同的方式运行,但是我无法使用-D标志传递参数(因为它已经是一个守护进程了)。我的httpd CMD就是这样设置的-

CMD[“/usr/sbin/httpd”、“-D”、“前台”]

在本地,如果我运行命令
/usr/bin/memcached-u root
,它将作为一个进程运行,但是当我在容器
CMD
中尝试时,它会通知我它找不到指定的文件(我猜与-u root部分有关)

CMD
设置为/bin/bash仍然不允许启动服务

如何让memcached服务运行,并在运行
docker ps
时让人看到它,以便在其中打开bash部分


谢谢。

默认情况下,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 /]# 
$docker build-t me/memcached。
$CID=$(docker创建me/memcached)
$docker start$CID
4ac5afed0641f07f4694c30476cef41104f6fd864c174958b971822005fd292a
$docker ps
容器ID映像命令已创建状态端口名称
4ac5afed0641 me/memcached”/usr/bin/memcached-“大约一分钟前上升4秒11211/tcp jovial_bardeen
$docker exec$CID ps-ef
UID PID PPID C TIME TTY TIME CMD
memcach+10001:03?00:00:00/usr/bin/memcached-p 11211-u memcached-m 64
根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

至少要进行基本设置,然后您可以根据需要更新官方图像。

docker ps-a
还将显示停止的容器。然后,您可以使用
docker日志查看日志