apache做yum源_Dockerfile利用内网YUM源制作镜像与Apache自启动容器

该篇博客介绍了如何在Docker环境下,使用内网YUM源来构建Apache服务的镜像,避免网络堵塞。通过Dockerfile配置,结合Centos7.1的本地YUM源,安装httpd服务,制作镜像,并设置容器启动时自动运行httpd服务。此外,还展示了如何将宿主机目录挂载到容器中,以便于容器内的Apache服务访问。
摘要由CSDN通过智能技术生成

本次实验主要是介绍,如果利用内网YUM源来安装Dockerfile中的软件,并制作成镜像,模拟生产环境中,避免大量安装软件导致网络堵塞问题。同进用新制作的镜像,运行一个Apache服务的容器,让它自动运行httpd服务,并挂载宿主机中的目录。

1、系统环境:

Docker宿主机:centos7.1.1503 【3.10.0-229.el7.x86_64】

内网YUM服务器:Centos6.5【2.6.32-431.el6.x86_64】

Docker版本:

Client:

Version: 1.8.2-el7.centos

API version: 1.20

Package Version: docker-1.8.2-10.el7.centos.x86_64

Go version: go1.4.2

Git commit: a01dc02/1.8.2

Built:

OS/Arch: linux/amd64

Server:

Version: 1.8.2-el7.centos

API version: 1.20

Package Version:

Go version: go1.4.2

Git commit: a01dc02/1.8.2

Built:

OS/Arch: linux/amd64

IP分配:

Docker宿主机:10.0.10.7

YUM服务器:10.0.10.99

2、搭建内网YUM服务器:【在10.0.10.99上操作】

安装VSFTP服务:

yum install vsftp -y

挂载系统光盘:【由于实验都基于Centos7.1,这里就挂载Centos7.1光盘】

mount /dev/cdrom /mnt

并复制光盘里所有内容到FTP目录下:

