基于容器的方式做一个apache编译安装的镜像,通过此镜像能够部署一个web站点并成功访问

文章目录

镜像管理基础

// 提示:此操作需要建立在已经安装docker的基础上操作
先拉取centos镜像然后,在创建一个HTTPD容器

[root@192 ~]# docker pull centos
[root@192 ~]# docker images

[root@192 ~]# docker run -tid --name httpd centos
3f26116ea842060f1ee1dc4cf27f4b0e226dc7c3677ee000872e9a02496540de
[root@192 ~]# docker ps
CONTAINER ID   IMAGE     COMMAND       CREATED          STATUS          PORTS     NAMES
3f26116ea842   centos    "/bin/bash"   20 seconds ago   Up 19 seconds             httpd
[root@192 ~]# 


进入到这个容器

[root@192 ~]# docker exec -it 3f26116ea842 /bin/bash
[root@3f26116ea842 /]# 

配置一下阿里云的yum源

[root@3f26116ea842 yum.repos.d]# ls
CentOS-Linux-AppStream.repo	     CentOS-Linux-FastTrack.repo
CentOS-Linux-BaseOS.repo	     CentOS-Linux-HighAvailability.repo
CentOS-Linux-ContinuousRelease.repo  CentOS-Linux-Media.repo
CentOS-Linux-Debuginfo.repo	     CentOS-Linux-Plus.repo
CentOS-Linux-Devel.repo		     CentOS-Linux-PowerTools.repo
CentOS-Linux-Extras.repo	     CentOS-Linux-Sources.repo
[root@3f26116ea842 yum.repos.d]# rm -rf *
[root@3f26116ea842 yum.repos.d]# ls
[root@3f26116ea842 yum.repos.d]# 
[root@3f26116ea842 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 --:--:-- --:--:-- --:--:--  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--100  2495  100  2495    0     0   5709      0 --:--:-- --:--:-- --:--:--  5696
[root@3f26116ea842 yum.repos.d]# sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/[root@2a78bfed50b5 yum.repos.d]# yum install -y https://mirrors.aliyun.com/epel/epel-release-latest-8.noarch.rpm
Failed to set locale, defaulting to C.UTF-8
CentOS-8.5.2111 - Base - mirrors.aliyun 4.5 MB/s | 4.6 MB     00:01    
CentOS-8.5.2111 - Extras - mirrors.aliy  58 kB/s |  10 kB     00:00    
CentOS-8.5.2111 - AppStream - mirrors.a 7.1 MB/s | 8.4 MB     00:01    
epel-release-latest-8.noarch.rpm        152 kB/s |  24 kB     00:00    
Dependencies resolved.
========================================================================
 Package           Arch        Version          Repository         Size
========================================================================
Installing:
 epel-release      noarch      8-16.el8         @commandline       24 k

Transaction Summary
========================================================================
Install  1 Package

Total size: 24 k
Installed size: 34 k
Downloading Packages:
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Preparing        :                                                1/1 
  Installing       : epel-release-8-16.el8.noarch                   1/1 
  Running scriptlet: epel-release-8-16.el8.noarch                   1/1 
Many EPEL packages require the CodeReady Builder (CRB) repository.
It is recommended that you run /usr/bin/crb enable to enable the CRB repository.

  Verifying        : epel-release-8-16.el8.noarch                   1/1 

Installed:
  epel-release-8-16.el8.noarch                                          

Complete!
[root@3f26116ea842 yum.repos.d]# 
CentOS-Base.repo
[root@3f26116ea842 yum.repos.d]# sed -i 's|^#baseurl=https://download.example/pub|baseurl=https://mirrors.aliyun.com|' /etc/yum.repos.d/epel*
[root@3f26116ea842 yum.repos.d]# sed -i 's|^metalink|#metalink|' /etc/yum.repos.d/epel*
[root@3f26116ea842 yum.repos.d]# yum clean all
Failed to set locale, defaulting to C.UTF-8
18 files removed
[root@3f26116ea842 yum.repos.d]# yum makecache
Failed to set locale, defaulting to C.UTF-8
CentOS-8.5.2111 - Base - mirrors.aliyun 5.1 MB/s | 4.6 MB     00:00    
CentOS-8.5.2111 - Extras - mirrors.aliy  85 kB/s |  10 kB     00:00    
CentOS-8.5.2111 - AppStream - mirrors.a 6.5 MB/s | 8.4 MB     00:01    
Extra Packages for Enterprise Linux Mod 792 kB/s | 341 kB     00:00    
Extra Packages for Enterprise Linux 8 - 7.7 MB/s |  13 MB     00:01    
Module yaml error: Unexpected key in data: static_context [line 9 col 3]
Module yaml error: Unexpected key in data: static_context [line 9 col 3]
Module yaml error: Unexpected key in data: static_context [line 9 col 3]
Module yaml error: Unexpected key in data: static_context [line 9 col 3]
Metadata cache created.
[root@3f26116ea842 yum.repos.d]# 

开启另一台终端,下载httpd的源码包
wget https://downloads.apache.org/httpd/httpd-2.4.54.tar.gz
wget https://downloads.apache.org/apr/apr-util-1.6.1.tar.gz
wget https://downloads.apache.org/httpd/httpd-2.4.53.tar.gz


[root@192 ~]# ls
anaconda-ks.cfg   apr-util-1.6.1.tar.gz
apr-1.7.0.tar.gz  httpd-2.4.54.tar.gz
[root@192 ~]# 

把一些安装apache需要的包复制到容器里面

[root@192 ~]# docker cp apr-1.7.0.tar.gz httpd:/root
[root@192 ~]# docker cp apr-util-1.6.1.tar.gz httpd:/root
[root@192 ~]# docker cp httpd-2.4.54.tar.gz httpd:/root
[root@192 ~]# 
[root@3f26116ea842 ~]# ls /root
anaconda-ks.cfg    apr-1.7.0.tar.gz	  httpd-2.4.54.tar.gz
anaconda-post.log  apr-util-1.6.1.tar.gz  original-ks.cfg
[root@3f26116ea842 ~]# 

安装需要的工具包

[root@3f26116ea842 ~]# yum groups mark -y install 'Development Tools'
[root@3f26116ea842 ~]# yum -y install openssl-devel pcre-devel expat-devel libtool gcc gcc-c++ make
[root@3f26116ea842 ~]# useradd -r -M -s /sbin/nologin apache
[root@3f26116ea842 ~]# 


编译apache

编译apr

[root@3f26116ea842 ~]# tar xf apr-1.7.0.tar.gz 
[root@3f26116ea842 ~]# cd apr-1.7.0
[root@3f26116ea842 apr-1.7.0]# ./configure --prefix=/usr/local/apr
[root@3f26116ea842 apr-1.7.0]# make
[root@3f26116ea842 apr-1.7.0]# make install

编译apr-util

[root@3f26116ea842 ~]# tar xf apr-util-1.6.1.tar.gz 
[root@3f26116ea842 ~]# cd apr-util-1.6.1
[root@3f26116ea842 apr-util-1.6.1]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr/
[root@3f26116ea842 apr-util-1.6.1]# make 
[root@3f26116ea842 apr-util-1.6.1]# make install

编译httpd

[root@3f26116ea842 ~]# tar xf httpd-2.4.54.tar.gz 
[root@3f26116ea842 ~]# cd httpd-2.4.54
./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@3f26116ea842 httpd-2.4.54]# make
[root@3f26116ea842 httpd-2.4.54]# make install

