Docker 01 introduction

Docker 的弱点:

与虚拟机相比, 隔离性弱. Docker是进程之间隔离, 而虚拟机可实现系统级别隔离.

与虚拟机相比, 安全性弱. Docker 的租户 Root 和 宿主机的 Root 等同, 一旦容器内的用户从普通权限提升为 Root 权限,它直接具备了宿主机的 Root 权限.

  而虚拟机的Root 权限, 只是针对于它所在虚拟操作系统的 Root 权限, 无法触碰到其他 App 的 Root 权限.

与虚拟机相比, 管理性弱. Docker 管理工具还不算成熟, K8S 应该属于这个范畴.

与虚拟机相比, 高可用和可恢复 弱. 虚拟化具备负载均衡, 高可用, 容错, 迁移和数据保护等通过生产经验的成熟保护机制, VM 可承诺 99.999%高可用.

Docker 中的3个概念 

Image(镜像) : Docker 运行容器的前提

Container(容器)

Repository(仓库): 存放镜像的地方

镜像

Docker 镜像可以看做是特殊的文件系统, 除了提供容器运行时所需的程序, 库, 资源, 配置等文件外, 还包含一些运行时准备的一些配置参数(匿名卷, 环境变量, 用户 等). 镜像不包含任何动态数据, 其内容在构建之后也不会被改变. 镜像是一堆只读层(read-only layer)的统一视角.

 

 

从左边我们看到了多个只读层, 它们重叠在一起, 除了最下面一层, 其他层都会有一个指针指向下一层. 这些层是 Docker 内部实现细节, 并且能够在主机的文件系统上访问到.

统一文件系统(Union File System) 技术能够将不同的层整合成一个文件系统, 为这些层提供了一个统一视角. 这样就隐藏了多层的存在, 在用户的视角看来, 只存在一个文件系统, 图的右边看到的视角.

Container 容器

容器的定义和镜像几乎一样,也是一堆层的统一视角, 唯一的区别是容器的最上面那一层是可读写的.

容器 = 镜像 + 读写层.

Repository 仓库

Docker 仓库是几种存放镜像文件的场所.

Docker 架构

Docker 使用 C/S 结构, Docker 客户端与 Docker 服务器进行交互, Docker 服务端负责构建, 运行 和 分发 Docker 镜像.

Docker 客户端 和 服务端可以运行在一台机器上,也可以通过 Restful, socket 或 网络接口与远程 Docker 服务端进行通信.

Docker 常用命令

Docker file

Docker file 是自动构建镜像的配置文件,用户可以使用 Dockerfile 快速创建自定义的镜像. Dockerfile 命令非常类似shellscript.

 

也就是说, 可以利用 Docker file 来自定义镜像.

一般来说, Docker file 可以分为4部分:

1. 基础镜像(父镜像)信息指令 FROM.

2. 维护者信息指令 MAINTAINER

3. 镜像操作指令 RUN, EVN, ADD 和 WORKID 等

4. 容器启动指令 CMD, ENTRYPOINT 和 USER 等.

  

posted @ 2020-05-05 12:20  神之一招  阅读(218)  评论(0编辑  收藏  举报