精华内容
下载资源
问答
  • DockerFile解析之Dockerfile是什么

    千次阅读 2018-11-05 22:04:13
    一、Dockerfile是什么? Dockerfile是用来构建Docker镜像的构建文件,是由一系列命令和参数构成的脚本。 二、构建三步骤: 三、文件什么样??? centos的Dockerfile如下所示: FROM scratch ## 所有镜像...

    一、Dockerfile是什么?

    Dockerfile是用来构建Docker镜像的构建文件,是由一系列命令和参数构成的脚本。

    二、构建三步骤:

    三、文件什么样???

    centos的Dockerfile如下所示:

    FROM scratch   ## 所有镜像文件的祖先类
    ADD centos-7-docker.tar.xz /
    
    LABEL org.label-schema.schema-version="1.0" \
        org.label-schema.name="CentOS Base Image" \
        org.label-schema.vendor="CentOS" \
        org.label-schema.license="GPLv2" \
        org.label-schema.build-date="20181006"
    
    CMD ["/bin/bash"]

     

    展开全文
  • 22_Dockerfile是什么

    2020-12-08 22:35:00
    将介绍Docker核心概念,是什么、能干什么、Docker整体架构,和传统虚拟机的区别。什么是容器虚拟化技术,深刻理解镜像、容器、仓库的各种概念...1、Dockerfile是什么? Dockerfile是用来构建Docker镜像的构建文件,是.

    将介绍Docker核心概念,是什么、能干什么、Docker整体架构,和传统虚拟机的区别。什么是容器虚拟化技术,深刻理解镜像、容器、仓库的各种概念和操作。通过该课程,能够熟练掌握Dockerfile的编写和构建并使用Dockerfile来制作复杂镜像,能够使用容器卷完成容器间数据共享和持久化工作。能够在Docker容器下进行日常软件的安装开发和工程部署,最终可以通过docker和阿里云平台完成工作的协同和发布。

    1、Dockerfile是什么?

    Dockerfile是用来构建Docker镜像的构建文件,是由一系列命令和参数构成的脚本。

    2、构建Dockerfile三步骤

    1.编写Dockerfile文件 2.docker build 3.docker run

    3.Dockerfile文件什么样?

    以我们熟悉的CentoOS为例

    官方地址:

    https://registry.hub.docker.com/_/centos?tab=description&page=1&ordering=last_updated

    FROM centos:7
    ENV container docker
    RUN (cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i == \
    systemd-tmpfiles-setup.service ] || rm -f $i; done); \
    rm -f /lib/systemd/system/multi-user.target.wants/*;\
    rm -f /etc/systemd/system/*.wants/*;\
    rm -f /lib/systemd/system/local-fs.target.wants/*; \
    rm -f /lib/systemd/system/sockets.target.wants/*udev*; \
    rm -f /lib/systemd/system/sockets.target.wants/*initctl*; \
    rm -f /lib/systemd/system/basic.target.wants/*;\
    rm -f /lib/systemd/system/anaconda.target.wants/*;
    VOLUME [ "/sys/fs/cgroup" ]
    CMD ["/usr/sbin/init"]
    
    展开全文
  • 1、DockerFile是什么? 是用来构建Docker镜像的构建文件,由一系列参数和命令构成的脚本 关系: 2、DockerFile的三步构建步骤? 1.编写: 手动编写dockerfile文件,一定要符合file的规范,...
    1、DockerFile是什么?
        是用来构建Docker镜像的构建文件,由一系列参数和命令构成的脚本
     
                    关系:
                                    
     
    2、DockerFile的三步构建步骤?
        1.编写:
            手动编写dockerfile文件,一定要符合file的规范,DockerFile,文件名就是:Dockerfile
        2.构建:
            有了这个文件后,直接docker build执行获得一个自定义的镜像文件,Docker镜像
        3.执行:
            docker run,Docker容器
        
    3、DockerFile的文件到底长什么样?
     
        我们先拿centos为例,先进去Docker Hub里面,搜索centos
     
      
        FROM scratch
        MAINTAINER The CentOS Project <cloud-ops@centos.org> - ami_creator
        ADD centos-7.1503-20150330_1749-docker.tar.xz /
        CMD ["/bin/bash"]
    解读:
        第一行的scratch,真真正正的就是java中的Object类,所有镜像文件的祖先类
        第二行:作者加邮箱
        第三行:
        第四行:dockerfile文件里面的CMD命令只会执行最后一个CMD,这就是为什么运行centos镜像时:docker run -it centos /bin/bash 最后的/bin/bash可加可不加;如果加上就是:在最后面又加了一个CMD ["/bin/bash"]。
                FROM scratch
                MAINTAINER The CentOS Project <cloud-ops@centos.org> - ami_creator
                ADD centos-7.1503-20150330_1749-docker.tar.xz /
                CMD ["/bin/bash"]
                CMD ["/bin/bash"]
     
        
    4、DockerFile的语法规则:
        1:每条保留字指令(保留字指令在后面)都必须为大写字母且后面要跟随至少一个参数,否则运行就会报类似于空指针之类的错。
        2:指令按照从上到下,顺序执行
        3:#为注释
        4:每条指令都会创建一个新的镜像层,并对镜像进行提交
     
    5、Docker执行DockerFile的大致流程:
        (1)docker从基础镜像运行一个容器,这个容器就是第一行FROM后面的镜像,如scratch、centos等
        (2)执行一条指令并对容器作出修改。
        (3)执行类似docker commit的操作提交一个新的镜像层
        (4)docker再基于刚提交的镜像运行一个新容器
        (5)执行dockerfile中的下一条指令直到所有指令重复上面步骤直到都执行完成
    最终: DockerFile、Docker镜像、Docker容器,逐步构建出来的
        
    6、保留字指令:
    FROM:   基础镜像,当前新镜像是基于哪个镜像的
    MAINTAINER: 镜像维护者的姓名和邮箱地址
    RUN:    容器构建时需要运行的命令,如果在容器运行时需要运行其他命令,使用run指定
    EXPOSE: 容器对外暴露的端口,mysql:3306、redis:6379
    WORKDIR:创建容器后,进入容器使用pwd指令落脚点的目录,没有指定就是/,如centos是/,redis是/data
    ENV:    用来构建镜像的过程中设置环境变量,"ENV 键 值"。 相当于成员变量
             如:ENV MY_PATH /usr/mytest    这个环境变量可以在后续的任何RUN指令中使用;也可以在其它指令中直接使用这些环境变量,
             比如:WORKDIR $MY_PATH   使用,就相当于运行容器的落脚点就是/usr/mytest
    ADD:    将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar压缩包。 ADD = COPY+解压缩
    COPY:   类似ADD,拷贝文件和目录到镜像中。将从构建上下文目录中 <源路径> 的文件/目录复制到新的一层的镜像内的 <目标路径> 位置
            COPY的两种写法:COPY src dest 、 COPY["src","dest"]
    VOLUME: 容器数据卷,用来数据保存和持久化工作
    CMD:    指定一个容器启动时需要运行的命令。DockerFile 中可以有多个 CMD 指令,但只有最后一个生效,CMD 会被 docker run 之后的参数替换
             也就是人工添加或文件中指定的CMD参数会把DockerFile里面的参数覆盖,只会有最后一个生效。
            
    ENTRYPOINT: 指定一个容器启动时需要运行的命令。 和CMD的命令一样,区别是这个有多个ENTRYPOINT会追加,而不是覆盖。相对比CMD更加强大
    ONBUILD:当构建一个被继承的DockerFile时运行命令,父镜像在被子继承后父镜像的onbuild被触发。
             类似于触发器,如果子镜继承了某个镜像,运行了之后父镜像还想做一些其他事情,就能写ONBUILD。 
     
                            
        
    7、案例: 自己编写Dockerfile文件:
        1、默认centos是精简版的只有一个kernel的centos,所以安装的时候自己安装上vim、ifconfig等命令,且登录的落脚点为/tmp
    FROM centos
    MAINTAINER zhangsan<111111111@qq.com>
    ENV MYPATH/tmp
    WORKDIR $MYPATH
    RUN yum -y install vim
    RUN yum -y install net-tools
    EXPSOE 80
    CMD /bin/bash             //使用的是shell脚本的CMD方式exec格式(JSON字符串格式)
     
    docker build -f /myDockerFile/Dockerfile1 -t zhangsan/centos:1.0 .     // 如果执行到yum就运行不下去,就重新pull一个centos,因为最新的centos是8.x
     
    docker run -it /zhanghao/centos:1.0 /bin/bash     //最后的/bin/bash可写可不写
        2、CMD命令会被覆盖,ENTRYPOINT会追加。所以,如果Dockerfile文件是CMD就只能有最后一个被执行,使用docker run 运行镜像后面不能叠加参数,如果Dockerfile使用的是ENTRYPOINT那么运行后面可以叠加参数。
    CMD指令:
     
    FROM centos
    RUN yum install -y curl
    CMD [ "curl", "-s", "http://ip.cn" ]    #使用的哪个ip
     
    docker build -f/myDockerFile/Dockerfile2 -t zhanghao/cnetos:1.1 .
     
    docker run zhanghao/centos:1.1     //就会显示出当前的地址和ip
     
    但是如果要将html的请求头一起显示出来就需要知道 -i 参数:
    docker run -it zhanghao/centos:1.1 -i
    根据CMD的特点,这是不允许的,会报executable file not found。因为-i覆盖了之前的CMD,所以-i执行失败
     
     
    ENTRYPOINT指令:
     
    #因为下载的cnetos是最新版的8,使用yum会出现一些错误,所以就下载7.x的版本,注意这个FROM后面的镜像也需要加上版本。
    FROM centos           
    RUN yum install -y curl
    ENTRYPOINT [ "curl", "-s", "http://ip.cn" ]  
     
    docker build -f/myDockerFile/Dockerfile3 -t zhanghao/cnetos:1.2 .
     
    docker run zhanghao/centos:1.2
     
    如果使用ENTRYPOINT命令方式命令就可以叠加了,
    docker run zhanghao/centos:1.2 -i     
    就会将 -i 参数添加到参数位置:  ENTRYPOINT [ "curl", "-s", "-i", "http://ip.cn" ]   
     
        
    crul命令解释
        curl命令可以用来执行下载、发送各种HTTP请求,指定HTTP头部等操作。
        如果系统没有curl可以使用yum install curl安装,也可以下载安装。
        curl是将下载文件输出到stdout
        使用命令:curl http://www.baidu.com
        执行后,www.baidu.com的html就会显示在屏幕上了
        这是最简单的使用方法。用这个命令获得了http://curl.haxx.se指向的页面,同样,如果这里的URL指向的是一个文件或者一幅图都可以直接下载到本地。如果下载的是HTML文档,那么缺省的将只显示文件头部,即HTML文档的请求头header。要全部显示,请加参数 -i
     
        3、先创建一个Dockerfile4,这个文件就充当父镜像,然后编写Dockerf5继承和这个镜像,然后触发执行ONBUILD后面的内容。
    Dockerfile4:
     
    FROM centos
    ONBUILD RUN echo "这是父镜像。。"
    CMD /bin/bash
     
    docker build -f /myDockerFile/Dockerfile4 -t zhanghao/Docker_father .
     
     
    Dockerfile5:
     
    FROM zhanghao/Docker_father
    CMD /bin/bash
     
    docker build -f myDockerFile/Dockerfile5 -t zhanghao/Docker_son .
     
    当构建DockerFile5的时候,就会触发执行父镜像Dockerfile4, 然后就会执行ONBUILD后面的内容。
        
        4、使用centos,自己指定一个tomcat镜像。 注意tomcat的千层饼,tomcat镜像是基于tomcat,jdk,centos,kernel组合的,暴露8080端口。
                                                                  
    1.mkdir -p /zhanghao/mydockerfile/tomcat9
     
    2.touch c.txt
     
    3.上传:使用上传工具将windows上下载的jdk和tomcat的压缩包上传到centos中。
     
    4.编写Dockerfile:
    FROM centos
    MAINTAINER zhanghao<2281431614@qq.com>
    #把宿主机当前上下文的c.txt拷贝到容器/usr/local/路径下重命名为cincontainer.txt
    COPY c.txt /usr/local/cincontainer.txt
    #把java与tomcat添加到容器中,ADD = COPY + 自动解压缩,tomcat镜像必须是先装jdk,再装tomcat,
    ADD jdk-8u171-linux-x64.tar.gz /usr/local/
    ADD apache-tomcat-9.0.8.tar.gz /usr/local/
    #安装vim编辑器
    RUN yum -y install vim
    #设置工作访问时候的WORKDIR路径,登录落脚点
    ENV MYPATH /usr/local
    WORKDIR $MYPATH
    #配置java与tomcat环境变量
    ENV JAVA_HOME /usr/local/jdk1.8.0_171
    ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.8
    ENV CATALINA_BASE /usr/local/apache-tomcat-9.0.8
    ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
    #容器运行时监听的端口
    EXPOSE  8080
    #启动时运行tomcat。  tail -f :实时监控日志的更新信息保存到catalina.out里面
    # ENTRYPOINT ["/usr/local/apache-tomcat-9.0.8/bin/startup.sh" ]
    # CMD ["/usr/local/apache-tomcat-9.0.8/bin/catalina.sh","run"]
    CMD /usr/local/apache-tomcat-9.0.8/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.8/bin/logs/catalina.out
     
    5.构建Dockerfile:
     
    docker build -f /myDockerFile/Dockerfile -t zhanghao/myt9 .
     
    6.运行: -v就是,只要编写好了项目之后,将要运行的项目放在host下的/zhanghao/mydockerfile/tomcat9/test目录里面,运行项目就会自动挂载带webapps里面。test就是项目名
    docker run -d -p 9080:8080 --name myt9 \
    -v /zhanghao/mydockerfile/tomcat9/test:/usr/local/apache-tomcat-9.0.8/webapps/test \
    -v /zhanghao/mydockerfile/tomcat9/tomcat9logs/:/usr/local/apache-tomcat-9.0.8/logs \
    --privileged=true \
    zzyytomcat9
     
    如果运行 docker exec 容器id ls -l 查询的将是在/user/local下面的信息,因为工作目录WORKDIR是/usr/local
     
    7.验证:
     
    8.项目搭建:在tomcat上运行一个项目
    在/zhanghao/mydockerfile/tomcat9/test 里面新建WEB-INF文件夹,里面存放web.xml文件:
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xmlns="http://java.sun.com/xml/ns/javaee"
      xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
      id="WebApp_ID" version="2.5">
      
      <display-name>test</display-name>
    </web-app>
    在/zhanghao/mydockerfile/tomcat9/test 里面新建jsp文件,如a.jsp:
    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
      <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Insert title here</title>
      </head>
      <body>
        -----------welcome------------
        <%="i am in docker tomcat self "%>  <!--前台显示-->
        <br>
        <br>
        <% System.out.println("=============docker tomcat self");%>   <!--后台日志里面显示-->
      </body>
    </html>
     
    9.运行项目: 在catalina.out文件里面查看日志的信息。访问几次a.jsp就显示几次日志监控信息
        
     
     
    10.这样运行的好处,当在host主机上对文件进行修改后,就会影响到容器。
        如:修改了a.jsp的格式,不用重新启动tomcat容器就会刷新。
        
        
        
     
        
        
     
        
        
        
        
        
    展开全文
  • 1.dockerfile是一个文本的配置文件,它可以快速创建自定义的镜像。 2.文本内容:包含了若干的命令行,并支持#作为注释行 3.文本格式:基础镜像FROM,维护者MAINTAINER,操作指令ADD,容器启动后指令等共计4部分。 ...

    什么是dockerfile?

    1.dockerfile是一个文本的配置文件,它可以快速创建自定义的镜像。
    2.文本内容:包含了若干的命令行,并支持#作为注释行
    3.文本格式:基础镜像FROM,维护者MAINTAINER,操作指令ADD,容器启动后指令等共计4部分。

    手动制作一个dockerfile

    自己创建一个文件夹,然后使用创建dockerfile文件
    然后打包一个eureka的包到这个目录中。

    在这里插入图片描述

    然后将下面的代码添加到dockerfile中:
    #1.基础镜像:FROM指令:基础镜像名:tag,例如java:8
    FROM java:8
    #2.维护者:格式:MAINTAINER
    MAINTAINER username
    #3.镜像的操作指令
    #ADD拷贝一个文件到容器中,格式:ADD
    ADD eurekaone-server-ha-0.0.1-SNAPSHOT.jar /data/app.jar
    #4.告诉docker容器暴露端口,在容器启动的时候,需要通过-p 做端口映射
    EXPOSE 8761
    #5.配置容器启动后,执行什么命令
    ENTRYPOINT [“java”,"-jar","/data/app.jar"]

    构建镜像:
    docker build -t registry-xinyang/eureka-server:1.0.0 .
    其中 -t 对镜像进行命名,一般的命名法:仓库名字/镜像名字:版本号
    注意:其中 .号,代表当前目录下的dockerfile文件。
    查看本地镜像:
    docker images
    在这里插入图片描述
    创建成功!
    启动镜像:
    docker run -d -p 8761:8761 --name=eureka registry-xinyang/eureka-server:1.0.0
    在这里插入图片描述
    查看容器
    查看eureka:
    在这里插入图片描述
    手动制作镜像成功!
    感谢大家的观看,如果需要交流的可以加我的微信:xinyangyunyang

    展开全文
  • # # 什么是dockerFile呢 用我们熟悉的java来举例子把:hello.java 编译后是hello....dockerFile是用来构建docker镜像的构建文件,由命令参数构成的脚本 # #镜像构建的流程 # #自己不会写dockerFile怎么办 ...
  • 1,Dockerfile是用来构建Docker镜像的构建文件,是由一系列的命令和参数构成的脚本 2,Dokcerfile的构建步骤 编写Dokcerfile文件 docker build 生成新的镜像 docker run 运行镜像 3,以centos的...
  • Dockerfile是用来构建Docker镜像的构建文件 Docker镜像、Docker容器、Dockerfile关系
  • 1、DockerFile是什么 Dockerfile是用来构建Docker镜像的构建文件,是由一系列命令和参数构成的脚本。 2、DockerFile构建步骤 编写Dockerfile文件 docker build docker run 3、DockerFile文件什么样? 以...
  • dockerfile

    2019-03-03 14:44:00
    目录 dockerfile 1. dockerfile是什么 2. dockerfile保留字指令 dockerfile 1. dockerfile是什么 dockerfile是什么 dockerfile 是 构建 docker镜像的构建文本,由一系列...
  • DockerFIle

    多人点赞 热门讨论 2020-12-25 14:12:13
    是什么DockerFile是用来构建Docker镜像的构建文件,是由一系列命令和参数构成的脚本 构建三步骤: 编写DockerFile文件 docker build docker run Centos Dockerfile文件案例: FROM scratch ADD centos-7-...
  • Dockerfile

    2021-01-12 00:43:24
    DockerFile是什么 DockerFile是用来构建Docker镜像的构建文件,是由一系列命令和参数构成的脚本。 构建三步骤:编写DockerFile文件、docker build、docker run DockerFile、Docker镜像与Docker容器关系: 从应用软件...
  • DockerFile

    千次阅读 2019-06-03 15:46:16
    DockerFile是什么 DockerFile是用来构建Docker镜像的构建文件,是由一系列命令和参数构成的脚本。 构建三步骤:编写DockerFile文件、docker build、docker run DockerFile、Docker镜像与Docker容器关系: 从应用软件...
  • 什么是dockerfile?

    2019-05-30 11:56:43
    Dockerfile是一个包含用于组合映像的命令的文本文档。可以使用在命令行中调用任何命令。 Docker通过读取Dockerfile中的指令自动生成映像。 docker build命令用于从Dockerfile构建映像。可以在docker build命令中...
  • 什么是 Dockerfile

    2021-02-25 14:31:21
    Dockerfile 一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。 现以Dockerfile构建镜像并部署node项目为例: 1.编写Dockerfile 文件,去定制镜像 在你的linux系统的某个目录下,...
  • DockerFile理解

    2019-09-02 18:12:59
    DockerFile是什么 Docker的使用主要如下步骤: 1)手动按规则编制DockerFile的文件 2)使用docker build命令从DockerFile生成docker镜像 3)执行docker run命令从docker镜像构建docker容器 DockerFile是...
  • DockerFile解析

    2020-07-25 11:29:44
    DockerFile解析DockerFile是什么?构建的步骤格式示例Dockerfile内容基础知识Docker执行Dockerfile大致流程Dockerfile、Docker镜像与Docker容器三者关系DockerFile体系结构(保留字指令) DockerFile是什么? ...
  • Dockerfile解析

    2020-05-05 15:03:16
    Dockerfile解析Dockerfile是什么Dockerfile 语法规则Dockerfile 执行流程Dockerfile 常用指令Dockerfile 构建镜像 Dockerfile是什么 Dockerfile 用于构建一个新的Docker镜像的脚本文件,是由一系列命令和参数构成的...
  • 文章目录一、什么是dockerfile?二、Dockerfile操作指令三、Dockerfile构建镜像3.1 构建apache镜像3.2 构建nginx镜像3.3 构建tomcat镜像3.4 构建mysql镜像 一、什么是dockerfile? Dockerfile 一个用来构建镜像的...
  • Dockerfile基础

    2020-04-23 21:08:16
    Dockerfile是什么? 在Docker中创建镜像最常用的方式,就是使用Dockerfile。Dockerfile是一个Docker镜像的描述文件,我们可以理解成火箭发射的A、B、C、D…的步骤。Dockerfile其内部包含了一条条的指令**,**每一条...
  • 06DockerFile

    2019-12-31 13:44:04
    手动编写一个dockerfile文件,当然,必须要...1、DockerFile是什么 DockerFile是用来构建Docker镜像的构建文件,是由一系列命令和参数构成的脚本 构建三步骤 : ​ 编写DockerFile文件 ​ Docker build...
  • Dockerfile 操作

    2019-09-27 10:21:35
    Dockerfile是什么 我们可以去使用Dockerfile定义镜像,依赖镜像来运行容器,可以去模拟出一个真实的漏洞场景。因此毫无疑问的说,Dockerfile是镜像和容器的关键,并且Dockerfile还可以很轻易的去定义镜像内容,...
  • Dockerfile是什么1.1 构建三步骤2. Dockerfile构建过程解析2.1 Dockerfile基础知识2.2 Docker执行Dockerfile的大致流程3. 小总结 1. Dockerfile是什么 Dockerfile是用来构建Docker镜像的构建文件,是由一系列命令和...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,486
精华内容 594
关键字:

dockerfile是什么