- 基础环境准备
- 创建容器
- 在容器内源码编译apache
- 更改配置验证安装效果
- 制作镜像
- 新开一台容器验证
[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 It works! [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新开一台容器验证' -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 It works!
[root@rookie ~]# docker exec -it web /bin/bash [root@b5308f653afd /]# [root@rookie ~]# curl 172.17.0.2 It works! [root@rookie ~]# curl http://172.17.0.2/a.html404 Not Found Not FoundThe requested URL was not found on this server.
[root@b5308f653afd ~]# /usr/local/apache/bin/httpd -DFOREGROUND httpd (pid 1) already running # 寄!