cp -rf /mnt/* /var/ftp/pub/

启动FTP服务并加入开机启动:

service vsftpd start

chkconfig vsftpd on

测试是否成功:

[root@yum-server yum.repos.d]# curl ftp://10.0.10.99

drwxr-xr-x 4 0 0 4096 Jan 16 11:06 pub

能看到上面即ftp服务成功:

3、安装Docker服务【以下在Docker服务器上操作】

Centos7可以直接安装:

yum install docker-io -y

启动服务,并加入开机启动:

systemctl start docker.service

systemctl enable docker

执行命令查看Docker镜像

【刚装完肯定是空的,如何制作利用本地光盘制作Docker镜像可参考文文章:http://www.58jb.com/html/66.html】

[root@centos7 ~]# docker images

REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE

根据上一篇文章我已经制作了一个镜像:

centos centos7.1.1503 fab4b1df8eb1 4 days ago 212.1 MB

4、由于Dockerfile是基于仓库镜像基础上生成新镜像的,如果本地仓库里没有,就会在网上下载,当然这有点背了【因为我都使用内网源了,那肯定是想避开网络资源】,所以这里制作Dockerfile文件是基本自己本地镜像制作。

4.1 建立一个目录【用作保存Dockerfile、内网源等文件,当然还可以有脚本】

[root@centos7 ~]# mkdir docker-swper

进入目录添加以下三个个文件:

使用内网YUM源的配置文件:

cat >cdrom.repo <

[local-yum]

name=ftp-server

baseurl=ftp://10.0.10.99/pub/centos7.1/

gpgcheck=0

enabled=1

EOF

Dockerfile文件:cat >Dockerfile<

#First Dockerfile

FROM centos:centos7.1.1503

MAINTAINER swper "hz328@qq.com"

ENV TZ "Asia/Shanghai"

ENV TERM xterm

RUN mkdir /etc/yum.repos.d/bak && cd /etc/yum.repos.d/ && mv /etc/yum.repos.d/*.repo bak/

ADD cdrom.repo /etc/yum.repos.d/cdrom.repo

RUN yum install -y httpd vim-minimal

RUN yum clean all

RUN mv /etc/yum.repos.d/bak/* /etc/yum.repos.d/

RUN sed -i 's/#ServerName www.example.com:80/ServerName 127.0.0.1:80/' /etc/httpd/conf/httpd.conf

EXPOSE 80

ENTRYPOINT ["/usr/sbin/httpd", "-D", "FOREGROUND"]

EOF

第三个只是作为一个测试主页,我一会挂载当前目录为容器的网站目录:

echo "

This is Apache run on Docker.

" >index.html

Dockerfile中的参数简单讲解:

第一行#号开头为注释:

第二行:FROM centos:centos7.1.1503 指定镜像基础来自本地的仓库中镜像,名字要对应不然会在网上搜了

第三行,不多说那是个人信息:

第四、五行设置时区,的终端。

第六行,为了确保走内网源,我所原来的配置文件移到bak/目录下,跟第十行对应的,【还原】

第七行,把当前目录下的cdrom.repo追加到镜像的/etc/yum.repos.d/目录下

第八行,yum安装httpd,VIm软件。【由于只是使用了光盘源,如果同步了网上的源那软件就多了】

第十一行,去掉Apache启动时弹出的一个提示:你懂的。

第十二行,大家都说暴露80端口,它就是把容器的80端口可以影射到宿主中。【如果运行容器时不使用-p 80也没用 】

最后一个很重要,就是容器运行后,它会自动运行httpd服务,不需要我们手工开启。【还有其它方法,如加载脚本等。】

5、生成镜像【首次使用比较慢一点,再次生成时会就快了】

[root@centos7 docker-swper]$ docker build -t swper/centos:httpd .

执行过程:

Sending build context to Docker daemon 3.072 kB

Step 0 : FROM centos:centos7.1.1503

---> fab4b1df8eb1

Step 1 : MAINTAINER swper "hz328@qq.com"

---> Running in 8dc71f7999c6

---> 41af4c441912

Removing intermediate container 8dc71f7999c6

Step 2 : ENV TZ "Asia/Shanghai"

---> Running in f334dfae3a3e

---> d53bcb971ee3

Removing intermediate container f334dfae3a3e

Step 3 : ENV TERM xterm

---> Running in 8e08cf9f421f

---> 12fd4a67e974

Removing intermediate container 8e08cf9f421f

Step 4 : ADD cdrom.repo /etc/yum.repos.d/cdrom.repo

---> 4bb17716bc64

Removing intermediate container 9868229a912b

Step 5 : RUN yum install -y httpd

---> Running in 2b72e1b8c783

Loaded plugins: fastestmirror

最后成功会有如下提示:

Successfully built 6bfc915de694

检查当前仓库里的镜像:

[root@centos7 ~]# docker images

REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE

centos centos7.1.1503 fab4b1df8eb1 4 days ago 212.1 MB

swper/centos httpd b1fbe8636389 2 hours ago 276.3 MB

6、最重要的来了【创建一个容器,看Apache是否成功运行】

docker run -it -p 80 --name web-016 -d -v "$PWD":/var/www/html/ swper/centos:httpd

参数简单说明:

-it:标准输入输出,可以不加,加了可以进入容器,查看,操作。

-p 80:启用端口影射

—name:根据自己情况定义一个另名,方便识别。

-d:允许后台运行,不加会启动后就结束,在WEB应用中必须加上。【除了作为数据卷时可以不加】

-v “$PWD”:/var/www/html/把当前的目录挂载到容器的/var/www/html/目录,因变yum安装后Apache的网站目录就是那里。

swper/centos:httpd :使用哪个镜像,就是刚才Dockerfile文件制作的新镜像。

[root@centos7 ~]# docker ps 【检查运行中的容器】

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

0a713e6ccc7a swper/centos:httpd "/bin/bash" 2 hours ago Up 2 hours 0.0.0.0:32768->80/tcp web-016

可以看到0.0.0.0:32768->80/tcp表示,容器的80端口已经影射到宿主机的32768端口上。

可以检查是否成功启动Apache服务:

[root@centos7 ~]# docker top web-016

UID PID PPID C STIME TTY TIME CMD

root 8524 1808 0 Jan17 pts/4 00:00:00 /bin/bash

root 8549 8524 0 Jan17 ? 00:00:01 /usr/sbin/httpd

48 11699 8549 0 00:04 ? 00:00:00 /usr/sbin/httpd

48 11700 8549 0 00:04 ? 00:00:00 /usr/sbin/httpd

48 11701 8549 0 00:04 ? 00:00:00 /usr/sbin/httpd

48 11702 8549 0 00:04 ? 00:00:00 /usr/sbin/httpd

48 11703 8549 0 00:04 ? 00:00:00 /usr/sbin/httpd

48 13330 8549 0 00:27 ? 00:00:00 /usr/sbin/httpd

当然最直接的方式就是打开网页查看:

[root@centos7 ~]# curl http://10.0.10.7:32768

This is Apache run on Docker.

最后上个图吧:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值