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

[经验分享] 【系列3】使用Dockerfile创建带编译安装nginx服务的Centos Docker镜像

[复制链接]

尚未签到

发表于 2018-5-26 15:23:09 | 显示全部楼层 |阅读模式


在宿主机上准备的文件清单:
Dockerfile
  run.sh              #启动ssh和apache服务的脚本
  nginx-1.12.2.tar.gz     #http://nginx.org/en/download.html
以上文件都放到/root/nginx_centos目录下
  mkdir -p /root/nginx_centos
  cd /root/nginx_centos
一、准备run.sh文件
在/root/nginx_centos目录新建run.sh

  vim run.sh
脚本内容如下:
  #!/bin/bash
  /usr/sbin/sshd &
  /usr/local/nginx/sbin/nginx
二、准备Dockerfile
在/root/nginx_centos目录新建Dockerfile

  vim Dockerfile
文件内容如下:
  #新生成的镜像是基于sshd:dockerfile镜像
  FROM sshd:centos
  MAINTAINER by cmzsteven
  WORKDIR /usr/local/src
  #安装wget
  RUN yum install -y  wget
  #下载并解压源码包
  RUN wget
  RUN tar -zxvf nginx-1.8.0.tar.gz
  WORKDIR nginx-1.8.0
  #编译安装nginx
  RUN yum install -y gcc make pcre-devel zlib-devel
  RUN ./configure   --prefix=/usr/local/nginx   --with-pcre
  RUN make
  RUN make install
#修改Nginx配置文件,以非daemon方式启动
RUN echo "daemon off;">>/usr/local/nginx/conf/nginx.conf


  #启动Nginx服务
  RUN /usr/local/nginx/sbin/nginx
  #复制服务启动脚本并设置权限
  ADD run.sh /usr/local/sbin/run.sh
  RUN chmod 755 /usr/local/sbin/run.sh
  #设置生成容器时需要执行的脚本
  CMD ["/usr/local/sbin/run.sh"]
  #开放22、80、443端口
  EXPOSE 22
  EXPOSE 80
  EXPOSE 443
#需要注意的是:在Dockerfile文件中更换当前目录不可以用“cd”命令,而要改用“WORKDIR”.

三、根据Dockerfile生成镜像

  docker build -t nginx_dockerfile:centos .
查看镜像:
  [root@docker1 nginx_centos]# docker images
  REPOSITORY         TAG         IMAGE ID            CREATED          VIRTUAL SIZE
  nginx_dockerfile    centos        9ad55461b2fe        5 minutes ago       386.1 MB
  nginx           centos         b738cec02b29        47 minutes ago      369.9 MB
  sshd-centos       latest         64136bdc0cc8        46 hours ago        261.8 MB
  centos           latest        0f73ae75014f        5 weeks ago         172.3 MB


四、根据镜像生成的容器并进行测试
1、生成新的容器

[root@docker1 nginx_centos]#docker run -d -p 2224:22 -p 8001:80 -p 4443:443 nginx:centos /usr/local/sbin/run.sh
将容器的22端口、80端口和443端口分别映射到到宿主机上的2224端口、8001端口和4443端口,并运行服务脚本。
也可以使用-P参数来让系统随机指定端口映射到22、80和443端口:

  [root@docker1 nginx_centos]#docker run -d -P nginx:centos
因为在Dockerfile中指定了EXPOSE所以系统会自动将指定的端口映射出来;同时使用CMD来指定生成容器时所需要执行的角本,所以这里省略了“/usr/local/sbin/run.sh”。

2、查看新生成的容器:

  [root@localhost nginx_centos]# docker ps -a
  CONTAINER ID   IMAGE        COMMAND            CREATED        STATUS        PORTS              NAMES
  c69d42541f52  nginx:centos  "/usr/local/sbin/run  26 seconds ago  Up 25 seconds  0.0.0.0:2224->22/tcp, 0.0.0.0:8001->80/tcp, 0.0.0.0:4443->443/tcp  high_colden
3、测试
测试nignx:

  [root@docker1 nginx_centos]# curl localhost:8001
测试成功!


测试ssh
[root@docker1 nginx_centos]# ssh localhost -p 2224
测试成功!


   各个版本的nginx源码安装包:http://down.51cto.com/data/2369729
  

   YUM源  http://down.51cto.com/data/2387451

运维网声明 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-481495-1-1.html 上篇帖子: 【系列3】使用Dockerfile创建yum安装nginx服务的Centos Docker镜像 下篇帖子: Docker镜像的构建(五)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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