sdfsdnfslk 发表于 2019-2-21 09:14:23

Docker基础入门实战(一)

Docker基础入门实战
第1章          docker简介
1.1what is Docker
Docker是一个开源的应用容器引擎,基于Go语言并遵从Apache2.0协议开源,源代码部署在GitHub上。
Docker是通过内核虚拟技术来提供容器的资源隔离与安全保障,由于Docker通过操作系统层的虚拟化实现隔离,所以Docker容器在运行时,不需要类似虚拟机(VM)额外的操作系统开销,从而提高资源的利用率。
Docker的目标是实现轻量级的操作系统虚拟化解决方案。
1.2Docker的工作模式
Docker对于操作者来说是C/S架构,但是Docker后端是一个非常耦合的架构,模块各司其职,并有机组合,支撑Docker的运行。
用户通过使用Docker Client与Docker Daemon建立通信,并发送请求给后者。
CLI(命令行)交互模型
http://s1.运维网.com/images/20180801/1533110407513291.png
RemoteAPI交互模式
http://s1.运维网.com/images/20180801/1533110426916195.png
1.3Docker可以干些什么

q8种应用场景
http://s1.运维网.com/images/20180801/1533110509265654.png
q【Simplifying Configuration】
  简化配置:统一配置、通过镜像快速启动
q【Code Pipeline Management】
  代码流水线管理:
  开发环境->测试环境->预生产环境->灰度发布->正式发布,docker在这里可以快速实现迁移
q【Developer Productivity】
  提高开发效率:对开发人员来说,有了镜像,直接启动容器即可
q【App Isolation】
  隔离应用:相对于虚拟机的完全隔离会占用资源,docker会比较节约资源
q【Server Consolidation】
  服务器整合:同一台服务器可以跑多个docker容器,提高服务器的利用率
q【Debugging Capablities】
  调试能力:Docker提供了很多的工具,提供了很多的功能,这些可以帮助调试bug
q【Multi-tenancy】
  多租户:一个租户多个用户,类似于阿里云的一个projiect下多个用户
q【Rapid Deplovment】
  快速部署:不需要启动操作系统,实现秒级部署
1.4 Docker的8大开发模式
qThe Shared Base Container(s):共享基础容器
qThe Shared Volume Dev Container:共享卷开发容器
qThe Dev Tools Container:开发工具容器
qThe Test In A Different Environment containers:不同环境下测试容器
qThe Build Container:构建容器
qThe Installation Container:安装容器
qThe Default-Service-In-A-Box Containes:盒子中默认服务器容器
qThe Infrastructure/Glue Containers:基础设施/粘合剂容器
1.1Docker的9个基本事实
q容器不同于虚拟机
q容器不如虚拟机来的成熟
q容器可以在几分之一秒内启动
q容器已在大规模环境证明了自身的价值(比如在谷歌搜索中)
qIT人员称容器为轻量级
q容器引发安全方面的问题
qDocker已成为容器的代名词,但他不是唯一的提供者
q容器可以节省IT人力,加快更新
q容器仍面临一些没有解决的问题
1.2Why use Docker
q更快速的交付和部署
q更高效的虚拟化
q更轻松的迁移和扩展
q更简单的管理
1.1Docker与OpenStack的对比
类别
Docker
OpenStack
部署难度
极其简单
组件多,部署复杂
启动速度
秒级
分钟级
执行性能
和物理系统几乎一致
Vm会占用一些资源
镜像体积
镜像是MB级别
虚拟机镜像是GB级别
管理效率
管理简单
组件相互依赖,管理复杂
隔离性
隔离性高
彻底隔离
可管理性能
单进程、不建议启动ssh
完整的系统隔离
网络连接
比较弱
借助Neutron可以灵活组件各种网络结构
  特别提示:有些场景是不适合用docker的,像前段的web服务,若使用docker则当docker挂掉时,里面不会像数据库那样有数据写入,这时就需要在重新启动启动一个docker
1.1Docker的3大核心概念
1.1.1      镜像(image)
  Docker镜像就是一个只读的模板,例如一个镜像可以包含一个完整的操作系统环境,里面仅安装了Apache或用户需要的其他应用程序
  镜像可以用来创建容器,Docker提供了一个很简单的机制来创建镜像或者更新现有的镜像,并且用户甚至可以直接从其他人哪里下载一个已经做好的镜像来直接使用
1.1.2      容器(container)
  Docker利用容器来运行应用,容器是从镜像创建的运行实例,他可以启动、停止、开始、删除,每个容器都是相互隔离的,保证平台的安全
  可以把容器看成一个简易版的linux系统和运行在其中的应用程序
  镜像是只读的,容器在启动的时候会创建一层可写层作为最上层
1.1.3      仓库(repository)
  仓库就是集中存放镜像的地方,有时候会把仓库和仓库注册器混成一块,并不严格区分,仓库注册器上往往存放着多个仓库,每个仓库又包含了多个镜像,每个镜像又有不同的tag
  仓库分为公开仓库和私有仓库两种,最大的公开仓库是Docker Hub,提供了数量庞大的镜像供用户下载,国内的公开仓库包括Docker Pool等,可以提供大陆用户更稳定、更快的访问
第2章          Docker入门实战
2.1 系统环境
# cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)
# uname -r
3.10.0-693.11.6.el7.x86_642.2 安装及启动
# yum install -y docker   ==》安装
# systemctlstart docker   ==》启动
# systemctlstatus docket==》查看状态信息
# systemctl enable docker==》加入开机自启动
# docker --version==》简略版本信息
Docker version 1.13.1, build dded712/1.13.1
# docker version    ==》详细版本信息
Client:   ==》客户端信息
Version:         1.13.1
API version:   1.26
Package version: docker-1.13.1-68.gitdded712.el7.centos.x86_64
Go version:      go1.9.4
Git commit:      dded712/1.13.1
Built:         Tue Jul 17 18:34:48 2018
OS/Arch:         linux/amd64
Server:==》服务端信息
Version:         1.13.1
API version:   1.26 (minimum version 1.12)
Package version: docker-1.13.1-68.gitdded712.el7.centos.x86_64
Go version:      go1.9.4
Git commit:      dded712/1.13.1
Built:         Tue Jul 17 18:34:48 2018
OS/Arch:         linux/amd64
Experimental:    false2.3 docker镜像管理
2.3.1 search镜像
# docker search centos:62.3.2 push镜像
# docker pull centos:62.3.3 查看镜像
# docker images2.3.4 导入/导出镜像
# docker save centos:6 >/opt/centos.tar.gz==》导出镜像
# docker load
页: [1]
查看完整版本: Docker基础入门实战(一)