设置环境变量

[root@3f26116ea842 ~]# echo 'export PATH=/usr/local/apache/bin:$PATH' > /etc/profile.d/apache.sh
[root@3f26116ea842 ~]# source /etc/profile.d/apache.sh
[root@3f26116ea842 ~]# which httpd
/usr/local/apache/bin/httpd
[root@3f26116ea842 ~]# ln -s /usr/local/apache/include/ /usr/include/apache
[root@3f26116ea842 ~]# vi /usr/local/apache/conf/httpd.conf
ServerName www.example.com:80		//此行取消注释
[root@3f26116ea842 ~]# apachectl start
[root@3f26116ea842 ~]# 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@3f26116ea842 ~]# vi start.sh
[root@3f26116ea842 ~]# cat start.sh
#!/bin/sh

/usr/local/apache/bin/httpd 
/bin/bash
[root@3f26116ea842 ~]# chmod a+x start.sh 
[root@3f26116ea842 ~]# 


制作httpd镜像并创建一个能够访问web网站的容器

制作httpd的镜像

[root@192 ~]# docker commit -a 'sean <2710027506@qq.com>' -c 'CMD ["/usr/local/apache/bin/httpd","-D","FOREGROUND"]' -p http httpd:v0.1
sha256:fee06c8cc8280543b37e18f8b39fa658ac975c6b6602730d4daa72fc587b9e25
[root@192 ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
httpd        v0.1      fee06c8cc828   8 seconds ago   650MB
centos       latest    5d0da3dc9764   10 months ago   231MB


使用httpd的镜像创建新的容器并设置一个web网站

[root@192 ~]# docker run -d --name web -p 80:80 httpd:v0.1
1108e730811b739a82b5d8030b310a2b342f7bef948d01a2688a6b1fb94cc453
[root@192 ~]# docker ps
CONTAINER ID   IMAGE        COMMAND                  CREATED          STATUS          PORTS                               NAMES
1108e730811b   httpd:v0.1   "/usr/local/apache/b…"   6 seconds ago    Up 5 seconds    0.0.0.0:80->80/tcp, :::80->80/tcp   web
3f26116ea842   centos       "/bin/bash"              16 minutes ago   Up 16 minutes                                       http
[root@192 ~]# 


在这里插入图片描述
上传镜像

[root@localhost ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED         SIZE
httpd        v0.1      fee06c8cc828   10 hours ago    650MB
centos       latest    5d0da3dc9764   10 months ago   231MB
[root@localhost ~]# docker tag fee06c8cc828 0b8d572d1c7d/httpd:v0.1
[root@localhost ~]# docker images
REPOSITORY           TAG       IMAGE ID       CREATED         SIZE
0b8d572d1c7d/httpd   v0.1      fee06c8cc828   10 hours ago    650MB
httpd                v0.1      fee06c8cc828   10 hours ago    650MB
centos               latest    5d0da3dc9764   10 months ago   231MB
[root@localhost ~]# docker push 0b8d572d1c7d/httpd:v0.1 
The push refers to repository [docker.io/0b8d572d1c7d/httpd]
17aa4b240083: Pushed 
74ddd0ec08fa: Mounted from library/centos 
v0.1: digest: sha256:05a4fbeff8864fd9a98bff4488e65ef4d32f1148190f3b6c2061120f8979d17b size: 742
[root@localhost ~]# 

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值