今天正好看到这一块了,记录一下,希望可以帮助到大家。

构建Dockerfile

先来看一个示例:

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

#第一行必须基于某个镜像

FROM java:8-jre

#维护者信息
MAINTAINER dtelec developer

#镜像的操作指令

ADD ./target/icmes-schedule-service.jar /app/

#容器启动时执行指令
CMD ["java", "-Xmx200m", "-jar", "/app/icmes-schedule-service.jar"]

#暴露出来对外的端口

EXPOSE 9800

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

  1. FROM
    1. 格式为FROM<image>或者FROM<image>:<tag>
  2. MAINTAINER
    1. 格式为MAINTAINER<name>,指定维护者信息、
  3. RUN
    1. 格式为RUN<command>或者["executable","param1","param2"].
  4. CMD
    1. CMD["executable","param1","param2",]使用exec执行,推荐方式。
    2. 指定启动容器时执行的命令,每个Dockerfile只能有一条CMD指令,如果指定了多条指令,则最后一条执行。(会被启动时指定的命令覆盖)
  5. EXPOSE
    1.   

      格式:EXPOSE <port>  [ <port> ...]

      告诉Docker服务端暴露端口,在容器启动时需要通过 -p 做端口映射

  6. ENV
    1. 格式:ENV <key> <value>

      指定环境变量,会被RUN指令使用,并在容器运行时保存

  7. ADD
    1. 格式:ADD  <src>  <dest>

      复制指定的<src>到容器的<dest>中,<src>可以是Dockerfile所在的目录的一个相对路径;可以是URL,也可以是tar.gz(自动解压)

  8. COPY
    1. 格式:COPY <src>  <dest>

      复制本地主机的 <src> ( 为 Dockerfile 所在目录的相对路径)到容器中的 <dest> (当使用本地目录为源目录时,推荐使用 COPY)

  9. ENTRYPOINT
    1. 格式:ENTRYPOINT ["","",""]

      配置容器启动后执行的命令,并且不可被 docker run 提供的参数覆盖。(每个 Dockerfile 中只能有一个 ENTRYPOINT ,当指定多个时,只有最后一个起效)

  10. VOLUME
    1. 格式:VOLUME ["/mnt"]

      创建一个可以从本地主机或其他容器挂载的挂载点,一般用来存放数据库和需要保持的数据等

  11. USER
    1. 格式:USER daemon

      指定运行容器时的用户名或 UID,后续的 RUN 也会使用指定用户。

  12. WORKDIR
    1. 格式:WORKDIR /path/to/workdir

      为后续的 RUN 、 CMD 、 ENTRYPOINT 指令配置工作目录。(可以使用多个 WORKDIR 指令,后续命令如果参数是相对路径, 则会基于之前命令指定的路径)

  13. ONBUILD
    1. 格式:ONBUILD [INSTRUCTION]

      配置当所创建的镜像作为其它新创建镜像的基础镜像时,所执行的操作指令

例如构建自己的镜像:

编写dockerfile如下:

 #基于centos7构建

FROM centos7
#维护者
MAINTAINER pray
#安装依赖
RUN yum -y install tar cpp binutiles glibc-kernheaders glibc-common glibc-devel gcc make gcc-c++ libstdc++-devel tcl
#创建安装目录
RUN mkdir -p /redis/data && cd /redis #拷贝redis的安装包
COPY ./redis-5.tar.gz /redis #解压
RUN cd /redis && tar -xvf redis5.tar.gz && rm -rf redis5.tar.gz && cd redis5 #编译、安装
RUN cd /redis/redis5 && make && make install #复制配置文件到/redis中,并且修改iredis为后台运行
RUN cp /redis/redis5/redis.conf /redis/ && echo "daemonize yes" >> redis.conf
#设置数据挂载目录以及工作目录
VOLUME /redis/data
WORKDIR /redis/data #容器启动后执行该命令
ENTRYPOINT ["/user/local/bin/redis-server","/redis/redis.conf"]
#设置对外的端口号
EXPOSE 6379 构建命令
docker build -t registry.cn-hangzhou.aliyuncs.com/for-docker/redis 因为centos很大,所以我也没有执行玩dockerfile ,不能保证一定正确;
今天就先记录到这把

