栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

基于容器编译安装并制作apache镜像

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

基于容器编译安装并制作apache镜像

// 提示:此操作需要建立在已经安装docker的基础上操作

  • 先创建一个HTTPD容器
[root@cxr ~]# docker run -tid --name httpd centos
Unable to find image 'centos:latest' locally
latest: Pulling from library/centos
a1d0c7532777: Pull complete 
Digest: sha256:a27fd8080b517143cbbbab9dfb7c8571c40d67d534bbdee55bd6c473f432b177
Status: Downloaded newer image for centos:latest
ce74033b952def4fcaee69321cbc27f1a860384d439cf112c80a5ee384232fce
[root@cxr ~]# docker ps 
CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS          PORTS     NAMES
ce74033b952d   centos    "/bin/bash"   15 seconds ago   Up 12 seconds             httpd

  • 进入到这个容器
[root@cxr ~]# docker exec -it ce74033b952d /bin/bash
[root@ce74033b952d /]# 

  • 把一些安装apache需要的包复制到容器里面
//这些安装包可以到apache官网进行下载
[root@cxr src]# docker cp apr-1.7.0.tar.gz ce74033b952d:/usr/src/
[root@cxr src]# docker cp apr-util-1.6.1.tar.gz ce74033b952d:/usr/src/
[root@cxr src]# docker cp httpd-2.4.53.tar.gz ce74033b952d:/usr/src/

[root@ce74033b952d /]# cd /usr/src/
[root@ce74033b952d src]# ls
apr-1.7.0.tar.gz  apr-util-1.6.1.tar.gz  debug  httpd-2.4.53.tar.gz  kernels
  • 源码安装apache
[root@ce74033b952d ~]# useradd -r -M -s /sbin/nolongin apache       //创建一个名为apache的系统用户
[root@ce74033b952d ~]# cd /etc/yum.repos.d/
[root@ce74033b952d yum.repos.d]# ls
CentOS-Linux-AppStream.repo          CentOS-Linux-FastTrack.repo
CentOS-Linux-BaseOS.repo             CentOS-Linux-HighAvailability.repo
CentOS-Linux-ContinuousRelease.repo  CentOS-Linux-Media.repo
CentOS-Linux-Debuginfo.repo          CentOS-Linux-Plus.repo
CentOS-Linux-Devel.repo              CentOS-Linux-PowerTools.repo
CentOS-Linux-Extras.repo             CentOS-Linux-Sources.repo
[root@ce74033b952d yum.repos.d]# rm -rf *              //将这个命令下的文件全都删掉
[root@ce74033b952d yum.repos.d]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo         //替换成阿里云的centos8的源
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  2495  100  2495    0     0   1533      0  0:00:01  0:00:01 --:--:--  1532
[root@ce74033b952d yum.repos.d]# sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo          //去除一些不必要的东西
[root@ce74033b952d yum.repos.d]# yum clean all            //清理一下缓存
Failed to set locale, defaulting to C.UTF-8
0 files removed
[root@ce74033b952d yum.repos.d]# yum makecache           //重建一下缓存
Failed to set locale, defaulting to C.UTF-8
CentOS-8.5.2111 - Base - mirrors.aliyun.com          1.0 MB/s | 4.6 MB     00:04    
CentOS-8.5.2111 - Extras - mirrors.aliyun.com         29 kB/s |  10 kB     00:00    
CentOS-8.5.2111 - AppStream - mirrors.aliyun.com     815 kB/s | 8.4 MB     00:10    
Metadata cache created.
//预装一些工具
[root@ce74033b952d ~]# yum groups mark install 'Development Tools'   
Failed to set locale, defaulting to C.UTF-8
Last metadata expiration check: 0:04:20 ago on Wed Apr 27 06:30:35 2022.
Dependencies resolved.
=====================================================================================
 Package            Architecture      Version               Repository          Size
