亚洲一本,无码熟妇人妻av网址电影,最近2019年在线中文字幕大全,国内69精品视频在线播放

  • <center id="vswv0"></center><tr id="vswv0"></tr>

      <tr id="vswv0"></tr>
      1. <th id="vswv0"><video id="vswv0"></video></th>

        资讯专栏INFORMATION COLUMN

        Docker技术之构建镜像和网络模式解析

        不知名网友 / 4605人阅读
        Docker技术之构建镜像和网络模式解析

        点击上方“IT那活儿”公众号,关注后了解更多内容,不管IT什么活儿,干就完了!!!


        Dockerfile语法详解

        Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。
        基于Dockerfile构建镜像可以使用docker build命令。docker build命令中使用-f可以指定具体的dockerfile文件。
        1.1 FROM
        基础镜像,必须是可以下载下来的,定制的镜像都是基于 FROM 的镜像。
        1.2 MAINTAINER
        指定镜像的作者信息。
        1.3 RUN
        指定在当前镜像构建过程中要运行的命令。包含两种模式

        --Shell

        • RUN (shell模式,这个是最常用的)
        • RUN echo hello

        1.4 EXPOSE指令
        指定启动容器的端口。

        作用:

        • 1)帮助镜像使用者理解这个镜像服务的守护端口,以方便配置映射。
        • 2)在运行时使用随机端口映射时,也就是 docker run -P 时,会自动随机映射 EXPOSE 的端口。
        • 3)可以是一个或者多个端口,也可以指定多个EXPOSE。
        格式:
        EXPOSE <端口1> [<端口2>...]
        1.5 CMD

        类似于 RUN 指令,用于运行程序,但二者运行的时间点不同:

        • 1)CMD 在docker run 时运行。
        • 2)RUN 是在 docker build构建镜像时运行的。

        1.6 ENTERYPOINT
        类似于 CMD 指令,但其不会被 docker run 的命令行参数指定的指令所覆盖,而且这些命令行参数会被当作参数送给 ENTRYPOINT 指令指定的程序。
        但是, 如果运行 docker run 时使用了 --entrypoint 选项,将覆盖 entrypoint指令指定的程序。
        优点:在执行 docker run 的时候可以指定 ENTRYPOINT 运行所需的参数。
        注意如果 Dockerfile 中如果存在多个 ENTRYPOINT 指令,仅最后一个生效。
        1.7 COPY
        复制指令,从上下文目录中复制文件或者目录到容器里指定路径。
        • COPY hom* /mydir/
        • COPY hom?.txt /mydir/

        1.8 ADD
        ADD 的优点:
        在执行 <源文件> 为 tar 压缩文件的话,会自动复制并解压到 <目标路径>。
        ADD 的缺点:
        在不解压的前提下,无法复制 tar 压缩文件。会令镜像构建缓存失效,从而可能会令镜像构建变得比较缓慢。具体是否使用,可以根据是否需要自动解压来决定。
        1.9 VOLUME
        定义匿名数据卷。在启动容器时忘记挂载数据卷,会自动挂载到匿名卷。

        作用:

        • 1)避免重要的数据,因容器重启而丢失。
        • 2)避免容器不断变大。
        在启动容器 docker run 的时候,我们可以通过 -v 参数修改挂载点。
        VOLUME [“/data”]
        1.10 WORKDIR
        指定工作目录。用 WORKDIR 指定的工作目录,会在构建镜像的每一层中都存在。(WORKDIR 指定的工作目录,必须是提前创建好的)。
        docker build 构建镜像过程中的,每一个 RUN 命令都是新建的一层。只有通过 WORKDIR 创建的目录才会一直存在。
        1.11 ENV
        设置环境变量:
        ENV  
        ENV =...
        1.12 USER
        用于指定执行后续命令的用户和用户组,这边只是切换后续命令执行的用户(用户和用户组必须提前已经存在)。
        格式:
        USER user:group
        1.13 ONBUILD
        用于延迟构建命令的执行。

        简单的说,就是 Dockerfile 里用 ONBUILD 指定的命令,在本次构建镜像的过程中不会执行(假设镜像为 test-build)。当有新的 Dockerfile 使用了之前构建的镜像 FROM test-build ,这时执行新镜像的 Dockerfile 构建时候,会执行 test-build 的 Dockerfile 里的 ONBUILD 指定的命令。


        Dockerfile构建nginx镜像

        实验机器1台
        10.0.0.7
        web01
        2.1 首先先准备一个centos的镜像,第一步编写dockerfile
        三个文件要放在同一级目录。
        2.2 构建镜像
        docker build -t="nginx:v1" .
        查看镜像是否构建成功:
        docker images | grep nginx
        如图所示镜像构建完成
        2.3 基于刚才的镜像启动容器
        docker run -d -p 80 --name html2 xianchao/nginx:v1
        查看容器里部署的nginx网站的内容:
        curl 10.0.0.7:49154
        注意:
        ENTRYPOINT ["/usr/sbin/nginx","-g","daemon off;"]

        表示容器运行时,自动启动容器里的nginx服务。


        Dockerfile构建tomcat镜像

        3.1 首先准备构建镜像需要的文件
        编写tomcat的dockerfile:
        3.2 开始构建镜像
        docker build -t="tomcat8:v1" .
        运行一个容器:
        docker run --name tomcat8 -itd -p 8080 tomcat:v1
        进入到容器:
        docker exec -it tomcat8 /bin/bash
        查看进程,看看是否启动成功。
        ps -ef | grep tomcat
        打开新的终端窗口,查看刚才创建的tomcat8这个容器的详细信息:
        docker ps | grep tomcat
        显示如下信息:
        4d4c91cff4b5 tomcat8:v1 
        "/bin/bash"              About a minute ago Up About a
        minute 0.0.0.0:32776->8080/tcp tomcat8
        通过上面可以看到,tomcat在宿主机上映射的端口是49155。
        这样我们请求docker节点的ip:49155,就可以访问到tomcat的内容了。
        通过这些步骤可以实现通过dockerfile构建tomcat镜像了。


        dockerfile的网络模式

        docker run创建docker容器时,可以用--net选项指定容器的网络模式,Docker有以下4种网络模式

        • bridge模式:使--net =bridge指定,默认设置;
        • host模式:使--net =host指定;
        • none模式:使--net =none指定;
        • container模式:使用--net =container:NAME orID指定。

        4.1 none模式

        启动的容器没有ip地址可动态分配ip,Docker网络none模式是指创建的容器没有网络地址,只有lo网卡。
        我们使用以下命令做一个测试:
        docker run -itd --name none --net=none --privileged=true centos
        docker exec -it none /bin/bash
        ip addr
        可以发现只有一个lo网卡。

        4.2 container模式

        指定一个容器,使用与其相同的网络。
        Docker网络container模式是指,创建新容器的时候,通过--net container参数,指定其和已经存在的某个容器共享一个 Network Namespace。如下图所示,右方黄色新创建的container,其网卡共享左边容器。因此就不会拥有自己独立的 IP,而是共享左边容器的 IP 172.17.0.2,端口范围等网络资源,两个容器的进程通过 lo 网卡设备通信。
        使用以下命令进行测试:
        docker run --name container2 --net=container:none  -it --privileged=true centos
        可以看到新创建的容器共享前面一个none容器的网卡。

        4.3 bridge模式

        默认模式,默认选择bridge的情况下,容器启动后会通过DHCP获取一个地址。
        #创建桥接网络。
        docker run --name bridge -it --privileged=true centos bash
        可以看到DHCP随机分配了一个172地址。

        4.4 host模式

        使用此模式的容器共享主机网络。
        接下来进行一个测试:
        docker run --name host -it --net=host --privileged=true centos bash


        本文作者:王文权(上海新炬中北团队)

        本文来源:“IT那活儿”公众号

      2. <center id="vswv0"></center><tr id="vswv0"></tr>

          <tr id="vswv0"></tr>
          1. <th id="vswv0"><video id="vswv0"></video></th>

            亚洲一本,无码熟妇人妻av网址电影,最近2019年在线中文字幕大全,国内69精品视频在线播放

            品牌简介

            {转码主词}

            文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

            转载请注明本文地址:http://www.mianhuasuan168.com/yun/129093.html

            相关文章

            • 宜信开源|一个实例解析PaaS平台LAIN的9大杀手级功能

              一、基于Docker的PaaS平台LAIN 在金融的场景下,LAIN 是为解放各个团队业务线的生产力而设计的一个云平台。LAIN 正式上线已经大约两年,基本已经成熟,为宜信大数据创新中心各个团队提供了统一的测试生产环境,简化了...

              Apollo 评论0 收藏0
            • 技术选型Docker容器引擎

              题外话   最近对DockerKubernetes进行了一番学习,前两天做了一次技术分享,回去听了一遍自己演讲的录音,发现单单PPT做好还是远远不够的,没有提前准备好逻辑严谨的讲稿,在讲的时候出现了卡壳、漏掉技术点、逻辑...

              xiangchaobin 评论0 收藏0
            • 技术选型Docker容器引擎

              题外话   最近对DockerKubernetes进行了一番学习,前两天做了一次技术分享,回去听了一遍自己演讲的录音,发现单单PPT做好还是远远不够的,没有提前准备好逻辑严谨的讲稿,在讲的时候出现了卡壳、漏掉技术点、逻辑...

              monw3c 评论0 收藏0
            • 后端好书阅读与推荐(续四)

              ...每本书的亮点与自己读书心得体会,分享并求拍砖。 Docker生产环境实践指南 Docker生产环境实践指南 (豆瓣) https://book.douban.com/subje... 前面docker的基本概念一些核心原理都看的差不多了,那么现在该关注一下具体的生产环境的...

              phodal 评论0 收藏0
            • 使用 Docker 搭建开发环境

              做了一次分享,主题《使用 Docker 搭建开发环境》,简单介绍了一下 Docker 的概念,演示了使用 Docker-compose 构建全套 PHP 环境。 主要内容 镜像、容器、仓库概念 容器与虚拟机的区别 使? Docker 搭建 PHP 环境 介绍 docker-compose ...

              zxhaaa 评论0 收藏0

            发表评论

            0条评论

            不知名网友

            |高级讲师

            TA的文章

            阅读更多
            最新活动
            阅读需要支付1元查看
            <