Docker镜像的制作

制作apache镜像


基于容器编译安装apache

# 进入容器内配置yum源
[root@localhost ~]# docker run -it --name apache centos /bin/bash
[root@fbd63b817914 ~]# cd /etc/yum.repos.d
[root@fbd63b817914 yum.repos.d]# rm -rf *
[root@fbd63b817914 yum.repos.d]# curl -o /etc/yum.repos.d/CentOS-Base.repo [root@fbd63b817914 yum.repos.d]# https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
[root@fbd63b817914 yum.repos.d]# sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo
[root@fbd63b817914 yum.repos.d]# cd
[root@fbd63b817914 ~]# dnf -y install wget

# 安装并解压httpd所需的包
[root@fbd63b817914 ~]# 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@fbd63b817914 ~]# tar xf apr-1.7.0.tar.gz 
[root@fbd63b817914 ~]# tar xf apr-util-1.6.1.tar.gz 
[root@fbd63b817914 ~]# tar xf httpd-2.4.53.tar.gz
# 安装开发环境和依赖包
[root@fbd63b817914 ~]# dnf -y groups mark install "Development Tools"
[root@fbd63b817914 ~]# dnf -y install gcc gcc-c++ openssl-devel pcre-devel expat-devel
[root@fbd63b817914 ~]# useradd -r -M -s /sbin/nologin apache
# 编译安装
[root@fbd63b817914 ~]# cd apr-1.7.0
[root@fbd63b817914 apr-1.7.0]# vim ./configure
    cfgfile=${ofile}T
    trap "$RM \"$cfgfile\"; exit 1" 1 2 15
#   $RM "$cfgfile"			        //注释此行
[root@fbd63b817914 apr-1.7.0]# ./configure --prefix=/usr/local/apr
[root@fbd63b817914 apr-1.7.0]# cd /root/apr-util-1.6.1
[root@fbd63b817914 apr-util-1.6.1]# ./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
[root@fbd63b817914 apr-util-1.6.1]# make && make install
[root@fbd63b817914 apr-util-1.6.1]# ./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@fbd63b817914 httpd-2.4.53]# make && make install
# 设置映射关系
[root@fbd63b817914 apache]# ln -s /usr/local/apache/include/ /usr/include/apache

# 启动httpd服务
[root@fbd63b817914 apache]# /usr/local/apache/bin/httpd
/usr/local/apache/bin/apachectl
[root@fbd63b817914 apache]# 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@fbd63b817914 apache]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
34: eth0@if35: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0
       valid_lft forever preferred_lft forever   
# 测试能否访问
[root@localhost ~]# curl 172.17.0.2
<html><body><h1>It works!</h1></body></html>
# 编写启动脚本
[root@036f6267e67a ~]# vim /start.sh
#!/bin/sh
/usr/local/apache/bin/httpd
/bin/bash
[root@036f6267e67a ~]# ls -ld /start.sh 
-rw-r--r--. 1 root root 48 Apr 26 17:55 /start.sh
[root@036f6267e67a ~]# chmod a+x /start.sh 		//给所有用户执行权限
[root@036f6267e67a ~]# ls -ld /start.sh 
-rwxr-xr-x. 1 root root 48 Apr 26 17:55 /start.sh
# 制作httpd镜像(另起一个终端,httpd容器不能停止)
[root@localhost ~]# docker commit -a 'zuoyq <123@456.com>' -c 'CMD ["/bin/bash","/start.sh"]' apache zuoyq/httpd:v1.0
sha256:5a7123f91c02a8b242275bf2bcbc96d0a9d06c97161bebd32f20e44c3671db54
[root@localhost ~]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
zuoyq/httpd   v1.0      5a7123f91c02   2 minutes ago   691MB
busybox       latest    beae173ccac6   3 months ago    1.24MB
httpd         latest    dabbfbe0c57b   4 months ago    144MB
centos        latest    5d0da3dc9764   7 months ago    231MB

[root@localhost ~]# docker login -u'zuoyq'		//登陆docker账号
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 push zuoyq/httpd:v1.0	//上传镜像
The push refers to repository [docker.io/zuoyq/httpd]
5f2da280ddab: Pushed 
74ddd0ec08fa: Mounted from library/centos 
v1.0: digest: sha256:370ea560347c01570bb76a1f32a091b90b94681718a5b1487e0329f0151651f0 size: 742
# 创建容器
[root@localhost ~]# docker ps
[root@localhost ~]# docker run -itd --name test -p 80:80 zuoyq/httpd:v1.0 /bin/sh
00563439c3d9e030ea4eeb26e1a6077609257d651f7c06befb35620561bcf761
[root@localhost ~]# docker ps
CONTAINER ID   IMAGE              COMMAND     CREATED          STATUS         PORTS                     
00563439c3d9   zuoyq/httpd:v1.0   "/bin/sh"   10 seconds ago   Up 9 seconds   0.0.0.0:80->80/tcp, :::80-

打开本机浏览器测试
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值