基于容器的方式安装编译apache做成镜像

[root@localhost ~]# docker pull centos   # 拉取sentos最新镜像 [root@localhost ~]# docker pull centos Using default tag: latest latest: Pulling from library/centos a1d0c7532777: Pull complete  Digest: sha256:a27fd8080b517143cbbbab9dfb7c8571c40d67d534bbdee55bd6c473f432b177 Status: Downloaded newer image for centos:latest docker.io/library/centos:latest [root@localhost ~]# docker images REPOSITORY   TAG       IMAGE ID       CREATED        SIZE httpd        2.4.53    c30a46771695   6 days ago     144MB busybox      latest    beae173ccac6   3 months ago   1.24MB httpd        latest    dabbfbe0c57b   4 months ago   144MB centos       latest    5d0da3dc9764   7 months ago   231MB [root@localhost ~]# docker run -it --name httpd centos /bin/bash [root@51e8dc0d8efc /]# cd /etc/yum.repos.d/    #   删掉  配置国内源 [root@51e8dc0d8efc yum.repos.d]# ls CentOS-Linux-AppStream.repo         CentOS-Linux-Debuginfo.repo  CentOS-Linux-FastTrack.repo          CentOS-Linux-Plus.repo CentOS-Linux-BaseOS.repo         CentOS-Linux-Devel.repo      CentOS-Linux-HighAvailability.repo  CentOS-Linux-PowerTools.repo CentOS-Linux-ContinuousRelease.repo  CentOS-Linux-Extras.repo      CentOS-Linux-Media.repo          CentOS-Linux-Sources.repo [root@51e8dc0d8efc yum.repos.d]# rm -rf * [root@51e8dc0d8efc yum.repos.d]# curl -o  /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo   % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current                                  Dload  Upload   Total   Spent    Left  Speed 100  2495  100  2495    0     0   9900      0 --:--:-- --:--:-- --:--:--  9861 [root@51e8dc0d8efc yum.repos.d]# sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo     #  配置基础源 [root@51e8dc0d8efc yum.repos.d]# dnf clean all    #  清理缓存 Failed to set locale, defaulting to C.UTF-8 0 files removed [root@51e8dc0d8efc yum.repos.d]# dnf makecache   建立缓存 [root@51e8dc0d8efc yum.repos.d]# yum install -y https://mirrors.aliyun.com/epel/epel-release-latest-8.noarch.rpm [root@51e8dc0d8efc yum.repos.d]# sed -i 's|^#baseurl=https://download.example/pub|baseurl=https://mirrors.aliyun.com|' /etc/yum.repos.d/epel* [root@51e8dc0d8efc yum.repos.d]# sed -i 's|^metalink|#metalink|' /etc/yum.repos.d/epel*   #  配置epel源 [root@51e8dc0d8efc yum.repos.d]# ls CentOS-Base.repo  epel-modular.repo  epel-testing-modular.repo    epel-testing.repo  epel.repo [root@51e8dc0d8efc ~]# dnf -y install wget vim #  下载wget vim

下载包组依赖包

[root@51e8dc0d8efc ~]# dnf -y  groupinstall 'Development Tools' --allowerasing --nobest      [root@51e8dc0d8efc ~]# useradd -r -M -s /sbin/nologin apache   [root@51e8dc0d8efc ~]# dnf -y install openssl-devel pcre-devel expat-devel libtool gcc gcc-c++  make  

下载apr,apr-util,httpd,并解压。

[root@localhost ~]# wget https://downloads.apache.org/apr/apr-1.7.0.tar.gz       重新开一个终端下好3个包 [root@localhost ~]# wget  https://downloads.apache.org/apr/apr-util-1.6.1.tar.gz            [root@localhost ~]# wget https://downloads.apache.org/httpd/httpd-2.4.53.tar.gz [root@localhost ~]# ls anaconda-ks.cfg   apr-1.7.0.tar.gz  apr-util-1.6.1.tar.gz  httpd-2.4.53.tar.gz  

[root@localhost ~]# ls
anaconda-ks.cfg apr-1.7.0.tar.gz apr-util-1.6.1.tar.gz httpd-2.4.53.tar.gz        复制到容器里
[root@localhost ~]# docker cp apr-1.7.0.tar.gz httpd:/usr/src/
[root@localhost ~]# docker cp apr-util-1.6.1.tar.gz httpd:/usr/src/
[root@localhost ~]# docker cp httpd-2.4.53.tar.gz httpd:/usr/src/

