使用基于容器的方式编译安装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>