Docker笔记

翻译 2016年08月28日 23:33:38

Docker简介

Docker提供了一种在container(容器)中运行程序的方式,来实现程序的隔离和安全。在一台机器上可以同时运行多个container。跟VM(虚拟机)相比,container之间相互独立,但是共享OS、以及必要的bins/librarys,部署速度更快,资源开支更少,也更容易迁移。

Docker engine

Docker engine是一个client-server应用程序,包括如下几个部分:

  • server是一个daemon(守护进程),负责创建和管理docker对象
  • REST API 提供了与daemon交互的接口
  • CLI是 command line interface client,利用REST API通过脚本或者是命令来跟daemon交互。用户与daemon的交互都需要通过client来进行。

daemon管理的docker对象,包括images、containers、networks、data volumes等。

Docker架构

Docker的主要组件

  • Docker images:只读的模板,用于创建docker container。Docker image是构建组件。
  • Docker registries:image仓库或者分发中心,如Docker Hub,提供public和private权限的存储,可上传和下载images。Docker registery是分发组件。
  • Docker container:类似一个directory,包含一个应用程序运行所需的所有内容。container之间都是隔离的、安全的。container是运行组件。

Docker image

Docker image包含多个层(其实就对应了挂载的目录),通过union file systems 将这些层合并到一个image中。多层的好处是,当一个image做了修改,只需要更新相应的层,不需要替换掉整个image,分发和部署更快更简单。

每个image都是起源于一个基础image。在一个叫Dockerfile的文件中储存了build一个image的指令,如:

  • 运行一条命令
  • 添加一个文件或者目录
  • 创建一个环境变量
  • 从该image启动一个container时运行的程序

Docker container

当Docker从image启动一个container,会在只读的image之上增加一个读写层(所做的修改都会写到这一层中,不影响image本身)。

通过docker程序或者API,Docker client会通知Docker daemon启动一个container:

$ docker run -i -t ubuntu /bin/bash

运行一个container至少需要指定如下部分:

  • container从哪个image来构建,如ubuntu
  • 当container启动时,需要运行哪个程序,如/bin/bash

当执行以上指令后,Docker engine会做顺序完成如下工作:

  • 检测ubuntu镜像,如果不存在,就从Docker Hub来pull
  • 使用image来创建一个新的container
  • 分配一个文件系统并挂载一个读写层
  • 分配网络接口,用于container同宿主机通信
  • 设置一个IP地址
  • 执行指定的程序
  • 终端打印程序输出

Docker技术基础

Docker使用Go语言开发,利用了若干内核特性:

  • Namespaces:通过namespaces技术来提供工作空间的隔离。
  • Control groups(cgroups):隔离container使用的资源,如内存、cpu等。
  • Union file systems(UnionFS):通过创建层来运行的文件系统。把不同物理位置的目录合并挂载到同一个目录中,按照挂载目录的顺序形成层。可以指定每层的读写权限,一般默认是最上层可读写,下面各层都是只读。
  • Container format:Docker组件的封装称为container format。默认container format是libcontainer。

相关文章推荐

Docker 学习笔记

  • 2016年10月25日 16:03
  • 263KB
  • 下载

非常详细的-Docker-学习笔记

  • 2017年11月08日 15:21
  • 238KB
  • 下载

Docker入门教程 Part 1 基础概念 - 镜像、容器、仓库

第一篇笔记,先总体介绍Docker,及它与虚拟机技术的区别,最后再介绍Docker的最基础的三大组件概念。...
  • iotisan
  • iotisan
  • 2017年10月19日 16:18
  • 108

非常详细的 Docker 学习笔记

  • 2017年03月10日 23:56
  • 252KB
  • 下载

《Docker技术入门与实战》学习笔记-1

第一章 初识Docker 1.1 什么是Docker 1.2 为什么使用Docker

caffe学习笔记1:ubuntu15.04下3分钟完成caffe环境配置(基于docker)

没有GPU没关系,没有nvidia显卡也没关系,基于docker可以3分钟配好caffe! Docker简单来说就是一种轻量虚拟机,可以快速部署和执行程序。 之前看过许多配置caffe的资料,主要是...

我的Docker学习笔记

Docker学习资料: 官方:http://docs.docker.com/userguide/ 中文:http://yeasy.gitbooks.io/docker_...
  • zollty
  • zollty
  • 2015年09月13日 21:05
  • 528

Docker学习笔记 — Compose简介、安装与简单使用

Docker Compose简介、安装与使用

docker初学笔记(容器配置tomcat)

用Docker容器配置jdk以及tomcat 刚开始研究Docker,配置过程都是从晚上搜来的,然后自己整理了一下,也有很多不是特别理解的地方,可能也有不准确的地方,希望读者能指教。 准备: ...

DOCKER笔记(1)

Docker: 先说缺点: Docker是基于Linux 64bit的,没有window的。 网络管理方面比较简单。 云端的容器安全性有待考证。 容器随着用户进程的停止而销毁,容器中的log...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Docker笔记
举报原因:
原因补充:

(最多只允许输入30个字)