Docker学习笔记(四)

DockerFile解析

        dockerFile是用来构建Docker镜像的文本文件,是由一条条构建镜像所需的指令和参数构成的脚本。

构建过程解析:       

dockerfile内容基础知识

        1.每条保留字指令都必须为大写字母,且后面要跟随至少一个参数

        2.指令按照从上到下,顺序执行

        3.#表示注释

        4.每条指令都会创建一个新的镜像层并对镜像进行提交

  docker执行dockerFile的大致流程

        1.docker从基础镜像运行一个容器

        2.执行一条指令并对容器作出修改

        3.执行类似docker commit的操作提交一个新的镜像层

        4.docker再基于刚提交的镜像运行一个新的容器 

        5.执行dockerFIile 中的下一条指令,直到所有指令都执行完成    

说明:    

    1.dockerFile 需要定义一个Dockerfile dockerFile定义了进程所需要的一切东西,Dockerfile 涉及的内容包括执行代码或者是文件,环境变量,依赖包。运行时环境,动态链库,操作系统的发行版,服务进程和内核进程(当应用进程需要和内核进程打交道,这时需要考虑如何设计namespace的权限控制)等等

        2。docker镜像,在用DockerFile定义一个文件之后,docker build时会产生一个Docker镜像,当运行Docker镜像时会真正开始提供服务。

        3.Docker容器,容器是直接提供服务。

DocekrFile常用保留字指令

  

FROM  //代表基础镜像,当前新镜像时基于那个镜像的,指定一个已经存在的镜像作为模板
,第一条必须为from

MAINTAINER  //镜像维护者的姓名和邮箱

RUN        //容器构建时需要运行的命令     两种格式:  shell格式   
            run是在docker build 时运行               exec格式 

EXPOSE     //当前容器对外暴露的端口
    
WORKDIR    //指定在创建容器后,终端默认登录的进来工作目录 

USER      //指定该镜像以什么样的用户去执行,如果都不指定,默认是root
      
ENV       // 用来在构建镜像过程中设置环境变量,

ADD       // 将宿主机目录下的文件拷贝进镜像且会自动处理URL和解压tar压缩包

COPY      //类似ADD 拷贝文件和目录到镜像中   

VOLUME    //容器数据卷,用于数据保存和持久化

CMD       //        指定容器启动后要干的事情,
            dcokerFile可以有多个CMD指令,但只有最后一个生效,cmd会被docker 
                                                 run之后的参数替换
            
            

ENTRYPOINT      //指定容器启动时要运行的命令
                //类似于CMD命令,但是ENTRYPOINT 不会被docker run后面的参数覆盖,
而且这些命令行参数会被当做参数送给ENTRYPOINT指令指定程序
                

编写    构建   运行           使Centos7具备 vim+ipconfig+jdk8

编写:

FROM centos
MAINTAINER yxp<yxp@qq.com>

#安装vim编辑器
RUN yum -y install vim
#安装ifconfig命令查看IP
RUN yum -y install net-tools
#安装java8lib库
RUN yum -y install glibc.i688
RUN mkdir/usr/local/java
#ADD是相对路径jar 把jdk-8u171-linux-x64.tar.gz添加到容器中,
安装包必须要和DockerFile文件在同一位置上
ADD jdk-8u171-linux-x64.tar.gz/url/local/java
#配置java环境变量
ENV JAVA_HOME /usr/locak/java/jdk1.8.0_171
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH  $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib:$CLASSPATH
ENV PATH $JAVA_HOME/bin:$PATH

EXPOSE 80
CMD echo $MYPATH
CMD echo "success----------ok"
CMD /bin/bash

构建:  docker build -t 新镜像的名字:TAG

 docker build -t centos java8:1.5.

运行: docker run -it 新镜像名字:TAG

docker run -it a857c8e1a16 /bin/bash

虚悬镜像

仓库名,标签名都是<none>的镜像,俗称为danling image

Docker file写:

        from ubuntu

        CMD echo 'action is success' 

查询虚悬镜像:

  docker image ls -f dangling =true

删除

 docker inager prune

                 

Docker微服务实战版

通过IDEA新建一个普通的微服务模块

