//创建容器
[root@localhost ~]# docker run --name centos -dit centos /bin/bash
4aceab993d472d30ff93a09a1b70c47f31b17324ad9b0d269f590e48b13d8e85
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4aceab993d47 centos “/bin/bash” 33 seconds ago Up 31 seconds centos
//传输httpd编译所需的资源包
[root@localhost ~]# ls
anaconda-ks.cfg apr-1.7.0.tar.gz apr-util-1.6.1.tar.gz httpd-2.4.48.tar.gz
[root@localhost ~]# docker cp httpd-2.4.48.tar.gz centos:/usr/src/
[root@localhost ~]# docker cp apr-1.7.0.tar.gz centos:/usr/src/
[root@localhost ~]# docker cp apr-util-1.6.1.tar.gz centos:/usr/src/
//连接容器
[root@localhost ~]# docker exec -it centos /bin/bash
[root@4aceab993d47 /]# ls usr/src
apr-1.7.0.tar.gz apr-util-1.6.1.tar.gz debug httpd-2.4.48.tar.gz kernels
//下载依赖包
[root@4aceab993d47 /]# yum -y groups mark install ‘Development Tools’
[root@4aceab993d47 /]# yum -y install openssl-devel pcre-devel expat-devel libtool gcc gcc-c++ make
//创建用户和组
[root@4aceab993d47 /]# useradd -r -M -s /sbin/nologin apache
//安装依赖包apr
[root@4aceab993d47 src]# tar -xf apr-1.7.0.tar.gz
[root@4aceab993d47 src]# tar -xf apr-util-1.6.1.tar.gz
[root@4aceab993d47 src]# tar -xf httpd-2.4.48.tar.gz
[root@4aceab993d47 src]# ls
apr-1.7.0 apr-1.7.0.tar.gz apr-util-1.6.1 apr-util-1.6.1.tar.gz debug httpd-2.4.48 httpd-2.4.48.tar.gz kernels
[root@4aceab993d47 src]# cd apr-1.7.0
[root@4aceab993d47 apr-1.7.0]# sed -i ‘/ R M " RM " RM"cfgfile"/d’ configure
[root@4aceab993d47 apr-1.7.0]# ./configure --prefix=/usr/local/apr
[root@4aceab993d47 apr-1.7.0]# make && make install
//安装依赖包apr-util
[root@4aceab993d47 apr-1.7.0]# cd …/apr-util-1.6.1
[root@4aceab993d47 apr-util-1.6.1]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
[root@4aceab993d47 apr-util-1.6.1]# make && make install
//安装依赖包httpd
[root@4aceab993d47 apr-util-1.6.1]# cd …/httpd-2.4.48
[root@4aceab993d47 httpd-2.4.48]# ./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=prefork
[root@4aceab993d47 httpd-2.4.48]# make && make install
//配置环境变量
[root@4aceab993d47 httpd-2.4.48]# echo ‘export PATH=/usr/local/apache/bin:$PATH’ > /etc/profile.d/httpd.sh
[root@4aceab993d47 httpd-2.4.48]# source /etc/profile.d/httpd.sh
[root@4aceab993d47 httpd-2.4.48]# which httpd
/usr/local/apache/bin/httpd
//头文件、man帮助
[root@4aceab993d47 httpd-2.4.48]# ln -s /usr/local/apache/include/ /usr/include/httpd
[root@4aceab993d47 httpd-2.4.48]# echo ‘MANPATH /usr/local/apache/man’ >> /etc/man.config
//取消ServerName前面的注释,避免出现报错
[root@4aceab993d47 httpd-2.4.48]# sed -i ‘/#ServerName/s/#//g’ /usr/local/apache/conf/httpd.conf
//编写启动脚本
[root@4aceab993d47 /]# vi start.sh
[root@4aceab993d47 /]# cat start.sh
#!/bin/bash
/usr/local/apache/bin/apachectl start
/bin/bash
[root@4aceab993d47 /]# chmod +x /start.sh
//制作镜像
[root@localhost ~]# docker commit -a ‘hhr 123@qq.com’ -c ‘CMD [“/start.sh”]’ centos httpd:v1.0
sha256:9a3d5ee27769253e2784f9f1db3494d4374c18174c56d98662c2156a76860d29
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
httpd v1.0 9a3d5ee27769 5 seconds ago 712MB
//根据新镜像启动一个容器
[root@localhost ~]# docker run --name httpd -dit -p 80:80 -v /var/www/html:/usr/local/apache/htdocs httpd:v1.0
96f9bede244046b94d138592129cd937897132cefa22e51ed7f5900c25454465
[root@localhost ~]# docker ps