一、Docker介绍
Docker是一个开源的应用容器引擎
,是一个轻量级容器技术
。基于Go语言并遵从Apache2.0协议开源。Docker可以让开发者打包他们的应用和依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容器完全使用沙箱机制,相互之间不会有任何接口,更重要的是容器性能开销极低。
Docker的理念:Build,Ship and Run Any App,Anywhere
,也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的APP(可以是一个WEB应用或数据库应用等等)及其运行环境能够做到一次封装,到处运行。
Docker一次构建,随处运行
更快速的应用交付和部署
传统的应用开发完成后,需要提供一堆安装程序和配置说明文档
,安装部署后需根据配置文档进行繁杂的配置才能正常运行。Docker化之后只需要交付少量容器镜像文件
,在正式生产环境加载镜像并运行即可,应用安装配置在镜像里已经内置好,大大节省部署配置和测试验证时间。
更便捷的升级和扩缩容
随着微服务架构和Docker的发展,大量的应用会通过微服务方式架构,应用的开发构建将变成搭乐高积木一样,每个Docker容器将变成一块“积木”,应用的升级将变得非常容易。当现有的容器不足以支撑业务处理时,可通过镜像运行新的容器进行快速扩容
,使应用系统的扩容从原先的天级变成分钟级甚至秒级。
更简单的系统运维
应用容器化运行后,生产环境运行的应用可与开发、测试环境的应用高度一致
,容器会将应用程序相关的环境和状态完全封装起来,不会因为底层基础架构和操作系统的不一致性给应用带来影响,产生新的BUG。当出现程序异常时,也可以通过测试环境的相同容器进行快速定位和修复。
更高效的计算资源利用
Docker是内核级虚拟化,其不像传统的虚拟化技术一样需要额外的Hypervisor支持,所以可以在一台物理机上可以运行很多个容器实例
,可大大提升物理服务器的CPU和内存的利用率。
几个核心概念
Host(主机)
:安装了Docker程序的机器(Docker直接安装在操作系统之上)。
Client(客户端)
:连接docker主机进行操作。
Registry(仓库)
:用来保存各种打包好的软件镜像。
Images(镜像)
:软件打包好的镜像;放在docker仓库中。
Container(容器)
:镜像启动后的实例称为一个容器,容器是独立运行的一个或一组应用、
Docker使用步骤: 安装Docker→在仓库中找到软件对应的镜像→使用Docker运行此镜像,生成Docker容器→对容器的启动和停止就是对软件的启动和停止。
Docker三要素
镜像(image,类似Java的类)
镜像就是一个模板(只读),容器就是镜像的一个实例。
镜像可以用来创建 Docker 容器,一个镜像可以创建很多容器。
容器(container,类似Jva的对象)
Docker容器是用镜像创建的运行实例,一个容器运行一种服务。可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。可以把容器看做是一个简易版的 Linux 环境
(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。
容器的定义和镜像几乎一模一样,唯一区别在于容器的最上面那一层是可读可写的。
仓库(repository)
仓库(Repository)是集中存放镜像文件的地方,我们可以把镜像发布到仓储中,需要的时候从仓储中拉下来就可以了。
仓库(Repository)和仓库注册服务器(Registry)是有区别的。仓库注册服务器上往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签(tag)。
仓库分为公开仓库(Public)和私有仓库(Private)两种形式。最大的公开仓库是 Docker Hub,存放了数量庞大的镜像供用户下载。国内类似的公开仓库有阿里云、网易云等。
Docker运行原理
Docker是如何工作的?
Docker是一个Client-Server结构的系统,Docker守护进程运行在主机上, 然后通过Socket连接从客户端访问,守护进程从客户端接受命令并管理运行在主机上的容器。 容器,是一个运行时环境,可以理解为集装箱的概念。
虚拟机和Docker有什么区别?
比较 | Docker容器 | VM虚拟机 |
---|---|---|
操作系统 | 与宿主机共享OS | 宿主机OS上运行虚拟机OS |
存储大小 | 镜像小,便于存储和传输 | 镜像庞大(vmdk、vdi等) |
运行性能 | 几乎无额外性能损失 | 操作系统额外的cpu、内存消耗 |
移植性 | 轻便、灵活、适应于Linux | 笨重,与虚拟化技术耦合度高 |
部署速度 | 快速,秒级 | 较慢,10s以上 |
隔离级别 | 进程之间的隔离 | 操作系统之间的隔离 |
安全性 | 低于VM虚拟机 | 高于Docker容器 |
硬件亲和性 | 面向软件开发者 | 面向硬件运维者 |
为什么Docker比VM快?
(1)docker有着比虚拟机更少的抽象层
。
docker不需要Hypervisor实现硬件资源虚拟化,运行在docker容器上的程序直接使用的都是实际物理机的硬件资源。因此在CPU、内存利用率上、docker有明显优势。
(2)docker利用的是宿主机的内核,而不需要 宿主机OS
。 新建一个docker容器时,docker不需要和虚拟机一样重新加载一个操作系统内核。避免引寻、加载操作系统内核等比较费时费资源的过程;新建一个VM虚拟机时,虚拟机软件需要加载 宿主机OS,整个新建过程是分钟级别的。而docker由于直接利用宿主机的OS,则省略了返个过程,新建一个docker容器只需要几秒钟。
二、centos7安装Docker
Docker安装步骤
前提:确保Linux是centos7以上版本
第一步:安装gcc相关环境
# 依次执行下面两个命令:
yum -y install gcc
yum -y install gcc-c++
第二步:卸载旧版本的Docker(如果安装过)
# 直接使用下面的命令进行旧版本的卸载
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine
第三步:安装需要的安装包
yum install -y yum-utils device-mapper-persistent-data lvm2
第四步:设置stable镜像仓库(改为阿里云)
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
第五步:更新yum软件包索引(可以使Docker变得更快)
yum makecache fast
第六步:安装DockerCE
yum -y install docker-ce
至此,Docker安装完毕。
Docker使用
启动Docker
# 启动Docker服务
systemctl start docker
配置镜像加速
阿里云的镜像可以自己到阿里云官网查看。
# 在etc下创建docker文件夹
mkdir -p /etc/docker
# 创建docker配置文件
vim /etc/docker/daemon.json
#网易云
{"registry-mirrors": ["http://hub-mirror.c.163.com"] }
#阿里云
,{
"registry-mirrors": ["https://{自已的编码}.mirror.aliyuncs.com"]
}
# 重新加载daemon配置文件
systemctl daemon-reload
# 重启docker
systemctl restart docker
测试
# 查看Docker版本
docker version
# 测试helloworld是否成功
docker run hello-world
docker run hello-world
干了什么?
转载:https://blog.csdn.net/weixin_43691058/article/details/106161495