基于容器编译安装apache制作为镜像(优化版)

1.docker安装

[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# wget https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/centos/docker-ce.repo
[root@localhost yum.repos.d]# sed -i 's@https://download.docker.com@https://mirrors.tuna.tsinghua.edu.cn/docker-ce@g' docker-ce.repo
[root@localhost yum.repos.d]# yum install -y docker-ce  //正常安装
[root@localhost yum.repos.d]# yum install -y docker-ce --allowerasing  //--allowerasing自动替换冲突包

docker加速

[root@localhost ~]# systemctl start docker
[root@localhost ~]# cat > /etc/docker/daemon.json <<EOF
> {
>     "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn/"]
> }
> EOF
[root@localhost ~]# systemctl restart docker

2.准备工作

下载源码包

[root@localhost ~]#  wget https://downloads.apache.org/httpd/httpd-2.4.53.tar.gz https://downloads.apache.org/apr/apr-1.7.0.tar.gz https://downloads.apache.org/apr/apr-util-1.6.1.tar.gz

布置容器

[root@localhost ~]# docker pull centos  //拉取centos
[root@localhost ~]# docker images 
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
centos       latest    5d0da3dc9764   7 months ago   231MB

[root@localhost ~]# docker run -it --name c1 centos /bin/bash  //基于centos镜像创建容器c1

