docker快速入门

docker入门概览

标签 : docker


[TOC]


本文对docker进行大致介绍,包括概述,安装,简单使用,架构,基本原理等方面

写在前面

  • 本文是自己学习docker的一个记录和整理,啃英文文档挺吃力的,懒得翻译,所以写这篇类似“索引”的文章,希望能帮助和我一样的新手快速入门
  • 本文主要参考官方文档(Docker Document)和相关技术博客
  • 如果有理解有误的地方还望不吝指正

概述

什么是Docker?

可以参考下面三篇文章。从我使用的感受来看,我觉得Docker就是一个应用打包工具,把写好的应用用docker打包发布,然后别人就可以直接部署使用了,特别方便。

  • Docker是什么
  • 理解Docker
  • What is Docker?(译文)

什么是Docker Engine?

Docker Engine is a client-server application with these major components:

  • server which is a type of long-running program called a daemon process.
  • REST API which specifies interfaces that programs can use to talk to the daemon and instruct it what to do.
  • A command line interface (CLI) client.

我觉得官网的解释很言简意赅,附上图(摘自官网)

Docker的用处

  • Faster delivery of your applications
  • Deploying and scaling more easily
  • Achieving higher density and running more workloads

安装

安装参考Install Docker Engine

Ubuntu

以ubuntu 14.04 为例,参考Installation on Ubuntu安装Docker engine

这里列出重要的步骤:

  1. 更新apt源,包括添加证书,密钥等
  2. 用sudo apt-get安装
  3. 进一步配置,主要是创建docker用户组

注 :如果输入docker info出问题,多半是权限问题,以sudo运行试试

Mac OS X

Mac下安装参考Installation on Mac OS X

Mac下有两种安装方式供选

  • Docker for Mac : Mac的原生应用,没有使用虚拟机(VirtualBox),而是使用的HyperKit
  • Docker Toolbox : 会安装虚拟机,使用docker-machine来运行boot2docker 和Docker Engine

两者的区别请参考 Docker for Mac vs. Docker Toolbox

演示

先不多说,跑起来体验下。具体的步骤和指令在Docker简明教程这篇文章已经写得很清楚了,在此不再赘述

架构和原理

由上图可知,docker是一个client-server架构

  • The Docker daemon : 运行在主机上
  • The Docker client : 用户和dokcer daemon交互的接口

docker的内部主要有三种资源/组件

  • docker images : build component,只可读
  • docker registries : distribution component,images共享库
  • docker containers : run component

这里重点说说images and containers

Docker使用union file systems 把不同的层(layer)做整合成单一的image. Union File System的中一种是AUFS,可以参考这篇博文

官网文档对image的layers是这么描述的

Each Docker image references a list of read-only layers that represent filesystem differences. Layers are stacked on top of each other to form a base for a container’s root filesystem

新版docker(version>=1.10)的存储模型有变化

Previously, image and layer data was referenced and stored using a randomly generated UUID. In the new model this is replaced by a secure content hash.

而container和image的主要区别就在于top writable layer,所有对image的更改都保存在这一层。换句话说,多个container可以共享同一个image,这就大大节省了空间。实现image和container的管理有两个关键的技术:stackable image layers 和 copy-on-write (CoW).

从图中可以看出,copy-on-write (CoW)是一个很好的策略,既节省了空间,又避免了因数据共享带来的写冲突问题,从而提高效率。

结语

本文主要对docker做简单介绍,对于一些更详细的知识,如docker file,volume,network,docker compose等等,会另写文章进行介绍。至于很具体的操作指令,比如怎么安装,怎么build image和run container来跑一个简单的docker hello world,请参考官方文档Docker Engine部分的“get started with docker”或者"learn by example",也可参考文末的一些参考资料

参考资料

  • Docker Documentation(官方文档)
  • Docker入门教程(系列)
  • Docker简明教程(使用演示)
  • docker中文(系列)
  • docker资源
  • docker-从入门到实践(gitbook)

附Java/C/C++/机器学习/算法与数据结构/前端/安卓/Python/程序员必读书籍书单大全:

书单导航页(点击右侧 极客侠栈 即可打开个人博客):极客侠栈
①【Java】学习之路吐血整理技术书从入门到进阶最全50+本(珍藏版)
②【算法数据结构+acm】从入门到进阶吐血整理书单50+本(珍藏版)
③【数据库】从入门到进阶必读18本技术书籍网盘吐血整理网盘(珍藏版)
④【Web前端】从HTML到JS到AJAX到HTTP从框架到全栈帮你走更少弯路(珍藏版)   
⑤【python】书最全已整理好(从入门到进阶)(珍藏版)

⑥【机器学习】+python整理技术书(从入门到进阶已经整理好)(珍藏版)
⑦【C语言】推荐书籍从入门到进阶带你走上大牛之路(珍藏版)
⑧【安卓】入门到进阶推荐书籍整理pdf书单整理(珍藏版)

⑨【架构师】之路史诗级必读书单吐血整理四个维度系列80+本书(珍藏版)

⑩【C++】吐血整理推荐书单从入门到进阶成神之路100+本(珍藏)

【ios】IOS书单从入门到进阶吐血整理(珍藏版)

--------------------------------------------------------------------------------------------------------------------

你可能感兴趣的:(docker快速入门)