Docker容器與虛擬化技術——構建Docker鏡像實戰

                                                      構建Docker鏡像實戰

一、構建Apache鏡像
1、Dockerfile:
FROM centos:7.5.1804
MAINTAINER Robin
WORKDIR /root
RUN yum -y install wget gcc gcc-c++ make tar apr-devel apr apr-util-devel pcre-devel
RUN wget https://mirrors.tuna.tsinghua.edu.cn/apache//httpd/httpd-2.4.43.tar.gz
RUN tar xf httpd-2.4.43.tar.gz
WORKDIR /root/httpd-2.4.43
RUN ./configure --prefix=/usr/local/httpd
RUN make && make install
RUN sed -i 's/#ServerName www.example.com:80/ServerName localhost:80/' /usr/local/httpd/conf/httpd.conf
ADD run.sh /usr/local/sbin/run.sh
RUN chmod 755 /usr/local/sbin/run.sh
EXPOSE 80
CMD ["/usr/local/sbin/run.sh"]

2、run.sh:
#!/bin/bash
/usr/local/httpd/bin/apachectl -D FOREGROUND

3、注意事項:
後臺運行的程序或命令會導致容器在執行完命令後自動關閉,因此在run.sh中的服務啓動命令需要通過參數-D FOREGROUND來實現前臺運行。
 

二、構建openssh鏡像
1、Dockerfile:
FROM centos:7.5.1804
MAINTAINER The Centos Project<[email protected]>
RUN yum -y install vim openssh-server net-tools iproute
RUN /usr/sbin/sshd-keygen -A
ADD run.sh /usr/local/sbin/run.sh
RUN chmod 775 /usr/local/sbin/run.sh
EXPOSE 22
CMD ["/usr/local/sbin/run.sh"]

2、run.sh:
#!/bin/bash
/usr/sbin/sshd -D
 

三、構建Nginx鏡像
1、Dockerfile:
FROM centos:7.5.1804
MAINTAINER Robin
WORKDIR /root
RUN yum -y install wget gcc gcc-c++ make tar pcre-devel zlib-devel;\
useradd -M -s /sbin/nologin nginx;\
wget https://nginx.org/download/nginx-1.9.7.tar.gz;\
tar xf nginx-1.9.7.tar.gz;
WORKDIR /root/nginx-1.9.7
RUN ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module;\
make && make install;\
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/;\
chown -R nginx:nginx /usr/local/nginx
COPY run.sh /usr/sbin/run.sh
RUN chmod 775 /usr/sbin/run.sh
EXPOSE 80
CMD ["/usr/sbin/run.sh"]

2、run.sh:
#!/bin/bash
/usr/local/nginx/sbin/nginx -g "daemon off;"
 

四、構建Tomcat鏡像
1、Dockerfile:
FROM centos:7.5.1804
MAINTAINER Robin
WORKDIR /root
COPY jdk-7u65-linux-x64.gz /root
RUN yum -y install tar gcc gcc-c++ make wget;\
tar xf jdk-7u65-linux-x64.gz;\
mv jdk1.7.0_65 /usr/local/java
ENV JAVA_HOME /usr/local/java
ENV JAVA_BIN /usr/local/java/bin
ENV JRE_HOME /usr/local/java/jre
ENV PATH $PATH:$JAVA_BIN:$JRE_HOME/bin
ENV CLASSPATH $JRE_HOME/bin:$JAVA_HOME/lib:$JRE_HOME/lib
RUN wget http://mirrors.hust.edu.cn/apache/tomcat/tomcat-7/v7.0.103/bin/apache-tomcat-7.0.103.tar.gz;\
tar xf apache-tomcat-7.0.103.tar.gz;\
mv apache-tomcat-7.0.103 /usr/local/tomcat7;\
sed -i '1 aexport JAVA_HOME="/usr/local/java"' /usr/local/tomcat7/bin/catalina.sh
COPY run.sh /usr/local/sbin/run.sh
RUN chmod 775 /usr/local/sbin/run.sh
EXPOSE 8080
CMD ["/usr/local/sbin/run.sh"]

2、run.sh
/usr/local/tomcat7/bin/catalina.sh run
 

五、構建mysql鏡像
1、Dockerfile:
FROM centos:7.5.1804
MAINTAINER Robin
COPY mysql-5.5.22.tar.gz /root
COPY cmake-2.8.6.tar.gz /root
WORKDIR /etc/yum.repos.d
RUN yum update;\
yum -y install wget;\
wget http://mirrors.aliyun.com/repo/epel-7.repo
WORKDIR /root
RUN yum -y install tar gcc net-tools gcc-c++ make ncurses-devel ncurses;\
useradd -M -s /sbin/nologin mysql;\
tar xf mysql-5.5.22.tar.gz;\
tar xf cmake-2.8.6.tar.gz
WORKDIR /root/cmake-2.8.6
RUN ./configure;\
make && make install
WORKDIR /root/mysql-5.5.22
RUN cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DSYSCONFDIR=/etc -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all;\
gmake && gmake install;\
chown -R mysql:mysql /usr/local/mysql/;\
ln -s /usr/local/mysql/bin/* /usr/local/bin/;\
rm -rf /etc/my.cnf;\
cp support-files/my-medium.cnf /etc/my.cnf;\
/usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
EXPOSE 3306
CMD ["mysqld_safe"]

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章