一、简介
1、简述:Docker是开发,运行和部署应用程序的开放管理平台
①开发人员能利用Docker 开发和运行应用程序
②开发人员能利用Docker 开发和运行应用程序
2、VM与Docker的区别
![]()
2、Docker平台
①Docker提供了在一个完全隔离的环境中打包和运行应用程序的能力,这个隔离的环境被称为容器
②由于容器的隔离性和安全性,因此可以在一个宿主机上同时运行多个相互隔离的容器,互不干预
③Docker提供了工具和组件(Docker Client、Docker Daemon等)来管理容器的生命周期
④可以使用容器来开发应用程序及其支持组件
⑤容器可以成为分发和测试应用程序的单元
⑥容器准备好后,将应用程序部署到生产环境中,作为容器或协调服务,无论生产环境是本地数据中心,云提供商还是两者的混合,都是一样的
3、为什么使用Docker
①Docker能够将应用程序与基础架构分开,以便快速交付软件
②借助Docker,可以像管理应用程序一样管理基础架构
③通过利用Docker的方法快速进行运输,测试和部署代码,可以显着缩短编写代码和在生产环境中运行代码之间的延迟
④开发人员在本地编写代码,可以使用Docker与同事进行共享,实现协同工作
⑤使用Docker开发完成程序,可以直接对应用程序执行自动和手动测试
⑥当开发人员发现错误或BUG时,可以直接在开发环境中修复后,并迅速将它们重新部署到测试环境进行测试和验证
⑦利用Docker开发完成后,交付时,直接交付Docker,也就意味着交付完成,后续如果有提供修补程序或更新,需要推送到生成环境运行起来,也是一样的简单
4、Docker主要解决的问题
①保证程序运行环境的一致性
②降低配置开发环境、生产环境的复杂度和成本
③实现程序的快速部署和分发
二、Docker整体结构
1、Docker引擎(Docker Engine):是一个包含若干组件的客户端-服务端(C/S)应用程序
①服务端:一个长时间运行的守护进程(Docker Daemon)
②REST API:一套用于与Docker Daemon通信并指示其执行操作的接口
③客户端:命令行接口CLI( Command Line Interface)
④CLI利用Docker命令通过REST API直接操控Docker Daemon执行操作
⑤Docker Daemon负责创建并管理Docker的对象(镜像、容器、网络、数据卷)
![]()
2、Docker结构概览
①Docker客户端(Docker Client):Docker Client是用户与Docker进行交互的最主要方式,当在终端输入docker命令时,对应的就会在服务端产生对应的作用,并把结果返回给客户端,Docker Client除了连接本地服务端,通过更改或指定DOCKER_HOST可以连接远程服务端
②Docker服务端(Docker Server):Docker Daemon其实就是Docker的服务端,它负责监听Docker API请求(如Docker Client)并管理Docker对象(Docker Objects),如镜像、容器、网络、数据卷等
③Docker Registries:俗称Docker仓库,专门用于存储镜像的云服务环境,Docker Hub就是一个公有的存放镜像的地方,类似Github存储代码文件,同样的也可以类似Github那样搭建私有的仓库
④Docker 对象(Docker Objects):镜像、容器、网络、数据卷等
⑤镜像:一个Docker的可执行文件,其中包括运行应用程序所需的所有代码内容、依赖库、环境变量和配置文件等
⑥容器:镜像被运行起来后的实例
⑦网络:外部或者容器间如何互相访问的网络方式,如host模式、bridge模式
⑧数据卷:容器与宿主机之间、容器与容器之间共享存储方式,类似虚拟机与主机之间的共享文件目录
三、Docker底层技术
1、Docker使用golang实现
2、Docker利用linux内核的几个特性来实现功能,这也就意味着Docker只能在linux上运行,在windows、MacOS上运行Docker,其实本质上是借助了虚拟化技术,然后在linux虚拟机上运行的Docker程序
①利用linux的命名空间(Namespaces)
②利用linux控制组(Control Groups)
③利用linux的联合文件系统(Union File Systems)
①Docker Engine将namespace、cgroups、UnionFS进行组合后的一个package,就是一个容器格式,Docker通过对这个package中的namespace、cgroups、UnionFS进行管理控制实现容器的创建和生命周期管理
②容器格式有多种,其中Docker目前使用的容器格式被称为libcontainer
4、命名空间(Namespaces):为Docker容器提供操作系统层面的隔离
①进程号隔离:每一个容器内运行的第一个进程,进程号总是从1开始起算
②网络隔离:容器的网络与宿主机或其他容器的网络是隔离的、分开的,也就是相当于两个网络
③进程间通信隔离:容器中的进程与宿主机或其他容器中的进程是互相不可见的,通信需要借助网络
④文件系统挂载隔离: 容器拥有自己单独的工作目录
⑤内核以及系统版本号隔离:容器查看内核版本号或者系统版本号时,查看的是容器的,而非宿主机的
5、控制组(Control Groups):为Docker容器提供硬件层面的隔离
①控制组能控制应用程序所使用的硬件资源
②基于该性质,控制组帮助Docker引擎将硬件资源共享给容器使用,并且加以约束和限制,如控制容器所使用的内存大小
6、联合文件系统(Union File Systems):利用分层(layer)思想管理镜像和容器
四、Docker安装
1、Docker-CE和Docker-EE介绍版本介绍
①Docker-CE指Docker社区版,由社区维护和提供技术支持,为免费版本,适合个人开发人员和小团队使用
②Docker-EE指Docker企业版,为收费版本,由售后团队和技术团队提供技术支持,专为企业开发和IT团队而设计
③Docker-EE比Docker-CE,增加一些额外功能,更重要的是提供了更安全的保障
④Docker的发布版本分为Stable(稳定)版和Edge(测试)版,区别在于前者是按季度发布的稳定版(发布慢),后者是按月发布的边缘版(发布快)
⑤通常情况下,Docker-CE足以满足我们的需求
⑥自从区分Docker-CE和Docker-EE之后,Docker最初始的版本是17.03,也就是17年发布的,所以17是老版本和新版本的分水岭
![]()
⑦系统支持情况
![]()
2、Centos上安装Docker-CE
②系统要求:CentOS7.0+
③卸载老版本(新机器不用操作):sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
④查看Docker的yum包:yum list installed | grep docker
⑤删除Docker的yum包:yum remove docker-ce.x86_64 docker-ce-cli.x86_64
⑥删除Docker目录:rm -rf /var/lib/docker
⑦更新yum:sudo yum update
⑧安装必要的系统工具:sudo yum install -y yum-utils device-mapper-persistent-data lvm2
⑪检查docker-ce.repo中的url地址是不是都是阿里云:cat /etc/yum.repos.d/docker-ce.repo
⑫安装:sudo yum -y install docker-ce
⑬开启docker服务:systemctl start docker
⑭查看docker信息:docker info
⑤查看docker版本:docker version
3、Ubuntu上安装Docker-CE
②系统要求:Ubuntu14.04+
③卸载老版本(新机器不用操作):sudo apt-get remove docker docker-engine docker.io containerd runc
④更新apt-get:sudo apt-get update
⑤安装必要工具:sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
⑧添加官方源(外域地址,比较慢):sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
⑩更新并安装docker-ce:sudo apt-get -y install docker-ce
⑪开启docker服务:systemctl status docker
⑫查看docker版本:docker version
⑬如果出现权限禁止,需要切换到root用户执行:su => 输入密码 => docker version
4、Windows/MacOS上安装Docker-CE
①系统要求
![]()
五、加速配置
1、Docker加速器的优势:配置Docker加速器,将会提升在国内获取Docker官方镜像的速度,否则后面下载镜像(docker pull)的过程会很慢,甚至有可能无法下载镜像
2、配置阿里源/清华源等加速器(docker 17以上版本)
3、几个速度比较快的镜像地址
4、方式一(仅对当次有效)
①单次指令有效:docker run centos:7 --registry-mirror=https://docker.mirrors.ustc.edu.cn
②单次会话有效,修改 /etc/default/docker,加入 DOCKER_OPTS=”镜像地址”,可以有多个:DOCKER_OPTS="--registry-mirror=https://docker.mirrors.ustc.edu.cn"
5、方式二(json配置文件的方式,严格的json格式,不符合格式会报错)
①打开配置文件:vi /etc/docker/daemon.json
6、方式三(阿里云方式,同方式二,只是阿里云分配的私有地址,自己用自己的)
②打开配置文件:vi /etc/docker/daemon.json
posted @
2020-09-12 16:59
专业搬砖人士
阅读(
111)
评论()
收藏
举报