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

本文介绍如何通过容器技术,详细阐述了利用Docker编译安装Apache并创建可运行web服务的镜像的过程,包括更换yum源、复制编译包、启动Apache等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用基于容器的方式编译安装apache做成镜像,要能够使用此镜像创建一个能访问web网站的容器

//创建容器

[root@duanruhui ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
centos       latest    5d0da3dc9764   7 months ago   231MB

[root@duanruhui ~]# docker run -it --name web centos /bin/bash 
[root@cb84cc7cd185 /]#  ls
bin  etc   lib	  lost+found  mnt  proc  run   srv  tmp  var
dev  home  lib64  media       opt  root  sbin  sys  usr

//设置yum源为阿里源

[root@cb84cc7cd185 /]# cd /etc/yum.repos.d/
[root@cb84cc7cd185 yum.repos.d]# rm -rf *
[root@cb84cc7cd185 yum.repos.d]# ls
[root@cb84cc7cd185 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   8048      0 --:--:-- --:--:-- --:--:--  8048
[root@cb84cc7cd185 yum.repos.d]# sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo
[root@cb84cc7cd185 yum.repos.d]# ls
CentOS-Base.repo

//将编译的包复制到web里面

[root@duanruhui ~]# ls
apr-1.7.0.tar.gz  apr-util-1.6.1.tar.gz  httpd-2.4.53.tar.gz
[root@cb84cc7cd185 ~]# cd /usr/src
[root@cb84cc7cd185 src]# ls
debug  kernels
apr-1.7.0.tar.gz  apr-util-1.6.1.tar.gz  httpd-2.4.53.tar.gz
[root@duanruhui ~]# mkdir sotfware
[root@duanruhui ~]# mv *.gz sotfware/
[root@duanruhui ~]# docker cp sotfware web:/usr/src/
[root@cb84cc7cd185 src]# ls
debug  kernels	sotfware

//编译安装apache

[root@cb84cc7cd185 sotfware]# tar xf apr-1.7.0.tar.gz 
[root@cb84cc7cd185 sotfware]# tar xf apr-util-1.6.1.tar.gz 
[root@cb84cc7cd185 sotfware]# tar xf httpd-2.4.53.tar.gz 

[root@cb84cc7cd185 sotfware]# dnf -y install make gcc
[root@cb84cc7cd185 sotfware]# cd apr-1.7.0
[root@cb84cc7cd185 apr-1.7.0]# vi configure
注释掉$RM "$cfgfile"
[root@cb84cc7cd185 apr-1.7.0]# ./configure --prefix=/usr/local/apr
[root@cb84cc7cd185 apr-1.7.0]# make -j 4 && make install

[root@cb84cc7cd185 apr-util-1.6.1]# dnf -y install expat-devel
[root@cb84cc7cd185 apr-util-1.6.1]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr

[root@cb84cc7cd185 httpd-2.4.53]# dnf -y install pcre-devel openssl-devel
[root@cb84cc7cd185 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@cb84cc7cd185 httpd-2.4.53]# make -j 4 && make install

下面两个步骤二选一

//用脚本的方式启动, 并让apache在前端运行

[root@cb84cc7cd185 ~]# cd /
[root@cb84cc7cd185 /]# vi entrypoint.sh
[root@cb84cc7cd185 /]# cat entrypoint.sh 
#!/bin/bash

/usr/local/apache/bin/httpd && sleep 5d
[root@cb84cc7cd185 /]# chmod +x entrypoint.sh
[root@cb84cc7cd185 /]# ./entrypoint.sh
[root@duanruhui ~]# docker ps
CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS          PORTS     NAMES
cb84cc7cd185   centos    "/bin/bash"   39 minutes ago   Up 39 minutes             web
[root@duanruhui ~]# curl 172.17.0.2
<html><body><h1>It works!</h1></body></html>

[root@duanruhui ~]#  docker commit -a 'hexz <1@2.com>' -c 'CMD ["/entrypoint.sh"]' -p web httpd:v0.1
sha256:946bc2ab341ce7ee7c1e2c80c515572ac12266622a02dc40ac952097a740ee05
[root@duanruhui ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
httpd        v0.1      946bc2ab341c   28 seconds ago   616MB
centos       latest    5d0da3dc9764   7 months ago     231MB
[root@duanruhui ~]# docker run -d --name web1 -p 80:80 httpd:v0.1
ff864a29c60037bc4df880410c0f90aeee375bf9ccf05565892f5d512427c355
[root@duanruhui ~]# docker ps
CONTAINER ID   IMAGE        COMMAND            CREATED          STATUS          PORTS                               NAMES
ff864a29c600   httpd:v0.1   "/entrypoint.sh"   14 seconds ago   Up 13 seconds   0.0.0.0:80->80/tcp, :::80->80/tcp   web1
cb84cc7cd185   centos       "/bin/bash"        46 minutes ago   Up 46 minutes                                       web
//浏览器访问
[root@duanruhui ~]# curl 192.168.140.130
<html><body><h1>It works!</h1></body></html>

//用命令的方式启动,并让apache在前端运行

[root@cb84cc7cd185 /]# /usr/local/apache/bin/httpd -DFOREGROUND -X
[root@duanruhui ~]# curl 172.17.0.2
<html><body><h1>It works!</h1></body></html>
root@duanruhui ~]#  docker commit -a 'hexz <1@2.com>' -c 'CMD ["/usr/local/apache/bin/httpd","-D","FOREGROUND"]' -p web httpd:v0.5
sha256:7820e61078a65965725473335b35bae6ccb56c9f0df6a2725daa77b32edec560
[root@duanruhui ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
httpd        v0.5      7820e61078a6   2 minutes ago    616MB
httpd        v0.1      946bc2ab341c   27 minutes ago   616MB
centos       latest    5d0da3dc9764   7 months ago     231MB


[root@duanruhui ~]# docker run -d --name web5 -p 80:80 httpd:v0.5
79f3ad5ec0f3adea0b311e7b263c12529836663c3310ca32d91f0c0c565c1a20


[root@duanruhui ~]# docker ps
CONTAINER ID   IMAGE        COMMAND                  CREATED             STATUS             PORTS                               NAMES
79f3ad5ec0f3   httpd:v0.5   "/usr/local/apache/b…"   4 seconds ago       Up 4 seconds       0.0.0.0:80->80/tcp, :::80->80/tcp   web5
cb84cc7cd185   centos       "/bin/bash"              About an hour ago   Up About an hour                                       web
[root@duanruhui ~]# curl 192.168.140.130
<html><body><h1>It works!</h1></body></html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值