=====================================================================================
Installing Groups:
 Development Tools                                                                  

Transaction Summary
=====================================================================================

Is this ok [y/N]: y
Complete!
//在安装一些依赖包和一些需要的命令
yum -y install openssl-devel pcre-devel expat-devel libtool gcc gcc-c++ make         //安装过程省略
[root@ce74033b952d ~]# cd /usr/src/
//将这些安装包解压到/usr/local/目录下
[root@ce74033b952d src]# tar -xf apr-1.7.0.tar.gz -C /usr/local/
[root@ce74033b952d src]# tar -xf apr-util-1.6.1.tar.gz -C /usr/local/
[root@ce74033b952d src]# tar -xf httpd-2.4.53.tar.gz -C /usr/local/
[root@ce74033b952d src]# cd /usr/local/apr-1.7.0/          //进入到刚才解压到目录中
[root@ce74033b952d apr-1.7.0]# vi configure

cfgfile=${ofile}T
    trap "$RM "$cfgfile"; exit 1" 1 2 15
    $RM "$cfgfile"           //将文件中这行注释掉或者删除都可以

[root@ce74033b952d apr-1.7.0]# ./configure --prefix=/usr/local/apr    //过程省略
[root@ce74033b952d apr-1.7.0]# make && make install              //编译安装过程省略
[root@ce74033b952d apr-1.7.0]# cd ../apr-util-1.6.1/
[root@ce74033b952d apr-util-1.6.1]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/         //过程省略
[root@ce74033b952d apr-util-1.6.1]# make && make install                    //编译安装过程省略
[root@ce74033b952d apr-util-1.6.1]# cd ../httpd-2.4.53/
[root@ce74033b952d 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=worker                          //过程省略

[root@ce74033b952d httpd-2.4.53]# make && make install          //编译过程省略

[root@e9d663b63374 ~]# echo 'export PATH=/usr/local/apache/bin:$PATH' > /etc/profile.d/httpd.sh
[root@e9d663b63374 ~]# source /etc/profile.d/httpd.sh
[root@e9d663b63374 ~]# ln -s /usr/local/apache/include /usr/include/apache


[root@e9d663b63374 ~]# exit         //退出容器
exit

  • 制作apache镜像
[root@cxr ~]# docker commit -a 'sean <1544060135@qq.com>' -c 'CMD ["/usr/local/apache/bin/httpd","-X","-D","FOREGROUND"]' -p httpd httpd:v0.1
sha256:fc8ddf19c8e8e2eed41cfcbb520395d42d6e8e037f44286084fbdef850d96337
[root@cxr ~]# 
  • 删除所有的容器准备测试镜像是否可使用
[root@cxr ~]# docker ps -a
CONTAINER ID   IMAGE        COMMAND                  CREATED          STATUS          PORTS                               NAMES
c76214abb2d6   httpd:v0.2   "/usr/local/apache/b…"   13 minutes ago   Up 11 minutes   0.0.0.0:80->80/tcp, :::80->80/tcp   web
[root@cxr ~]# docker stop web
web
[root@cxr ~]# docker rm -f web
web
[root@cxr ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

-使用干才制作的镜像创建一个httpd容器

[root@cxr ~]# docker run -d --name httpd -p 80:80 httpd:v0.1       //创建容器不懂可以查看帮助文档
4ed60bf965ed17ed423bda17d7a57ed5b0c0b69f46740f6e97dbb01cd375ec0a
[root@cxr ~]# docker inspect httpd | grep IPAddress         //看下这个容器的IP
            "SecondaryIPAddresses": null,
            "IPAddress": "172.17.0.2",
                    "IPAddress": "172.17.0.2",
[root@cxr ~]# curl 172.17.0.2      //在虚拟机中访问
It works!

  • 在网页中查看,已经把容器的IP映射到本地,所以使用本地的IP去访问。
  • 能访问到就说明镜像制作成功。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/854988.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号