0
我想創建一個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