设为首页 收藏本站
查看: 1724|回复: 0

[经验分享] Centos7安装Docker 基于Dockerfile 搭建httpd运行环境

[复制链接]

尚未签到

发表于 2017-12-6 08:45:41 | 显示全部楼层 |阅读模式
Centos7安装Docker 基于Dockerfile 搭建httpd运行环境


docker
docker搭建
docker build本文档完成目标内容如下
  使用Docker搭建http服务器一台。
要求搭建完成后映射docker80端口。httpd页面显示自己的名字和IP地址

CentOS 7 下Docker的安装

  •   Docker简介
    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。Docker 容器通过 Docker 镜像来创建。容器与镜像的关系类似于面向对象编程中的对象与类。官网地址:http://www.docker.com/
  •   docker所需环境准备
  系统要求CentOS 7.X 以上版本,内核至少3.10,64-bit



  • uname -r   //查看内核
  • 3.10.0-327.el7.x86_64
  • yum update   //升级本地yum包
  创建docker的yum库



  • # cd /etc/yum.repos.d/ && vi docker.repo

  • [dockerrepo]
  • name=DockerRepository
  • baseurl=https://yum.dockerproject.org/repo/main/centos/7
  • enabled=1
  • gpgcheck=1
  • gpgkey=https://yum.dockerproject.org/gpg
  安装docker



  • yum install docker-io
  启动docker服务并设置开机自动启动



  • systemctl start docker.service
  • systemctl enable docker.service
  • Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
  验证docker是否安装成功



  • docker info
  • Containers: 0
  • Running: 0
  • Paused: 0
  • Stopped: 0
  • Images: 0
  • Server Version: 1.10.3
  • Storage Driver: devicemapper
  • Pool Name: docker-253:0-34868263-pool
  • Pool Blocksize: 65.54 kB
  • Base Device Size: 10.74 GB
  • Backing Filesystem: xfs
  • Data file: /dev/loop0
  • Metadata file: /dev/loop1
  • Data Space Used: 11.8 MB
  • Data Space Total: 107.4 GB
  • Data Space Available: 26.96 GB
  • Metadata Space Used: 581.6 kB
  • Metadata Space Total: 2.147 GB
  • Metadata Space Available: 2.147 GB
  • Udev Sync Supported: true
  • Deferred Removal Enabled: false
  • Deferred Deletion Enabled: false
  • Deferred Deleted Device Count: 0
  • Data loop file: /var/lib/docker/devicemapper/devicemapper/data
  • WARNING: Usage of loopback devices is strongly discouraged for production use. Either use `--storage-opt dm.thinpooldev` or use `--storage-opt dm.no_warn_on_loop_devices=true` to suppress this warning.
  • Metadata loop file: /var/lib/docker/devicemapper/devicemapper/metadata
  • Library Version: 1.02.135-RHEL7 (2016-09-28)
  • Execution Driver: native-0.2
  • Logging Driver: journald
  • Plugins:
  • Volume: local
  • Network: host bridge null
  • Kernel Version: 3.10.0-327.el7.x86_64
  • Operating System: CentOS Linux 7 (Core)
  • OSType: linux
  • Architecture: x86_64
  • Number of Docker Hooks: 2
  • CPUs: 2
  • Total Memory: 3.86 GiB
  • Name: localhost.localdomain
  • ID: WZJQ:VTFD:LVRA:SSU3:MFNC:75V3:JEZT:KTVR:HF2G:WXR5:34AR:N2N5
  • WARNING: bridge-nf-call-iptables is disabled
  • WARNING: bridge-nf-call-ip6tables is disabled
  • Registries: docker.io (secure)
  查看安装后的docker版本



  • docker version
  • Client:
  • Version:         1.10.3
  • API version:     1.22
  • Package version: docker-common-1.10.3-59.el7.centos.x86_64
  • Go version:      go1.6.3
  • Git commit:      3999ccb-unsupported
  • Built:           Thu Dec 15 17:24:43 2016
  • OS/Arch:         linux/amd64

  • Server:
  • Version:         1.10.3
  • API version:     1.22
  • Package version: docker-common-1.10.3-59.el7.centos.x86_64
  • Go version:      go1.6.3
  • Git commit:      3999ccb-unsupported
  • Built:           Thu Dec 15 17:24:43 2016
  • OS/Arch:         linux/amd64
3.编写Dockerfile
  Dockfile是一种被Docker程序解释的脚本,Dockerfile由一条一条的指令组成,每条指令对应Linux下面的一条命令。Docker程序将这些Dockerfile指令翻译真正的Linux命令。Dockerfile有自己书写格式和支持的命令,Docker程序解决这些命令间的依赖关系,类似于Makefile。Docker程序将读取Dockerfile,根据指令生成定制的image。相比image这种黑盒子,Dockerfile这种显而易见的脚本更容易被使用者接受,它明确的表明image是怎么产生的。有了Dockerfile,当我们需要定制自己额外的需求时,只需在Dockerfile上添加或者修改指令,重新生成image即可,省去了敲命令的麻烦。
