[root@192 ~]# docker pull centos:8 //拉取镜像
8: Pulling from library/centos
a1d0c7532777: Pull complete
Digest: sha256:a27fd8080b517143cbbbab9dfb7c8571c40d67d534bbdee55bd6c473f432b177
Status: Downloaded newer image for centos:8
docker.io/library/centos:8
[root@192 ~]# docker run -it --name httpd centos:8 /bin/bash //生成容器
[root@8b25e54da24a /]# cd /etc/yum.repos.d/
[root@8b25e54da24a yum.repos.d]# rm -rf *
[root@8b25e54da24a 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
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--100 2495 100 2495 0 0 12412 0 --:--:-- --:--:-- --:--:-- 12412
[root@8b25e54da24a yum.repos.d]# sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo
[root@8b25e54da24a yum.repos.d]# yum install -y https://mirrors.aliyun.com/epel/epel-release-latest-8.noarch.rpm
[root@8b25e54da24a yum.repos.d]# sed -i's|^#baseurl=https://download.example/pub|baseurl=https://mirrors.aliyun.com|' /etc/yum.repos.d/epel*
[root@8b25e54da24a yum.repos.d]# sed -i 's|^metalink|#metalink|' /etc/yum.repos.d/epel*
[root@8b25e54da24a yum.repos.d]# yum clean all
Failed to set locale, defaulting to C.UTF-8
18 files removed
[root@8b25e54da24a yum.repos.d]# ls
CentOS-Base.repo epel-testing-modular.repo epel.repo
epel-modular.repo epel-testing.repo
[root@8b25e54da24a yum.repos.d]# dnf makecache
安装apache
依次安装apr,apr-util,httpd三个包
[root@8b25e54da24a ~]# wget https://downloads.apache.org/apr/apr-1.7.0.tar.gz https://downloads.apache.org/apr/apr-util-1.6.1.tar.gz https://downloads.apache.org/httpd/httpd-2.4.53.tar.gz
[root@8b25e54da24a ~]# yum -y install openssl-devel pcre-devel expat-devel libtool make //安装依赖包
[root@8b25e54da24a ~]# yum groups mark install "Development Tools" //安装开发工具包
[root@8b25e54da24a ~]# useradd -r -M -s /sbin/nologin apache //创建系统用户
[root@8b25e54da24a ~]# id apache
uid=998(apache) gid=996(apache) groups=996(apache)
//解压并安装
[root@8b25e54da24a ~]# ls
anaconda-ks.cfg apr-1.7.0.tar.gz httpd-2.4.53.tar.gz
anaconda-post.log apr-util-1.6.1.tar.gz original-ks.cfg
[root@8b25e54da24a ~]# tar -xf apr-1.7.0.tar.gz
[root@8b25e54da24a ~]# tar -xf apr-util-1.6.1.tar.gz
[root@8b25e54da24a ~]# tar -xf httpd-2.4.53.tar.gz
[root@8b25e54da24a ~]# ls
anaconda-ks.cfg apr-1.7.0.tar.gz httpd-2.4.53
anaconda-post.log apr-util-1.6.1 httpd-2.4.53.tar.gz
apr-1.7.0 apr-util-1.6.1.tar.gz original-ks.cfg
[root@8b25e54da24a ~]# cd apr-1.7.0
[root@8b25e54da24a apr-1.7.0]# ls
apr-config.in CMakeLists.txt libapr.mak poll
apr.dep config.layout libapr.rc random
apr.dsp configure LICENSE README
apr.dsw configure.in locks README.cmake
apr.mak docs Makefile.in shmem
apr.pc.in dso Makefile.win strings
apr.spec emacs-mode memory support
atomic encoding misc tables
build file_io mmap test
build.conf helpers network_io threadproc
buildconf include NOTICE time
build-outputs.mk libapr.dep NWGNUmakefile tools
CHANGES libapr.dsp passwd user
[root@8b25e54da24a apr-1.7.0]# vim configure
# $RM "$cfgfile" //注释掉这一行
[root@8b25e54da24a apr-1.7.0]# ./configure --prefix=/usr/local/apr
[root@8b25e54da24a apr-1.7.0]# make & make install
[root@8b25e54da24a ~]# cd apr-util-1.6.1
[root@8b25e54da24a apr-util-1.6.1]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
[root@8b25e54da24a apr-util-1.6.1]# make & make install
[root@8b25e54da24a httpd-2.4.53]# cd httpd-2.4.53
[root@8b25e54da24a 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=prefork
[root@8b25e54da24a httpd-2.4.53]# make & make install
设置环境变量
[root@8b25e54da24a ~]# echo 'export PATH=/usr/local/apache/bin:$PATH' >/etc/profile.d/apache.sh
[root@8b25e54da24a ~]# source /etc/profile.d/apache.sh
[root@8b25e54da24a ~]# which httpd
/usr/local/apache/bin/httpd
[root@8b25e54da24a ~]# which apachectl
/usr/local/apache/bin/apachectl
//include头文件,拥有头文件需要做映射关系
[root@8b25e54da24a ~]# ln -s /usr/local/apache/include /usr/include/apache
//取消警示
[root@8b25e54da24a ~]# vim /usr/local/apache/conf/httpd.conf
#ServerName www.example.com:80 //取消注释
//设置开机自启
[root@8b25e54da24a ~]# apachectl start
[root@8b25e54da24a ~]# 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@8b25e54da24a ~]# vi start.sh
[root@8b25e54da24a ~]# cat start.sh
#!/bin/sh
[root@8b25e54da24a ~]# chmod a+x start.sh
制作镜像
[root@192 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8b25e54da24a centos:8 "/bin/bash" About an hour ago Up About an hour httpd
[root@192 ~]# docker commit -p -c 'CMD ["/bin/bash" ,"/start.sh"]' 8b25e54da24a xz/httpd:a1.1
sha256:da5ece9c07c826c4e3067f47a505808b3c584cdfae7be823a6e027ac5b61ef34
[root@192 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
xz/httpd a1.1 da5ece9c07c8 5 seconds ago 740MB
centos 8 5d0da3dc9764 7 months ago 231MB
[root@192 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8b25e54da24a centos:8 "/bin/bash" About an hour ago Up About an hour httpd
[root@192 ~]# docker run -itd -p 80:80 --name wj xz/httpd:a1.1 /bin/bash
d40067796ebd29b897c9b1ffe06f0b2a5b5b8c80599db953fc7a0844304b6c90
[root@192 ~]# docker exec -it wj /bin/bash