zoukankan      html  css  js  c++  java
  • 关于docker构建镜像

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

    构建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 ,不能保证一定正确;
    今天就先记录到这把

  • 相关阅读:
    付出给人一种美好的感觉
    表连接查询 条件在On与Where后区别
    Json与实体类 转化
    算法的时间复杂度和空间复杂度详解
    真的理解同步和异步了吗?
    花生壳申请域名并进行内网穿透
    XML 反序列化
    .Net 发送邮件
    BootStrap DataTable 时间日期列排序
    SQL Server 动态SQL拼接
  • 原文地址:https://www.cnblogs.com/PrayzzZ/p/10149484.html
Copyright © 2011-2022 走看看