#开启新的终端查看
[root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS          PORTS     NAMES
834aadeb9298   centos    "/bin/bash"   20 seconds ago   Up 19 seconds             c1

#将apache的源码包传到c1容器内
[root@localhost ~]# docker cp apr-1.7.0.tar.gz c1:/root
[root@localhost ~]# docker cp apr-util-1.6.1.tar.gz c1:/root
[root@localhost ~]# docker cp httpd-2.4.53.tar.gz c1:/root

容器内编译安装httpd

#配置阿里源
[root@834aadeb9298 /]# cd /etc/yum.repos.d/   //删除yum仓库内的官方源
[root@834aadeb9298 yum.repos.d]# rm -rf *
[root@834aadeb9298 yum.repos.d]# ls
[root@834aadeb9298 yum.repos.d]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo  //配置w为阿里源
[root@834aadeb9298 yum.repos.d]# yum makecache 
[root@834aadeb9298 yum.repos.d]# sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo

#安装依赖包
[root@834aadeb9298 ~]# yum groups mark install "Development Tools"  
[root@834aadeb9298 ~]# yum -y install openssl-devel pcre-devel expat-devel libtool make vim 

#解压
[root@834aadeb9298 ~]# tar xf apr-1.7.0.tar.gz 
[root@834aadeb9298 ~]# tar xf apr-util-1.6.1.tar.gz 
[root@834aadeb9298 ~]# tar xf httpd-2.4.53.tar.gz   

#编译apr
[root@834aadeb9298 ~]# cd apr-1.7.0                                                         
[root@834aadeb9298 apr-1.7.0]# vim configure
$RM "$cfgfile"  //删除或注释这一条
[root@834aadeb9298 apr-1.7.0]# ./configure --prefix=/usr/local/apr
[root@834aadeb9298 apr-1.7.0]# make
[root@834aadeb9298 apr-1.7.0]# make install

#编译apr-util
[root@834aadeb9298 ~]# cd apr-util-1.6.1
[root@834aadeb9298 apr-util-1.6.1]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/
[root@834aadeb9298 apr-util-1.6.1]# make 
[root@834aadeb9298 apr-util-1.6.1]# make install

#编译httpd
[root@834aadeb9298 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@834aadeb9298 httpd-2.4.53]# make
[root@834aadeb9298 httpd-2.4.53]# make install

#设置环境变量
[root@834aadeb9298 ~]# echo 'export PATH=/usr/local/apache/bin:$PATH' > /etc/profile.d/apache.sh
[root@834aadeb9298 ~]# source /etc/profile.d/apache.sh 
[root@834aadeb9298 ~]# which apachectl
/usr/local/apache/bin/apachectl
[root@834aadeb9298 ~]# which httpd    
/usr/local/apache/bin/httpd
[root@834aadeb9298 ~]# ln -s /usr/local/apache/include/ /usr/include/apache  //软连接
[root@834aadeb9298 ~]# vim /usr/local/apache/conf/httpd.conf 
#ServerName www.example.com:80  //取消这一条的注释 取消告警信息
[root@834aadeb9298 ~]# apachectl start   //开启80端口
[root@834aadeb9298 ~]# 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@834aadeb9298 /]# cd root/ 
[root@834aadeb9298 ~]# 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@834aadeb9298 ~]# rm -rf *gz      
[root@834aadeb9298 ~]# rm -rf apr-1.7.0 httpd-2.4.53 apr-util-1.6.1/
[root@834aadeb9298 ~]# ls
anaconda-ks.cfg  anaconda-post.log  original-ks.cfg

[root@834aadeb9298 ~]# dnf -y remove gcc make  //卸载载编译工具

3.制作镜像

[root@localhost ~]# docker commit -a 'zjgg <1@2.com>' -c 'CMD ["/usr/local/apache/bin/httpd","-D","FOREGROUND"]' -p c1 httpd:v0.1
sha256:abdf3f5724cbb701fc709c698fb6badd1217a708beb42da3449a96575ec97d63
[root@localhost ~]# docker images 
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
httpd        v0.1      abdf3f5724cb   8 seconds ago   412MB
centos       latest    5d0da3dc9764   7 months ago    231MB

4.运行容器测试

#运行容器 名为web
[root@localhost ~]# docker run -d --name web -p 80:80  httpd:v0.1 
e5ab6d65910ca588650c4d78c002bb25e9c9d804c03b7dbbee6aba57904e4f0a
[root@localhost ~]# docker ps 
CONTAINER ID   IMAGE        COMMAND                  CREATED             STATUS             PORTS                               NAMES
e5ab6d65910c   httpd:v0.1   "/usr/local/apache/b…"   7 seconds ago       Up 6 seconds       0.0.0.0:80->80/tcp, :::80->80/tcp   web

[root@localhost ~]# docker inspect web  | grep "IPAddress"  //查看容器详细信息 过滤出ip
            "SecondaryIPAddresses": null,
            "IPAddress": "172.17.0.3",
                    "IPAddress": "172.17.0.3",
[root@localhost ~]# curl 172.17.0.3  //访问此ip
<html><body><h1>It works!</h1></body></html>

本机也可以访问到默认页面
在这里插入图片描述

修改镜像名字和版本

[root@localhost ~]# docker commit -p web   //使用正在运行的容器创建一个新的镜像
[root@localhost ~]# docker images 
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
<none>       <none>    13a121ba015f   3 seconds ago   144MB
busybox      latest    beae173ccac6   4 months ago    1.24MB
httpd        latest    dabbfbe0c57b   4 months ago    144MB
[root@localhost ~]# docker tag 13a121ba015f httpd:v0.1   //修改镜像的名字和版本
[root@localhost ~]# docker images 
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
httpd        v0.1      13a121ba015f   24 seconds ago   144MB
busybox      latest    beae173ccac6   4 months ago     1.24MB
httpd        latest    dabbfbe0c57b   4 months ago     144MB

上传镜像

[root@localhost ~]# docker login   //登录docker.hub
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: zhajigaga
Password: 
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded


[root@localhost ~]# docker tag httpd:v0.1  zhajigaga/httpd:20220503  //上传需要修改镜像名 httpd是官方的名字
[root@localhost ~]# docker images 
REPOSITORY        TAG        IMAGE ID       CREATED          SIZE
zhajigaga/httpd   20220503   13a121ba015f   10 minutes ago   144MB
httpd             v0.1       13a121ba015f   10 minutes ago   144MB
busybox           latest     beae173ccac6   4 months ago     1.24MB
httpd             latest     dabbfbe0c57b   4 months ago     144MB


[root@localhost ~]# docker push zhajigaga/httpd:20220503  //上传
The push refers to repository [docker.io/zhajigaga/httpd]
591909df3cb2: Pushed 
deefaa620a71: Mounted from library/httpd 
9cff3206f9a6: Mounted from library/httpd 
15e4bf5d0804: Mounted from library/httpd 
1da636a1aa95: Mounted from library/httpd 
2edcec3590a4: Mounted from library/httpd 
20220503: digest: sha256:be26639db6193e9ae78c1e6a11adc2c2b85d34f48253663014db8ee68ca03171 size: 1572

进入网站自己的仓库可以看到
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值