如何创建在cron上运行wget并在OpenShift上通过ftp访问下载文件的docker?
问题描述:
我想创建一个docker,无限期地在cron中每分钟运行一次wget。要恢复通过wget下载的文件,我想通过FTP访问。使用的FTP服务器是vsftpd。如何创建在cron上运行wget并在OpenShift上通过ftp访问下载文件的docker?
本地docker运行良好,可以通过FTP访问它,但是当Docker部署在OpenShift上时,容器不会启动,并且crond和vsftpd都不会运行。
该Docker在OpenShift上运行时必须做些什么?
Dockerfile:
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
RUN apk update && \
apk add wget && \
rm -rf /var/cache/apk/*
COPY myScript /bin/myScript
COPY cron /var/spool/cron/crontabs/root
RUN chmod +x /bin/myScript
RUN echo "files:mypassword" |/usr/sbin/chpasswd
RUN chown files:files /home/files/ -R
EXPOSE 20 21 10090-10100
VOLUME /home/files
CMD /usr/sbin/crond -l 2 -L /var/log/cron.log | /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
的cron:
* * * * * /bin/myScript
myScript的:
#!/bin/sh
wget -P /home/files -nv http://www.google.com >> /var/log/cron.log 2>&1
你是不是想在OpenShift在线或OpenShift地跑的? –
你的图像看起来像需要“root”才能工作。 OpenShift集群通常有能力运行图像作为“root”被禁用。只能由群集管理员授予以“root”身份运行映像的能力。为了在本地调试正在发生的事情,使用docker run -u 100000强制容器作为非root用户运行。那么你可能会看到它是如何破坏的。 –
OpenShift Online – mabg