通过dockerFile发布微服务部署到docker容器

 编写DockerFile
    FROM java:8.
    #
    MAINTAINER yxp    
    #VOLUME   指定临时文件目录为/tmp.在主机/var/lib/docker目录、
        下创建了一个临时文件并链接到容器的/tmp
    VOLUME /tmp
    #将jar包添加到容器中并更名为yxp_dicker.jar
    ADD docker_boot_0.0.1-SNAPSHOT.jar yxp_docker.jar
    #运行jar包
    RUN bash -c 'touch /yxp_docker.jar'
    ENTRYPOINT["java","jar","/yxp_docker.jar"]
    EXPOSE 6001

构建
  docker build -t yxp_docker:1.6.

Docker网络

   docker启动后 会产生一个名为docker0的虚拟网桥

网络常用基本命令

查看网络: 
  docker network  ls    
查看网络源数据
  docker network inspect xxx网络名字
删除网络
    docker network rm xxx网络名字

能干嘛?

        容器间的互联和通信以及端口映射

        容器IP变动时候可以通过服务名直接网络通信而不受到影响

网络模式

bridge     为每一个容器分配 设置IP等,并将容器连接到一个docker0   虚拟网桥,默认为该模式

host      容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口

none      容器有独立的Network namespace,但并没有对其进行任何网络设置,
          如分配veth pair和网桥连接。IP等
container   新创建的容器不会创建自己的网卡和配置自己的IP,而是和一个指定的容器共享IP,端口范围等

docker容器内部的ip是有可能变化的

docker0

Docker默认提供了一个隔离的内网环境,启动时会建立一个docker0的虚拟网卡,每个容器都是默认连接到docker0网卡上的。而docker0的IP段为172.17.0.1,如果想让容器与宿主机同一网段的其他机器访问,就必须在启动docker的时候将某个端口映射到宿主机的端口

Docker -compose 容器编排

是什么?官方的开源项目,负责实现对Docker容器集群的快速编排

        docker-Compose是Docker公司推出的一个工具软件,可以管理多个Docker容器组成的一个应用,你需要定义一个,YAML格式的配置文件,docker-compose.yml ,写好多个容器之间的调用关系,然后只要一个命令,就能同时启动/关闭这些容器

官网下载

https://github.com/docker/compose/releases

使用的3个步骤

1.编写DockerFile定义各个微服务应用并构建出对应的镜像文件
2.使用docker-compose.yml 定义一个完整业务单元,安排好整体应用中的各个容器服务
3.最后执行docker-compose up命令来启动并运行整个应用程序,完成一键部署上线

Compose常用命令

docker-compose -h      //查看帮助
docker-compose up      //启动所有docker-compose服务
docker-compose up -d   //启动所有docker-compose服务并且后台运行
docker-compose down    //停止并删除容器,网络,卷,镜像

docker-compose exec yml里的服务id  
//进入容器实例内部,  docker-compose exec docker-compose.yml文件中写的服务id/bin/bash
docker-compose ps   //展示当前docke-compose编排过的运行的所有容器
docker-compose top  //展示当前docker-compose编排过的容器go进程

docker-compose logs yml里面的服务id  //查看容器输出的日志

docker-compose config      //检查配置
docker-compose config -q      //检查配置,有问题才输出
docker-compose restart        //重启服务
docker-compose start          //启动服务
docker-compose stop           //停止服务

Docker轻量级可视化工具,Portainer、

        轻量级别的应用,提供了图形化界面,用于方便的管理Docker环境,包括单机环境和集群环境。

Docker容器之CAdvisor+InfluxDB+Granfana

容器监控3剑客

        CAdvisor监控收集  

        CAdvisor是一个容器资源监控工具,包括容器的内存,CPU,网络IO,磁盘IO等监控。同时提供了一个WEB页面用于查看容器的实时运行状态,CAdvisor默认存储2分钟的数据,而且只是针对单物理机。 不过  CAdvisor提供了很多数据集成接口,支持InfluxDB,Redis,Kafka,Elasticsearch等集成,可以加上对应配置将监控数据发往这些数据库存起来。

 主要功能:

        展示Host和容器两个层次的监控数据

        展示历史数据变化

        InfkuxDB存储数据

        Granfana展示图表

主要特性:

        灵活丰富的图形化选项

        可以混合多种风格

        支持白天和夜间模式

        多个数据源

·        

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值