构建Docker镜像:nginx

Dockerfile介绍

Dockerfile是由一组指令组成的文件,每条指令对应linux中一条命令,Docker程序将读取Dockerfile中的指令生成指定镜像。
Dockerfile大致结构:基础镜像信息、维护者信息、镜像操作指令、容器启动时执行指令。每行支持一条指令,每条指令可以携带多个参数,支持以 # 开头的注释。
Dockerfile操作指令:

FROM 镜像 : 指定新的镜像所基于的镜像
MAINTAINER 名字 :说明新镜像的维护人
RUN 命令 : 在所基于的镜像上执行命令,并提交到新的镜像中
CMD ["要运行的程序","参数1","参数2"] : 指定启动容器时要运行的命令或脚本
EXPOSE端口号 : 指定新镜像加载到Docker时要开启的端口
ENV环境变量 变量值 : 设置一个环境变量的值,会背后面的RUN用到
ADD源文件/目录 目标文件/目录 :将源文件复制到目标文件 ,源文件和Dockerfile位于同一目录
COPY源文件/目录 目标文件/目录 :将本地主机的源文件复制到目标目录,源文件和Dockerfile位于同一目录
VOLUME["目录"] : 在容器中创建一个挂载点
USER 用户名 /UID :指定运行容器时的用户
WORKDIR路径 : 为后续的RUN 、CMD、ENTRYPOINT 指定工作目录
ONBUILD命令 : 指定所生成的镜像作为一个基础镜像时所要运行的命令。

构建Nginx镜像
1.创建工作目录

[[email protected] ~]# docker pull centos    //下载基础镜像
[[email protected] ~]# mkdir nginx
[[email protected] ~]# cd nginx/

创建Dockerfile文件

[[email protected] ningx]#  vim Dockerfile
# 设置基础镜像
FROM centos
# 维护该镜像的用户
MAINTAINER this is nginx image <sz>
# 安装环境 下载软件包 并解压
RUN yum install -y wget proc-devel net-tools gcc zlib zlib-devel make openssl-devel
RUN wget https://nginx.org/download/nginx-1.14.0.tar.gz
RUN tar xvf nginx-1.14.0.tar.gz
# 工作目录 编译安装
WORKDIR nginx-1.14.0
RUN ./configure --prefix=/usr/local/nginx && make && make install
# 开启 80 和443端口
EXPOSE 80
EXPOSE 443
# 修改配置文件,以非 deamon方式启动
RUN echo "daemon off;">>/usr/local/nginx/conf/nginx.conf
# 复制服务脚本并设置权限
WORKDIR /root/nginx
ADD run.sh /run.sh
RUN chmod 755 /run.sh
# 启动容器时执行脚本
CMD ["/run.sh"]

执行脚本

[[email protected] ningx]# vim run.sh
#!/bin/bash
/usr/local/nginx/sbin/nginx

生成镜像

[[email protected] ningx]# docker build -t nginx:new .
······
Step 13/14 : RUN chmod 755 /run.sh
 ---> Running in ad6e4604aede

 ---> 979f95edc03b
Removing intermediate container ad6e4604aede
Step 14/14 : CMD /run.sh
 ---> Running in 8f1209324969
 ---> a0bdb7bb13ad
Removing intermediate container 8f1209324969
[[email protected] ningx]# docker run -d -P nginx:new
f2855c4f4732435cfa3a8c9e17af8540c874577228f8276013260b2d9474e50b
[[email protected] ningx]#  docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                                           NAMES
f2855c4f4732        nginx:new           "/run.sh"           6 seconds ago       Up 4 seconds        0.0.0.0:32769->80/tcp, 0.0.0.0:32768->443/tcp   clever_gates

测试

注:把镜像保存到本地

[[email protected] ~]# docker save -o centos_nginx.tar  nginx:new

centos_nginx.tar 为保存到本地后的包名
nginx:new 为被打包的对象镜像

如果在一台新机器还原docker镜像

[[email protected] ~]# docker load --input centos_nginx.tar
······
Loaded image: nginx:new

原文地址:http://blog.51cto.com/13767724/2287016

时间: 2024-08-01 03:27:22

构建Docker镜像:nginx的相关文章

使用Jenkins构建Docker镜像

Jenkins是一个开源项目,提供了一种易于使用的持续集成系统,使开发者从繁杂的集成中解脱出来,专注于更为重要的业务逻辑实现上.同时Jenkins能实施监控集成中存在的错误,提供详细的日志文件和提醒功能,还能用图表的形式形象地展示项目构建的趋势和稳定性.并且Jenkins提供了大量的插件,能够完成各种任务. 今天我需要使用Jenkins构建一个Docker镜像,然后自动push到docker registry中.到了docker registry中,后面测试人员就可以把镜像发布到测试环境,测试如

