基于容器编辑安装apache制作为镜像

[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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值