[root@51e8dc0d8efc ~]# cd /usr/src/  
[root@51e8dc0d8efc src]# ls
apr-1.7.0.tar.gz apr-util-1.6.1.tar.gz debug httpd-2.4.53.tar.gz kernels

[root@51e8dc0d8efc src]# tar xf apr-1.7.0.tar.gz       解压3个包
[root@51e8dc0d8efc src]# tar xf apr-util-1.6.1.tar.gz
[root@51e8dc0d8efc src]# tar xf httpd-2.4.53.tar.gz
[root@51e8dc0d8efc src]# ls
apr-1.7.0 apr-1.7.0.tar.gz apr-util-1.6.1 apr-util-1.6.1.tar.gz debug httpd-2.4.53 httpd-2.4.53.tar.gz kernels

apr安装编译

[root@51e8dc0d8efc src]# cd apr-1.7.0 [root@51e8dc0d8efc apr-1.7.0]# vim configure  $RM $cfgfile [root@51e8dc0d8efc apr-1.7.0]# ./configure  --prefix=/usr/local/apr [root@51e8dc0d8efc apr-1.7.0]# make -j 4 [root@51e8dc0d8efc apr-1.7.0]# make install

apr- util的编译安装

[root@51e8dc0d8efc apr-1.7.0]# cd [root@51e8dc0d8efc ~]# cd /usr/src/ [root@51e8dc0d8efc src]# cd apr-util-1.6.1 [root@51e8dc0d8efc apr-util-1.6.1]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr [root@51e8dc0d8efc apr-util-1.6.1]#  make -j 4 [root@51e8dc0d8efc apr-util-1.6.1]#  make install

httpd的编译安装。

[root@51e8dc0d8efc apr-util-1.6.1]# cd .. [root@51e8dc0d8efc src]# cd httpd-2.4.53 [root@51e8dc0d8efc httpd-2.4.53]# ./configure --prefix=/usr/local/apache \ > --enable-so \ > --enable-ssl \ > --enable-cgi \ > --enable-rewrite \ > --with-zlib \ > --with-pcre \ > --with-apr=/usr/local/apr \ > --with-apr-util=/usr/local/apr-util/ \ > --enable-modules=most \ > --enable-mpms-shared=all \ > --with-mpm=prefork [root@51e8dc0d8efc httpd-2.4.53]# make -j 4 [root@51e8dc0d8efc httpd-2.4.53]# make install

设置环境变量,头文件,man文件等

[root@51e8dc0d8efc httpd-2.4.53]# echo 'export PATH=/usr/local/apache/bin:$PATH' > /etc/profile.d/httpd.sh [root@51e8dc0d8efc httpd-2.4.53]# source /etc/profile.d/httpd.sh [root@51e8dc0d8efc httpd-2.4.53]# which httpd  /usr/local/apache/bin/httpd [root@51e8dc0d8efc httpd-2.4.53]# ln -s /usr/local/apache/include /usr/include/apache [root@51e8dc0d8efc conf]# vim httpd.conf ServerName www.example.com:80  [root@51e8dc0d8efc ~]# apachectl start httpd (pid 32710) already running [root@51e8dc0d8efc ~]# ss -antl State             Recv-Q            Send-Q                       Local Address:Port                       Peer Address:Port            Process             LISTEN            0                 128                                0.0.0.0:80                              0.0.0.0:*     

 

 

[root@localhost ~]# docker ps CONTAINER ID   IMAGE     COMMAND       CREATED       STATUS       PORTS     NAMES 51e8dc0d8efc   centos    /bin/bash   3 hours ago   Up 3 hours             httpd [root@localhost ~]# docker commit -p -c 'CMD [/bin/bash,/start.sh]' 51e8dc0d8efc sun/httpd:v1.0 sha256:3f94a4b860113688808ba58f4fa9804aa3202d89a3d2d28207d3ee7c548509f0 [root@localhost ~]# docker images REPOSITORY   TAG       IMAGE ID       CREATED          SIZE sun/httpd    v1.0      3f94a4b86011   3 minutes ago    1.28GB httpd        2.4.53    c30a46771695   6 days ago       144MB busybox      latest    beae173ccac6   3 months ago     1.24MB httpd        latest    dabbfbe0c57b   4 months ago     144MB centos       latest    5d0da3dc9764   7 months ago     231MB