构建Docker镜像实战之构建Tomcat9.0镜像(RPM一键安装Java环境)

构建Docker镜像实战之构建Tomcat9.0镜像(RPM一键安装Java环境) tomcat是一个免费开源的轻量级web服务器,在中小型企和并发访问量不高的场合普遍使用,是开发和调试JSP程序的首选.下面使用Dockerfile文件的方式来创建带有tomcat服务的Dockerfile镜像.(注:这里的Java环境是使用rpm一键式安装的且小编创建的是tomcat9.0的镜像) 下面直接开始实验 关闭防火墙及SELinux systemctl stop firewalld.service s

使用Dockerfile为SpringBoot应用构建Docker镜像

使用Dockerfile为SpringBoot应用构建Docker镜像 原创: 梦想de星空 macrozheng 6月17日 上次写过一篇使用Maven插件构建Docker镜像 ,讲述了通过docker-maven-plugin来构建docker镜像的方式,此种方式需要依赖自建的Registry镜像仓库.本文将讲述另一种方式,使用Dockerfile来构建docker镜像,此种方式不需要依赖自建的镜像仓库,只需要应用的jar包和一个Dockerfile文件即可. Dockerfile常用指令

jenkins构建docker镜像上传到harbor并发布到kubernetes

很早之前写过一篇jenkins集成docker的文章,使用的是CloudBees Docker Build and Publish plugin插件.这篇文章是直接使用shell脚本做的,主要是这次有一个需求是检测harbor仓库里面是否已经存在要构建的镜像,如果存在就放弃构建,如果不存在则构建镜像并上传到harbor仓库,我这里是通过请求harbor的api来检测的. 整个过程大致分为四个步骤,画了一个简单图: 1.在jenkins上构建一个自由风格的软件项目. 2.源码管理使用git. 这里

构建Docker镜像实战

简介 Nginx是一款轻量级的Web服务器,Tomcat是一款免费开源的轻量级web服务器,在中小型企业和并发访问量不高的场合使用,是开发和调试JSP程序的首选.MSQL是当下最流行的关系型数据库,以上这些都可以使用Dockerfile文件的方式来创建其Docker镜像. 构建nginx镜像 下载基础镜像 # docker pull centos 建立工作目录 # mkdir /nginx # cd /nginx/ 创建并编写Dockerfile文件 # vim Dockerfile //一定是

构建Docker镜像实战案例

Dockerfile介绍 Dockerfile是由一组指令组成的文件,每条指令对应linux中一条命令,Docker程序将读取Dockerfile中的指令生成指定镜像. Dockerfile大致结构:基础镜像信息.维护者信息.镜像操作指令.容器启动时执行指令.每行支持一条指令,每条指令可以携带多个参数,支持以 # 开头的注释. Dockerfile操作指令: FROM 镜像 : 指定新的镜像所基于的镜像MAINTAINER 名字 :说明新镜像的维护人RUN 命令 : 在所基于的镜像上执行命令,并

构建Docker镜像:tomcat

Dockerfile介绍 Dockerfile是由一组指令组成的文件,每条指令对应linux中一条命令,Docker程序将读取Dockerfile中的指令生成指定镜像.Dockerfile大致结构:基础镜像信息.维护者信息.镜像操作指令.容器启动时执行指令.每行支持一条指令,每条指令可以携带多个参数,支持以 # 开头的注释.Dockerfile操作指令: FROM 镜像 : 指定新的镜像所基于的镜像MAINTAINER 名字 :说明新镜像的维护人RUN 命令 : 在所基于的镜像上执行命令,并提交

构建docker镜像

一.通过docker commit命令构建镜像 docker commit 构建镜像可以想象为是将运行的镜像进行重命名另存一份.我们先创建一个容器,并在容器里做出修改,就像修改代码一样,最后再将修改提交为一个镜像. # docker run -i -t ubuntu /bin/bash [email protected]:/# apt-get -yqq update [email protected]:/# apt-get -y install apache2 以上的操作我们启动了一个容器,并在

构建Docker镜像仓库的另一选择:Nexus3 - DockOne.io

我们知道,构建企业内部私有Docker镜像仓库有很多选择,比如可以采用原生的Docker Registry服务,也可以部署更加专业的工具,例如SUSE team的Portus (https://github.com/SUSE/Portus)或VMware出品的Harbor(https://github.com/vmware/harbor).我们也就曾对Harbor这样的产品做过较为详细的分析(http://mp.weixin.qq.com/s/oQoLgNgnfM8TQHnDDOOIog).然而