一、docker镜像的封装(httpd服务)
vim dvd.repo
[rhel7] name=rhel7 baseurl=http://172.25.20.250/rhel7.3 gpgcheck=0vim Dockerfile
FROM rhel7 EXPOSE 80 COPY dvd.repo /etc/yum.repos.d/dvd.repo RUN rpmdb --rebuilddb && yum install -y httpd && yum clean all CMD ["/usr/sbin/httpd","-D","FOREGROUND"][root@foundation20 web]# docker build -t rhel7:v1 .
二、docker镜像的封装(sshd服务)
vim Dockerfile
FROM rhel7 EXPOSE 22 COPY dvd.repo /etc/yum.repos.d/dvd.repo RUN rpmdb --rebuilddb && yum install -y openssh-server openssh-clients && yum clean all&& ssh-keygen -q -t rsa -f /etc/ssh/ssh_host_rsa_key -N "" && ssh-keygen -q -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N "" && ssh-keygen -q -t ecdsa -f /etc/ssh/ssh_host_ed25519_key -N "" && echo root:westos | chpasswd CMD ["/usr/sbin/sshd","-D"]vim dvd.repo
[rhel7] name=rhel7 baseurl=http://172.25.20.250/rhel7.3 gpgcheck=0docker build -t rhel7:v2 .
三、docker镜像的封装(通过supervisord,将httpd和sshd结合起来)
vim dvd.repo
[dvd] name=rhel7.0 baseurl=http://172.25.254.250/rhel7.0/x86_64/dvd/ gpgcheck=0 [docker] name=docker baseurl=http://172.25.254.20/docker gpgcheck=0vim Dockerfile
FROM rhel7 EXPOSE 80 22 COPY dvd.repo /etc/yum.repos.d/dvd.repo COPY supervisord.conf /etc/supervisord.conf RUN rpmdb --rebuilddb && yum install -y httpd openssh-server supervisor && yum clean all && ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N "" -q && ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N "" -q && ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key -N "" -q && echo root:westos | chpasswd CMD ["/usr/bin/supervisord"]vim supervisord.conf
[supervisord] nodaemon=true [program:httpd] command=/usr/sbin/httpd [program:sshd] command=/usr/sbin/sshd -Ddocker build -t rhel7:v3 .
三、docker镜像的封装(nginx)
vim Dockerfile
FROM rhel7 EXPOSE 80 ADD nginx-1.14.0.tar.gz /mnt COPY dvd.repo /etc/yum.repos.d/dvd.repo RUN rpmdb --rebuilddb && yum install -y gcc pcre-devel openssl-devel make && cd /mnt/nginx-1.14.0 && sed -i 's/CFLAGS="$CFLAGS -g"/#CFLAGS="$CFLAGS -g"/g' auto/cc/gcc && ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module --with-threads --with-file-aio && make && make install && cd .. && rm -fr /mnt/nginx-1.14.0 && yum remove gcc pcre-devel openssl-devel make -y && yum clean all FROM rhel7 COPY --from=build /usr/local/nginx /usr/local/nginx CMD ["/usr/local/nginx/sbin/nginx","-g","daemon off;"]vim dvd.repo
[dvd] name=rhel7.0 baseurl=http://172.25.254.250/rhel7.2 gpgcheck=0docker build -t rhel7:v4 .
vim Dockerfile
FROM nginx as base # https://en.wikipedia.org/wiki/List_of_tz_database_time_zones ARG TIME_ZONE RUN mkdir -p /opt/var/cache/nginx && \ cp -a --parents /usr/lib/nginx /opt && \ cp -a --parents /usr/share/nginx /opt && \ cp -a --parents /var/log/nginx /opt && \ cp -aL --parents /var/run /opt && \ cp -a --parents /etc/nginx /opt && \ cp -a --parents /etc/passwd /opt && \ cp -a --parents /etc/group /opt && \ cp -a --parents /usr/sbin/nginx /opt && \ cp -a --parents /lib/x86_64-linux-gnu/libpcre.so.* /opt && \ cp -a --parents /lib/x86_64-linux-gnu/libz.so.* /opt && \ cp -a --parents /lib/x86_64-linux-gnu/libc.so.* /opt && \ cp -a --parents /lib/x86_64-linux-gnu/libdl.so.* /opt && \ cp -a --parents /lib/x86_64-linux-gnu/libpthread.so.* /opt && \ cp -a --parents /lib/x86_64-linux-gnu/libcrypt.so.* /opt && \ cp -a --parents /usr/lib/x86_64-linux-gnu/libssl.so.* /opt && \ cp -a --parents /usr/lib/x86_64-linux-gnu/libcrypto.so.* /opt && \ cp /usr/share/zoneinfo/${TIME_ZONE:-ROC} /opt/etc/localtime FROM gcr.io/distroless/base COPY --from=base /opt / EXPOSE 80 ENTRYPOINT ["nginx", "-g", "daemon off;"]vim dvd.repo
[dvd] name=rhel7.0 baseurl=http://172.25.254.250/rhel7.2 gpgcheck=0docker build -t rhel7:v5 .