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 学习笔记

链接地址:http://www.open-open.com/lib/view/open1423703640748.html
  • gaisylly
  • gaisylly
  • 2016年01月05日 22:45
  • 915

Docker学习教程笔记整合(完整)

Docker学习教程笔记整合(完整)本文主要是整理了DockerOne组织翻译的Flux7的Docker入门教程,通过markdown记录,方便离线学习。原文地址,http://dockone.io/...
  • qq_32971807
  • qq_32971807
  • 2016年12月08日 15:39
  • 3487

docker学习笔记一安装

启动nginx容器: docker run -d -p 80:80 –name webserver nginxdocker ps查看当前运行的容器docker ps -a列出所有容器访问:http...
  • wuhenyan
  • wuhenyan
  • 2017年12月20日 11:32
  • 69

Docker 入门笔记 1 - 安装docker

Docker 入门笔记
  • misterchi
  • misterchi
  • 2017年12月22日 19:06
  • 69

Docker入门与实战详细笔记

一、 镜像1.1、 获取镜像命令: docker pull NAME[:TAG] 例: docker pull centos 相当于 docker pull centos:latest 相当于 d...
  • A_zhenzhen
  • A_zhenzhen
  • 2017年09月06日 15:57
  • 1763

【容器技术】非常详细的 Docker 学习笔记

一、Docker 简介 Docker 两个主要部件: Docker: 开源的容器虚拟化平台Docker Hub: 用于分享、管理 Docker 容器的 Docker SaaS 平台 -- ...
  • English0523
  • English0523
  • 2016年06月22日 17:33
  • 9716

开启Docker daemon服务远程访问

设置远程访问 docker daemon 服务
  • yangmengling
  • yangmengling
  • 2016年11月18日 17:10
  • 2047

有了Docker,一分钟就可以在你的笔记本上快速部署Spark集群

原文: https://amplab.cs.berkeley.edu/2013/10/23/got-a-minute-spin-up-a-spark-cluster-on-your-laptop-wi...
  • jicahoo
  • jicahoo
  • 2014年07月15日 23:15
  • 5063

docker笔记(初识docker)

认识docker关键词:开源,GO语言实现,虚拟容器技术。 docker项目的目标是实现轻量级的操作系统虚拟化解决方案。 docker的基础是linux容器(LXC)等技术。 docker与传统...
  • rain082900
  • rain082900
  • 2016年01月17日 13:51
  • 596

docker笔记

简介 Docker 是 dotCloud 最近几个月刚宣布的开源引擎,旨在提供一种应用程序的自动化部署解决方案,简单的说就是,在 Linux 系统上迅速创建一个容器(类似虚拟机)并在容器上部署和运行...
  • feiskyer
  • feiskyer
  • 2014年11月12日 22:42
  • 766
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Docker笔记
举报原因:
原因补充:

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