1.初识docker

一.Docker简介
1.什么是容器?

容器有效地将由单个操作系统管理的资源划分到孤立的组中,以更好地在孤立的组之间平衡有冲突的资源使用需求。

与虚拟化相比,这样既不需要指令级模拟,也不需要即时编译。容器可以在核心CPU本地运行指令,而不需要任何的专门

的解释系统

2.什么是docker?
  (1)docker是能够把应用自动部署到容器的开源引擎,是一种操作系统级别的虚拟化方案
  (2)只能运行相同或相似内核的操作系统
  (3)依赖Linux内核特性:Namespace和Cgroups(Control Group)

3.Docker的目标
  提供简单轻量的建模方式
  职责的逻辑分离
  快速高效的开发生命周期
  鼓励使用面向服务的架构(docker鼓励单个容器只运行一个服务)
  符合高内聚,低耦合,单一任务的目标

4.Docker 的使用场景
  1.使用Docker容器开发,测试,部署服务
  2.创建隔离的运行环境
  3.搭建测试环境
  4.构建多用户的平台即服务(PaaS)基础设施
  5.提供软件即服务(SaaS)应用程序
  6.高性能,超大规模的宿主机部署

二 Dockers的基本组成

1.Docker客户端 和Docker daemon
  C/S架构
2.Docker Image 镜像
Docker Image 是采用了分层联合系统(aufs, Advanced union File System),
 

关于 AUFS 的几个特点:

  • AUFS 是一种联合文件系统,它把若干目录按照顺序和权限 mount 为一个目录并呈现出来
  • 默认情况下,只有第一层(第一个目录)是可写的,其余层是只读的。
  • 增加文件:默认情况下,新增的文件都会被放在最上面的可写层中。
  • 删除文件:因为底下各层都是只读的,当需要删除这些层中的文件时,AUFS 使用 whiteout 机制,它的实现是通过在上层的可写的目录下建立对应的whiteout隐藏文件来实现的。
  • 修改文件:AUFS 利用其 CoW (copy-on-write)特性来修改只读层中的文件。AUFS 工作在文件层面,因此,只要有对只读层中的文件做修改,不管修改数据的量的多少,在第一次修改时,文件都会被拷贝到可写层然后再被修改。
  • 节省空间:AUFS 的 CoW 特性能够允许在多个容器之间共享分层,从而减少物理空间占用。
  • 查找文件:AUFS 的查找性能在层数非常多时会出现下降,层数越多,查找性能越低,因此,在制作 Docker 镜像时要注意层数不要太多。
  • 性能:AUFS 的 CoW 特性在写入大型文件时第一次会出现延迟。


   ....
 add Apache
 add emacs
 rootfs(ubuntu)
 bootfs

扫描二维码关注公众号,回复: 1775260 查看本文章

3.Docker Container 容器
  通过镜像启动
  启动和执行阶段
  写时复制(copy on write)

4.Docker Registry 仓库
  公有
  私有
  Docker Hub

三 Docker容器相关技术简介
 依赖linux内核的Namespace特性
  Namespace 命令空间
  编程语言
   封装 -->代码隔离
  操作系统
    进程,网络,文件系统等系统资源的隔离

Docker的五种命令空间
  PID(Process ID)    实现进程隔离
  NET(Network)       实现网络隔离
  IPC(Interprocess Communication)  实现跨进程通信的访问
  MNT(Mount)         挂载点,实现文件系统的隔离
  UTS(Unix Timesharing System) 实现隔离内核和版本标识

Contorl Group
  资源限制
  优先级设定
  资源计量
  资源控制

四 Docker的安装

检查ubuntu版本
uname -a 14.04以上均支持docker
ll /sys/class/misc/device-mapper 检查存储驱动

安装ubuntu维护的版本
sudo apt-get install docker.io
source /etc/bash_completion.d/docker.io

使用非root运行docker
sudo groupadd docker
sudo gpasswd -a ${USER} docker
sudo service docker restart

五 容器的基本操作
启动容器
docker run IMAGE [COMMAND] [ARG...]

查看容器
docker ps -a -l
docker inspect name/id

自定义容器名
docker run --name=自定义名 -i -t IMAGE /bin/bash

重启启动已停止的容器
docker start [-i] 容器名
docker stop 容器名

删除已经停止的容器
docker rm 容器名/ID

猜你喜欢

转载自www.cnblogs.com/soulmates/p/9237350.html