【notes】docker学习笔记1-docker基本组成

Docker的基本组成

  • Docker Client 客户端
  • Docker Daemon 守护进程
  • Docker Image 镜像
  • Docker Container 容器
  • Docker Registry 仓库

Docker客户端/守护进程

  • C/S架构
  • docker客户端对服务器的访问: 本地/远程
  • docker客户端向发送给守护进程请求,守护进程的执行结果还会传回给客户端。

Docker Image镜像

  • 构建和打包阶段。
  • 容器的基石,相当于保存了容器运行需要的源代码。
  • 层叠的层叠文件系统。 bootfs(引导文件系统)-> rootfs(Ubuntu) -> add emacs -> add Apache
  • 联合加载(union mount):一次加载多个文件系统(add Apache,add emacs),将所有文件系统叠加在一切。镜像可以叠加在一起,位于底部的成为基础镜像(rootfs),add emacs(副镜像)。

Docker Container容器

  • 通过镜像启动。
  • 启动执行阶段。
  • 配置数据和镜像层(bootfs -> ······ -> add emacs) -> 可写层。
  • 写时复制:docker出现变化时都会应用到可写层,先从只读镜像层复制到可写层然后只读层的文件被隐藏。

Docker Registry仓库

  • 保存docker镜像。
  • 分为公有和私有。公有:Docker Hub

图示结构

Docker:

Docker Image:

Docker Container:

docker基本指令

  • 查找镜像

    1
    docker search tutorial
  • 下载镜像

    1
    docker pull learn/tutorial
  • 启动一个容器,使用echo命令输出hello world

    1
    docker run learn/tutorial echo 'hello world'
  • 启动一个容器下载ping

    1
    docker run learn/tutorial apt-get install -y ping
  • 查看有哪些容器

    1
    docker ps -l
  • 提交容器,即创建一个新的镜像

    1
    docker commit [docker ID] learn/ping
  • 用新镜像建立一个容器

    1
    docker run learn/ping ping www.baidu.com
  • 查看容器信息

    1
    docker inspect [docker ID]
  • 查看有哪些镜像

    1
    docker image
  • 将镜像保存到docker hub上

    1
    docker push /learn/ping

Docker容器相关技术简介

Docker依赖的Linux内核特性

  • Namespaces 命名空间
    提供了系统资源的隔离,for轻量级虚拟化服务
    五种命名空间:

    • PID 进程隔离
    • NET 管理网络接口
    • IPC 管理跨进程通信的访问
    • MNT 管理挂载点
    • UTS 隔离内核和版本标识
  • Control groups 控制组

    • 资源限制(内存上限等)
    • 优先级设定(设定哪些进程组使用哪些资源)
    • 资源计量
    • 资源控制(挂起恢复)

Docker容器的能力

  • 文件系统隔离:每个容器都有自己的root文件系统
  • 进程隔离: 每个容器都运行在自己的进程环境中
  • 网络隔离: 容器间的虚拟网络接口和IP地址都是分开的
  • 资源隔离和分组:使用cgroups将CPU和内存之类的资源独立分配给每个Docker容器

———————————————感谢阅读———————————————

欢迎收藏访问我的博客 知乎 掘金 简书 知乎

贰三 wechat
欢迎扫描二维码订阅我的公众号!