zoukankan      html  css  js  c++  java
  • docker 摘要(入门版)

    Docker

    安装

    macOS或者windows

    • 下载boot2docker工具

    CentOS

    • yum install docker-io -y
    • systemctl start docker

    docker摘要

    docker虚拟化

    • 只虚拟User space
    • 一台机器可以运行20-50个container
    • 启动速度快
    • 对内核有要求(不能像VMware一样可以安装mac,windows和linux)
    • 用于大数据,分布式和集群

    container实现

    • cgroup(内核中对资源的限制机制,通过控制进程(一个container实例)来限制)

    • namespace(每一个容器都是有一个自己网络进程的独立的虚拟环境,实现容器间的隔离

    • chroot(文件系统的隔离,有一个真实的物理文件系统(物理机上),其他的都是虚拟的文件系统(虚拟的文件系统在内存中))

    • 以上,cgroup,namespace,chroot都是在linux中,也就是直接调用linux,后来为了跨平台,将上面的封装成了libcontainer库,让docer依赖于它

    • pid,容器有自己独立的进程表和1号进程

    • net,容器有自己的network info

    • ipc,container之间的通信

    • mnt,每个容器都有自己唯一的目录挂载,是真实的挂载目录的子目录

    • utc,有独立的hostname和domain

    层次

    • server -> hostOS -> docker engine -> app1

    使用aufs实现分层的文件系统管理

    • Image是一种文件系统,里面必须有操作系统或者软件,docker中的系统Image很小,因为只包含很好的最核心的部分,每一个那么多的外围
    • 只读为Image,可写为container,image是java中的class,container是对象
    • Image类似一个单链表系统,每一个image包含一个指向parent image的指针
    • 每一个parent image的image是base image
      • 层次: debain image(base image) -> apache image -> container
      • 一般base image是操作系统镜像
      • 建议:一个container干一件事情

    dockerfile(类似于makefile,是命令的集合)

    • 描述一个Image的层次,就提描述了一个依赖次序,centos -> apache -> container
    • 有了它可以完美的重现出开发环境,方便了测试人员

    docker hub(镜像仓库,类似于github)

    C/S运行

    • client request -> server -> http server -> router -> job -> driver

    使用

    • docker pull {image name}

    • docker images --no-trunc

    • docker run [OPTIONS] IMAGE[:TAG] [CMD][ARG...]

      • -name
      • -i: iteract
      • -t: tag
      • -d: detach
    • docker ps

      • 不加上-a选项显示的正在运行的容器
      • 加上-a显示所有的容器,包括停止的
    • docker inspect [ID]

    • docker logs

    • docker build

    • docker rm/kill/stop id, 关闭容器

      • 批量操作: docker rm/kill/stop $(docker ps -a -q)
    • docker run -t -i centos /bin/bash, -t表示是伪tty(就是给一个终端,如果每一个则容器一start就stop了),-i表示iteract(在有了终端这个前提之下,如果attach到容器中,可以执行交互式的命令,如果没有则什么都干不了),-d就是在后台运行,不会在执行了上面这个命令之后直接进入到容器中

      • 进入到了交互之界面,使用exit退出,但是也会stop容器,如果要在一次进入到该容器,需要先start容器,则attach容器,因为-i会前台运行,使用-d则是相反的
    • docker cp id:path hostpath

    自己的摘要

    • docker在某些方面和git是一样的,不如说对于image镜像都是通过版本控制的,我们从dockeruhb中pull下来镜像文件,如果我们将其启动为一个容器,如果我们在这个容器中进行了修改,docker会通过文件将其修改记录下来,我们可将当当前的容器commit成一个新的image,这就类似于git中的一个commit点
    • 在确定一个容器的时候是使用container id
    • 在确定一个image的时候,是通过name:tag,如果只有name则会选中所有的tag,tag表示一个版本
    • 生成一个image(提交点)的方法有两种,docker commit 和 docker build,在docker build中就是在一个image中执行一个命令的集合在提交成一个新的image
  • 相关阅读:
    《第一行代码》阅读笔记(十四)——ViewPager
    《第一行代码》阅读笔记(十三)——碎片的最佳案例
    《第一行代码》阅读笔记(十二)——探究碎片
    《第一行代码》阅读笔记(十一)——编写界面的最佳案例
    《第一行代码》阅读笔记(十)——RecyclerView
    《第一行代码》阅读笔记(九)——ListView
    《第一行代码》阅读笔记(八)——自定义控件
    《第一行代码》阅读笔记(七)——Android经典四种布局
    《第一行代码》阅读笔记(六)——AndroidUI控件(初级)
    后台管理系统左侧菜单栏显示隐藏
  • 原文地址:https://www.cnblogs.com/megachen/p/9944620.html
Copyright © 2011-2022 走看看