基于docker镜像centos:7 镜像制作自定义的centos及tomcat/php/nginx镜像

Posted reblue520

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于docker镜像centos:7 镜像制作自定义的centos及tomcat/php/nginx镜像相关的知识,希望对你有一定的参考价值。

基于 centos:7 镜像制作自定义mycentos:v1
# 交互式运行centos:7
# docker run -it --name=mycentos
# 在运行的mycentos容器中修改网络
# vi /etc/profile
export http_proxy=http://10.11.0.150:808
export https_proxy="https://10.11.0.150:808"
export ftp_proxy=http://10.11.0.150:808
export socks_proxy="socks://10.11.0.150:808/"
export http_proxy=http://10.11.0.150:808
export https_proxy=https://10.11.0.150:808
# echo "proxy=http://10.11.0.150:808" >> /etc/yum.conf
# source /etc/profile
# 替换yum源
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
mv /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo.backup
mv /etc/yum.repos.d/epel-testing.repo /etc/yum.repos.d/epel-testing.repo.backup
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
# 安装常用工具
yum install -y iproute net-tools telnet wget curl tree iftop htop iotop lrzsz
# wget命令代理
[root@node03 ~]# cat ~/.wgetrc
http_proxy = http://10.11.0.150:808
ftp_proxy = http://10.11.0.150:808
# 提交镜像为 mycentos:v1
# docker commit mycentos mycentos:v1

1.编写nginx1.15.5的dockerfile
# cat Dockerfile

FROM mycentos:v1
LABEL maintainer www.chinasoft.com
RUN echo "proxy=http://10.11.0.150:808" >> /etc/yum.conf && \\
    yum install -y gcc gcc-c++ make openssl-devel pcre-devel gd-devel \\    
        iproute net-tools telnet wget curl && \\
    yum clean all && \\
    rm -rf /var/cache/yum/*

COPY nginx-1.15.5.tar.gz /
RUN tar zxf nginx-1.15.5.tar.gz && \\
    cd nginx-1.15.5 && \\
    ./configure --prefix=/usr/local/nginx \\
    --with-http_ssl_module --with-http_stub_status_module && \\
    make -j 4 && make install && \\
    rm -rf /usr/local/nginx/html/* && \\
    echo "ok" > /usr/local/nginx/html/status.html && \\
    cd / && rm -rf nginx* && \\
    ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

ENV PATH $PATH:/usr/local/nginx/sbin
COPY nginx.conf /usr/local/nginx/conf/nginx.conf
WORKDIR /usr/local/nginx
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]


2.nginx配置文件和Dockerfile
# cat nginx.conf

#user  nobody;
worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;
events 
    worker_connections  1024;

http 
    include       mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    #access_log  logs/access.log  main;
    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;
    gzip  on;
    server 
        listen       80;
        server_name  localhost;
        #access_log  logs/host.access.log  main;

        location / 
            root   html;
            index  index.html index.htm;
        
        error_page  404              /404.html;

        error_page   500 502 503 504  /50x.html;
        location = /50x.html 
            root   html;
        
    

# 编译镜像为nginx:v1
# docker build -t . nginx:v1
编译安装php
获取php5.6.36的源码包:http://mirrors.sohu.com/php/php-5.6.36.tar.gz
在官网找的zip包解压后压缩成.tar.gz不行,没有configure命令
1.编写 Dockfile

FROM mycentos:v2
LABEL maintainer www.chinasoft.com
RUN source /etc/profile && \\
    yum install epel-release -y && \\
        yum install -y gcc gcc-c++ make gd-devel libxml2-devel \\    
        libcurl-devel libjpeg-devel libpng-devel openssl-devel \\
    libmcrypt-devel libxslt-devel libtidy-devel autoconf \\
    iproute net-tools telnet wget curl && \\
    yum clean all && \\
    rm -rf /var/cache/yum/*

COPY php-5.6.36.tar.gz /
RUN tar xf php-5.6.36.tar.gz && \\
    cd php-5.6.36 && \\
    ./configure --prefix=/usr/local/php \\
    --with-config-file-path=/usr/local/php/etc \\
    --enable-fpm --enable-opcache \\
    --with-mysql --with-mysqli --with-pdo-mysql \\
    --with-openssl --with-zlib --with-curl --with-gd \\
    --with-jpeg-dir --with-png-dir --with-freetype-dir \\
    --enable-mbstring --with-mcrypt --enable-hash && \\
    make -j 4 && make install && \\
    cp php.ini-production /usr/local/php/etc/php.ini && \\
    cp sapi/fpm/php-fpm.conf /usr/local/php/etc/php-fpm.conf && \\
    sed -i "90a \\daemonize = no" /usr/local/php/etc/php-fpm.conf && \\
    mkdir /usr/local/php/log && \\
    cd / && rm -rf php* && \\
    ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

ENV PATH $PATH:/usr/local/php/sbin
COPY php.ini /usr/local/php/etc/
COPY php-fpm.conf /usr/local/php/etc/
WORKDIR /usr/local/php
EXPOSE 9000
CMD ["php-fpm"]

编译安装tomcat
下载地址:https://archive.apache.org/dist/tomcat/tomcat-8/v8.5.43/bin/apache-tomcat-8.5.43.tar.gz
# 编写Dockerfile

FROM mycentos:v2
LABEL maintainer www.chinasoft.com

ENV VERSION=8.5.43

RUN source /etc/profile && \\
        yum install java-1.8.0-openjdk wget curl unzip iproute net-tools -y && \\
    yum clean all && \\
    rm -rf /var/cache/yum/*
COPY apache-tomcat-$VERSION.tar.gz /
RUN source /etc/profile && \\
    tar zxf apache-tomcat-$VERSION.tar.gz && \\
    mv apache-tomcat-$VERSION /usr/local/tomcat && \\
    rm -rf apache-tomcat-$VERSION.tar.gz /usr/local/tomcat/webapps/* && \\
    mkdir /usr/local/tomcat/webapps/test && \\
    echo "ok" > /usr/local/tomcat/webapps/test/status.html && \\
    sed -i '1a JAVA_OPTS="-Djava.security.egd=file:/dev/./urandom"' /usr/local/tomcat/bin/catalina.sh && \\
    ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

ENV PATH $PATH:/usr/local/tomcat/bin

WORKDIR /usr/local/tomcat

EXPOSE 8080
CMD ["catalina.sh", "run"]

以上是关于基于docker镜像centos:7 镜像制作自定义的centos及tomcat/php/nginx镜像的主要内容,如果未能解决你的问题,请参考以下文章

基于docker镜像centos:7 镜像制作自定义的centos及tomcat/php/nginx镜像

docker 镜像制作(jupyter)

Dockerfile编写制作centos7.7+php5.6+nginx镜像

centos 7镜像超过4g怎么安装

自定义通过Dockerfile创建httpd镜像

centos7的镜像地址能发一下么 64位的,谢谢了