如何在高山linuxdocker集装箱上运行crond和vsftpd?

我想在Docker容器上运行crond和vstfpd。

首先,我创build了一个阿尔卑斯-vstfpd泊坞窗容器:

FROM alpine:3.4 RUN apk update && apk add vsftpd RUN adduser -h /home/./files -s /bin/false -D files RUN echo "local_enable=YES" >> /etc/vsftpd/vsftpd.conf \ && echo "chroot_local_user=YES" >> /etc/vsftpd/vsftpd.conf \ && echo "write_enable=YES" >> /etc/vsftpd/vsftpd.conf \ && echo "local_umask=022" >> /etc/vsftpd/vsftpd.conf \ && echo "passwd_chroot_enable=yes" >> /etc/vsftpd/vsftpd.conf \ && echo 'seccomp_sandbox=NO' >> /etc/vsftpd/vsftpd.conf \ && echo 'pasv_enable=Yes' >> /etc/vsftpd/vsftpd.conf \ && echo 'pasv_max_port=10100' >> /etc/vsftpd/vsftpd.conf \ && echo 'pasv_min_port=10090' >> /etc/vsftpd/vsftpd.conf \ && sed -i "s/anonymous_enable=YES/anonymous_enable=NO/" /etc/vsftpd/vsftpd.conf VOLUME /home/files EXPOSE 20 21 10090-10100 

接下来,我创build了另一个使用前一个的容器:

 FROM alpine-vsftpd COPY myScript /bin/myScript COPY root /var/spool/cron/crontabs/root RUN chmod +x /bin/myScript CMD /usr/sbin/crond -f -l 2 -L /var/log/cron.log && /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf 

当容器启动时,只运行crond。 如果切换命令,只运行vsftpd:

 CMD /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf && /usr/sbin/crond -f -l 2 -L /var/log/cron.log 

试图使用中间脚本,发生相同的,只运行第一个:

 FROM alpine-vsftpd COPY myScript /bin/myScript COPY root /var/spool/cron/crontabs/root RUN chmod +x /bin/myScript COPY entrypoint.sh / RUN chmod +x /entrypoint.sh CMD /entrypoint.sh 

entrypoint.sh:

 /usr/sbin/crond -f -l 2 -L /var/log/cron.log /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf 

现在只运行crond。 如果线路切换,只运行vsftpd。

为什么只运行第一个? 如何可以同时运行?

运行一个任务作为后台任务,另一个作为主要的前台任务:

 /usr/sbin/crond -f -l 2 -L /var/log/cron.log | /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf 

另外(这可能会相当晚,但以防万一以后帮助别人),我忘了提到Supervisor也可以用来运行多个进程。