3.1 Docker加速器
  之所以提到这个是因为,在build镜像的过程中需要从服务器pull images,但是不幸的的Docker官网已经被墙,所以需要借助国内第三方,我使用的阿里云的。
安装或升级Docker
  您可以通过阿里云的镜像仓库下载: mirrors.aliyun.com/help/docker-engine
curl -sSL http://acs-public-mirror.oss-cn-hangzhou.aliyuncs.com/docker-engine/internet | sh -
配置Docker加速器
  您可以使用如下的脚本将mirror的配置添加到docker daemon的启动参数中。
系统要求 CentOS 7 以上,Docker 1.9 以上。



  • sudo sed -i "s|ExecStart=/usr/bin/docker daemon|ExecStart=/usr/bin/docker daemon --registry-mirror=https://g9d5s6dr.mirror.aliyuncs.com|g"
  • sudo systemctl daemon-reload
  • sudo service docker restart
  Dockerfile文件内容如下:



  • FROM centos:centos6
  • MAINTAINER liuqiang <402588603@qq.com>
  • RUN yum -y update; yum clean all
  • RUN yum -y install httpd && yum clean all
  • RUN touch  /var/www/html/index.html
  • RUN echo "I have finished, pls give me five!!!! --liuqiang " >>
  • /var/www/html/index.html
  • EXPOSE 80
  • #Simple startup script to avoid some issues observed with container restart
  • ADD run-httpd.sh /run-httpd.sh  //注意脚本目录
  • RUN chmod -v +x /run-httpd.sh  //赋予脚本执行权限
  • CMD ["/run-httpd.sh"]
  run-httpd.sh脚本内容如下



  • cat >> run-httpd.sh << EOF
  • #!/bin/bash
  • # Make sure we're not confused by old, incompletely-shutdown httpd
  • # context after restarting the container.  httpd won't start correctly
  • # if it thinks it is already running.
  • rm -rf /run/httpd/*
  • exec /usr/sbin/apachectl -D FOREGROUND
  • EOF
  注意:Dockerfile需借助脚本来重启httpd服务,并且最好放置于同一目录



  • docker build  -t liuqiang/httpd:centos6 .
  • flag provided but not defined: -it
  • See '/usr/bin/docker-current --help'.
  • docker  build -t liuqiang/httpd .
  • Sending build context to Docker daemon  5.12 kB
  • Step 1 : FROM centos:centos6
  • ---> 8315978ceaaa
  • Step 2 : MAINTAINER liuqiang <402588603@qq.com>
  • ---> Using cache
  • ---> 658aeb6d114a
  • Step 3 : RUN yum -y update; yum clean all
  • ---> Using cache
  • ---> 8f1c933b2c3c
  • Step 4 : RUN yum -y install httpd && yum clean all
  • ---> Using cache
  • ---> 98ee768720c7
  • Step 5 : RUN touch  /var/www/html/index.html
  • ---> Using cache
  • ---> b69a69656752
  • Step 6 : RUN echo "I have finished, pls give me five!!!! --liuqiang" >> /var/www/html/index.html
  • ---> Using cache
  • ---> b4c9fd4843fb
  • Step 7 : EXPOSE 80
  • ---> Using cache
  • ---> e4b5491564c2
  • Step 8 : ADD run-httpd.sh /run-httpd.sh
  • ---> Using cache
  • ---> ed7ec84907d1
  • Step 9 : RUN chmod -v +x /run-httpd.sh
  • ---> Using cache
  • ---> 081c6a101c16
  • Step 10 : CMD /run-httpd.sh
  • ---> Using cache
  • ---> 15eaa6d6d407
  • Successfully built 15eaa6d6d407
  此时通过Dockerfile创建的镜像已经创建成功,并无报错
接下来运行容器
  docker run -it -p 80:80 liuqiang/httpd:centos6
docker: Error response from daemon: failed to create endpoint clever_keller on network bridge: Error starting userland proxy: listen tcp 0.0.0.0:80: bind: address already in use.
  启动



  • docker run -d -p 80:80 liuqiang/httpd:centos6
  • 0582508431eb5713c1401843e68cb36b51de3bdd23dfa468cbe7496d71091e25
  • curl http://localhost
  • I have finished, pls give me five!!!! --liuqiang  //curl测试成功
  浏览器测试确认下
DSC0000.png

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-421058-1-1.html 上篇帖子: 将spring cloud打包docker镜像 下篇帖子: Java开源博客My-Blog之docker容器组件化修改
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表