使memcache容器在Docker中自动启动的问题
我有一个正在构建的容器,它只真正包含memcached,我希望它在构建容器后启动 这是我当前的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
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日志查看日志