docker是什么
Docker官网: https://www.docker.com/
-
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。
-
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
-
容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
-
Docker 从 17.03 版本之后分为 CE(Community Edition: 社区版) 和 EE(Enterprise Edition: 企业版),我们用社区版就可以了。
docker架构原理
Docker三要素,镜像,容器,仓库
1.镜像
Docker 镜像(Image)就是一个只读的模板,它可以是一个可运行软件(tomcat,mysql),也可以是一个系统(centos)。镜像可以用来创建 Docker 容器,一个镜像可以创建很多容器。
2.容器
Docker 利用容器(Container)独立运行的一个或一组应用。容器是用镜像创建的运行实例。它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。可以把容器看做是一个简易版的 Linux 环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。容器的定义和镜像几乎一模一样,也是一堆层的统一视角,唯一区别在于容器的最上面那一层是可读可写的。
3.仓库
仓库(Repository)是集中存放镜像文件的场所,类似GitHub存放项目代码一样,只不过Docker Hub是由来存镜像(image)的。仓库(Repository)和仓库注册服务器(Registry)是有区别的。仓库注册服务器上往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签(tag,类似版本号)。
仓库分为公开仓库(Public)和私有仓库(Private)两种形式。
最大的公开仓库是 Docker Hub(https://hub.docker.com/),存放了数量庞大的镜像供用户下载。国内的公开仓库包括阿里云 、网易云 等。
容器与镜像的关系类似于面向对象编程中的对象与类。
Docker | 面向对象 |
---|---|
容器 | 对象 |
镜像 | 类 |
docker有什么用
-
简化环境搭建,提高开发生命周期效率
-
大大简化运维工作量
-
微服务利器
docker容器与虚拟机的区别
Docker是一种轻量级的虚拟化技术,比传统的虚拟机性能更好。
下图是虚拟机的体系结构:
- server - 表示真实电脑。
- Host OS - 真实电脑的操作系统,例如:Windows,Linux
- Hypervisor - 虚拟机平台,模拟硬件,如VMWare,VirtualBox
- Guest OS - 虚拟机平台上安装的操作系统,例如CentOS Linux
- App - 虚拟机操作系统上的应用,例如nginx
下图是Docker的体系结构:
- server - 表示真实电脑。
- Host OS - 真实电脑的操作系统,例如:Windows,Linux
- Docker Engine - 新一代虚拟化技术,不需要包含单独的操作系统。
- App - 所有的应用程序现在都作为Docker容器运行。
这种体系结构的明显优势是,不需要为虚拟机操作系统提供硬件模拟。所有应用程序都作为Docker容器工作,性能更好。
Docker容器 | 虚拟机(VM) | |
---|---|---|
操作系统 | 与宿主机共享OS | 宿主机OS上运行宿主机OS |
存储大小 | 镜像小,便于存储与传输 | 镜像庞大(vmdk等) |
运行性能 | 几乎无额外性能损失 | 操作系统额外的cpu、内存消耗 |
移植性 | 轻便、灵活、适用于Linux | 笨重、与虚拟化技术耦合度高 |
硬件亲和性 | 面向软件开发者 | 面向硬件运维者 |
Docker优点:轻量级,速度快,运行应用隔离,方便维护...
docker版本介绍
-
Docker从1.13版本之后采用时间线的方式作为版本号,分为社区版CE和企业版EE。
-
社区版是免费提供给个人开发者和小型团体使用的,企业版会提供额外的收费服务,比如经过官方测试认证过的基础设施、容器、插件等。
-
社区版按照stable和edge两种方式发布,每个季度更新stable版本,如17.06,17.09;每个月份更新edge版本,如17.09,17.10。
我们平时用社区版就足够了。所以我们安装社区版;
docker 安装官方文档
我们主要参考:https://docs.docker.com/install/linux/docker-ce/centos/ 来安装;
docker CentOS-7安装步骤
工具准备
-
前置基本系统操作centos
-
虚拟机 VMware或者使用Hyper-V,
-
centos7安装下虚拟机VM上,centos镜像地址:https://mirrors.aliyun.com/centos/
-
ssh连接 工具 才用 FinalShell 官方地址:http://www.hostbuf.com/
安装参考:https://www.runoob.com/w3cnote/vmware-install-centos7.html
这里选择centos7
阿里云下载地址:https://mirrors.aliyun.com/centos/7.9.2009/isos/x86_64/
各个版本iso镜像文件说明:
- CentOS-7-x86_64-DVD-2009.iso 标准安装版
- CentOS-7-x86_64-Everything-2009.iso 完整版,集成所有软件
- CentOS-7-x86_64-Minimal-2009.iso 精简版,自带的软件最少(没有gnome桌面)
- CentOS-7-x86_64-NetInstall-2009.iso 网络安装版
我们选个精简版就可以了
基础环境
用ssh工具连接上系统后,要做几件事
- 检查网络是否正常
ping www.baidu.com
检测即可,不正常的话,自己排查下
- 切换到root用户
输入下面的命令
su
- Docker 对 CentOS 系统的内核版本要求
Docker 要求 CentOS 系统的内核版本高于 3.10
通过 uname -r
命令查看你当前的内核版本
例:
[root@localhost makalo]# uname -r
3.10.0-1160.el7.x86_64
- 将yum包更新到最新
yum update
- 卸载旧版本docker(如果安装过旧版本的话)
如果安装过旧版本可以用此命令,卸载
yum remove docker docker-common docker-selinux docker-engine
安装依赖
安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
yum install -y yum-utils device-mapper-persistent-data lvm2
设置yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
安装最新版本的Docker
yum install docker-ce docker-ce-cli containerd.io
启动Docker并设置开机启动
#启动
systemctl start docker
#设置开机启动
systemctl enable docker
验证docker是否安装成功
执行下面命令,出现下图表示安装成功
docker version
Docker HelloWorld测试
执行
docker run hello-world
执行结果如图
因为本地没有这个镜像,所以从远程官方仓库去拉取,下载
现在已经下载好了,再执行一次
docker run hello-world
ok,HelloWorld运行完毕
Docker HelloWorld运行原理
运行 docker run hello-world
本地仓库未能找到该镜像,然后去远程仓库寻找以及下载该镜像;
然后我们再执行该命令
出来了 Hellowold。我们具体来分析下 执行原理和过程;
从左到右 client客户端,Docker运行主机,远程仓库;
docker build ,pull,run分别是 构建,拉取,运行命令,
中间Docker主机里有 Docker daemon主运行线程,以及Containers容器,容器里可以运行很多实例,(实例是从右侧Images镜像实例化出来的)Images是存储再本地的镜像文件,比如 Redis,Tomat这些镜像文件;
右侧是Registry镜像仓库,默认远程镜像仓库 https://hub.docker.com/ 不过是国外主机,下载很慢,不稳定,所以我们后面要配置成阿里云仓库镜像地址,稳定快捷;
执行 docker run hello-world的过程看如下图例:
docker 配置阿里云镜像
Docker默认远程仓库是 https://hub.docker.com/
比如我们下载一个大点的东西,龟速
由于是国外主机,经常延迟,破损;
所以我们一般都是配置国内镜像,比如阿里云,网易云等;推荐阿里云,稳定点
获取镜像地址
登录进入阿里云镜像服务中心,获取镜像地址
进入阿里云容器镜像服务地址:点这里快速进入
使用你的淘宝或支付宝账号登录
设置镜像地址
在/etc/docker目录下找到在daemon.json文件(没有就新建),将下面内容写入
registry-mirrors对应的地址就是第一步获取的地址
{
"registry-mirrors": ["https://xxxxxxx.mirror.aliyuncs.com"]
}
重启daemon
systemctl daemon-reload
重启docker服务
systemctl restart docker
查看镜像地址是否修改成功
输入
docker info
如下图表示修改成功