关于docker构建镜像的更多相关文章

  1. Docker 构建镜像

    Docker 构建镜像 1.首先,在项目的根目录下,新建一个文本文件.dockerignore,写入下面的内容. 下面三行代码表示: 1.这三个路径要排除,不要打包进入 image 文件. 2.如果你 ...

  2. docker 构建镜像 centos7 nginx php

    #docker 构建镜像(Dockerfile) centos 7.4.1078镜像制作 nginx镜像制作(以前面centos7镜像为基础) Nginx+php镜像制作 更多操作实例,查看git里的 ...

  3. Geoserver+Openlayers+MySQL设计思想,GeoServer服务器搭建(Docker构建镜像)

    Geoserver+Openlayers+MySQL设计思想,GeoServer服务器搭建(Docker构建镜像) 一.geoserver+openlayers+mysql主要设计思想 1.1 Geo ...

  4. docker构建镜像

    Docker 提供了两种构建镜像的方法: docker commit 命令Dockerfile 构建文件 示例: Dockerfile FROM golang:1.7.5 #基础镜像 RUN apt- ...

  5. docker构建镜像 (3)

    使用Dockerfile构建镜像 Dockerfile使用DSL(Domain Specific Language)来构建一个Docker镜像,只要编辑好了Dockerfile文件,就可以使用dock ...

  6. Docker构建镜像过于缓慢解决-----Docker构建服务之部署和备份jekyll网站

    参考原文链接:https://www.jianshu.com/p/e6b7e68f2ba7 来自<第一本Docker书>,我觉得很有趣,就记录一下 准备国内ubuntu镜像 每次构建Ubu ...

  7. Docker 构建网络服务后本机不能访问

    Docker 构建网络服务后本机不能访问 起因 使用tornado构建了一个服务,测试都没有问题 使用docker构建镜像,使用docker run image_name启动服务 使用浏览器访问 12 ...

  8. 使用Dockerfile构建镜像-Docker for Web Developers(5)

    1.理解Dockerfile语法 语法命令 命令功能 举例 FROM 所有的dockerfile都必须以FROM命令指定镜像基于哪个基础镜像来制作 FROM ubuntu:14:04 MAINTAIN ...

  9. 从零开始构建docker基础镜像

    段子 今年基本已经结束了,我问了很多朋友今年挣钱了没?大多朋友都有挣,而且挣得五花八门:有挣个屁的,有挣个锤子的,有挣个毛的,更有甚者挣个妹的,奢侈之极!最恐怖的是挣个鬼的!有的还可以,挣个球,下午我 ...

随机推荐

  1. tilestache

    pip install tilestache -i https://mirrors.ustc.edu.cn/pypi/web/simple python C:/Python27/ArcGIS10.4/ ...

  2. DDT模块

    转自: https://www.cnblogs.com/frost-hit/p/8277637.html Python DDT(data driven tests)模块心得   关于ddt模块的一些心 ...

  3. Visual Studio Code配置Python环境

    安装环境python环境变量,这个就不写了,这类文章一抓一大把,这类就省略了······· 在Visal Studil Code中配置python环境,其实跟我的上一篇文章一样,如图: 这里有两个选择 ...

  4. .NET笔试题集(三)

    转载于:http://www.cnblogs.com/ForEvErNoME/archive/2012/09/09/2677415.html 1.传入某个属性的set方法的隐含参数的名称是什么? va ...

  5. MySQL分析函数实现

    | MySQL分析函数实现还好MySQL8.0已经实现了与Oracle相同的分析函数. 1. 实现rownumSET @rn:=0;SELECT @rn:=@rn+1 AS rownum ,e.* F ...

  6. MySQL索引设计不可忽视的知识点

    本文主要讨论MySQL索引的部分知识.将会从MySQL索引基础.索引优化实战和数据库索引背后的数据结构三部分相关内容,下面一一展开. 一.MySQL——索引基础 首先,我们将从索引基础开始介绍一下什么 ...

  7. MySQL锁系列之锁的种类和概念

    转自:http://keithlan.github.io/2017/06/05/innodb_locks_1/ 锁是MySQL里面最难理解的知识,但是又无处不在. 一开始接触锁的时候,感觉被各种锁类型 ...

  8. vuejs安装篇

    1.安装nodejs,自带npm环境. 地址:https://nodejs.org/en/download/,Node.js 历史版本下载地址:https://nodejs.org/dist/  可自 ...

  9. November 15th, 2017 Week 46th Wednesday

    Of all the tribulations in this world, boredom is the one most hard to bear. 所有的苦难中,无聊是最难以忍受的. When ...

  10. 【Nginx】开启 gzip和缓存

    Nginx 开启 gzip和缓存 时间:2016-09-23 16:42:37 nginx 是一个高性能的 Web 服务器,之前也写过一些关于 nginx 的文章.为了提高博客的响应速度,可以从设置 ...