基础环境准备
[root@rookie ~]# cd /etc/yum.repos.d/
[root@rookie yum.repos.d]# ls
CentOS-Base.repo epel-modular.repo epel-testing-modular.repo
docker-ce.repo epel.repo epel-testing.repo
[root@rookie yum.repos.d]# systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
Active: active (running) since Tue 2022-04-26 19:33:57 CST; 35min ago
# 准备好apache编译的三个软件包给到容器
[root@rookie yum.repos.d]# cd
[root@rookie ~]# mkdir package
[root@rookie ~]# ls package/
apr-1.7.0.tar.gz apr-util-1.6.1.tar.gz httpd-2.4.53.tar.gz
#拉centos8的镜像
[root@rookie ~]# docker pull centos
[root@rookie ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest 5d0da3dc9764 7 months ago 231M
创建容器
#容器名字叫web
[root@rookie ~]# docker run -it --name c1 centos /bin/bash
[root@1c1edff0ccad /]#
在容器内源码编译apache
#配置阿里云网络源
[root@682ecaf12cb /]# cd /etc/yum.repos.d/
[root@682ecaf12cbf yum.repos.d]# ls
CentOS-Base.repo
[root@682ecaf12cbf yum.repos.d]# dnf clean all
[root@682ecaf12cbf yum.repos.d]# dnf makecache
#从虚拟机拷贝三个软件包解压缩
[root@rookie ~]# ls
anaconda-ks.cfg apr-1.7.0.tar.gz apr-util-1.6.1.tar.gz httpd-2.4.53.tar.gz
[root@rookie ~]# docker cp /package/ c1:/root/package
[root@682ecaf12cbf ~]# cd package/
[root@682ecaf12cbf package]# ls
[root@682ecaf12cbf package]# tar -xf apr-1.7.0.tar.gz
[root@682ecaf12cbf package]# tar -xf apr-util-1.6.1.tar.gz
[root@682ecaf12cbf package]# tar -xf httpd-2.4.53.tar.gz
[root@682ecaf12cbf package]# ls
apr-1.7.0 apr-util-1.6.1 httpd-2.4.53
apr-1.7.0.tar.gz apr-util-1.6.1.tar.gz httpd-2.4.53.tar.gz
#安装依赖包
[root@682ecaf12cbf~]# dnf -y install openssl-devel pcre-devel expat-devel gcc make libtool
#源码编译 apr,apr-util,httpd
[root@682ecaf12cbf apache]# cd apr-1.7.0
[root@682ecaf12cbf apr-1.7.0]# vim configure
$RM "$cfgfile" # 将此行加上注释,或者删除此行
[root@682ecaf12cbf apr-1.7.0]# ./configure --prefix=/usr/local/apr
[root@682ecaf12cbf apr-1.7.0]# make && make install
[root@682ecaf12cbf apr-1.7.0]# cd ../apr-util-1.6.1
[root@682ecaf12cbf apr-util-1.6.1]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/
[root@682ecaf12cbf apr-util-1.6.1]# make && make install
[root@682ecaf12cbf apr-util-1.6.1]# cd ../httpd-2.4.53
[root@682ecaf12cbf 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@682ecaf12cbf httpd-2.4.53]# make && make install
更改配置验证安装效果
[root@682ecaf12cbf httpd-2.4.53]# cd /usr/local/apache/conf/
[root@682ecaf12cbf conf]# vim httpd.conf
#ServerName www.example.com:80 #此行取消注释
#启动
[root@682ecaf12cbf ~]# cd /usr/local/apache
[root@682ecaf12cbf apache]# ./bin/httpd
[root@682ecaf12cbf apache]# 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@682ecaf12cbf apache]# curl 172.17.0.2
<html><body><h1>It works!</h1></body></html>
[root@682ecaf12cbf apache]# pkill httpd
[root@682ecaf12cbf apache]# ss -antl
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
制作镜像
[root@682ecaf12cbf ~]# cd /usr/local/apache/conf/
[root@682ecaf12cbf conf]# vim httpd.conf
# 注释掉 error log ,Custom access log 这两行
#制作镜像
#先缩减镜像包容量
[root@682ecaf12cbf /]# du -sh *
0 bin
0 dev
2.4M etc
0 home
0 lib
0 lib64
0 lost+found
0 media
0 mnt
0 opt
0 proc
151M root
4.0K run
0 sbin
0 srv
0 sys
12K tmp
468M usr
57M var
[root@682ecaf12cbf ~]# cd package/
[root@682ecaf12cbf package]# rm -rf *
[root@682ecaf12cbf local]# cd /var/
[root@682ecaf12cbf var]# du -sh *
[root@682ecaf12cbf var]# cd ./cache/
[root@682ecaf12cbf cache]# rm -rf *
#制作镜像并查看
[root@rookie ~]# docker commit -a 'xyx <skilledrookie@163.com>' -c 'CMD ["/usr/local/apache/bin/httpd","-D","FOREGROUND","-X"]' -p c1 httpd:1.0
sha256:ebfbb9fcaad90ce30ce64b765688090e850cb453cef9630cd16bd7bf43a99d71
[root@rookie ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
httpd 1.0 ebfbb9fcaad9 10 seconds ago 527MB
centos latest 5d0da3dc9764 7 months ago 231MB
新开一台容器验证
[root@rookie ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
682ecaf12cbf centos "/bin/bash" About an hour ago Up About an hour c1
[root@rookie ~]# docker stop 682ecaf12cbf
682ecaf12cbf
[root@rookie ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
682ecaf12cbf centos "/bin/bash" About an hour ago Exited (0) 39 seconds ago c1
[root@rookie ~]# docker run -d --name web -p 80:80 httpd:1.0
b5308f653afddcf14ca72c2e42737f9046ae1667c437445229e8578114297eab
[root@rookie ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b5308f653afd httpd:1.0 "/usr/local/apache/b…" 15 seconds ago Up 13 seconds 0.0.0.0:80->80/tcp, :::80->80/tcp web
682ecaf12cbf centos "/bin/bash" 2 hours ago Exited (137) 9 minutes ago c1
[root@rookie ~]# curl 172.17.0.2
<html><body><h1>It works!</h1></body></html>

[root@rookie ~]# docker exec -it web /bin/bash
[root@b5308f653afd /]#
[root@rookie ~]# curl 172.17.0.2
<html><body><h1>It works!</h1></body></html>
[root@rookie ~]# curl http://172.17.0.2/a.html
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>404 Not Found</title>
</head><body>
<h1>Not Found</h1>
<p>The requested URL was not found on this server.</p>
</body></html>
[root@b5308f653afd ~]# /usr/local/apache/bin/httpd -DFOREGROUND
httpd (pid 1) already running
# 寄!
版权声明:本文为m0_67758799原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。