1.什么是Docker
1.1官方定义
# 1.官方介绍
- We have a complete container solution for you - no matter who you are and where you are on your containerization journey.
- 翻译: 我们为你提供了一个完整的容器解决方案,不管你是谁,不管你在哪,你都可以开始容器的的旅程。
- 官方定义: docker是一个容器技术。
1.2Docker的起源
Docker 最初是 dotCloud 公司创始人 Solomon Hykes 在法国期间发起的一个公司内部项目,它是基于 dotCloud 公司多年云服务技术的一次革新,并于 2013 年 3 月以 Apache 2.0 授权协议开源,主要项目代码在 GitHub 上进行维护。Docker 项目后来还加入了 Linux 基金会,并成立推动 开放容器联盟(OCI)。
Docker 自开源后受到广泛的关注和讨论,至今其 GitHub 项目 已经超过 5 万 7 千个星标和一万多个 fork。甚至由于 Docker 项目的火爆,在 2013 年底,dotCloud 公司决定改名为 Docker。Docker 最初是在 Ubuntu 12.04 上开发实现的;Red Hat 则从 RHEL 6.5 开始对 Docker 进行支持;Google 也在其 PaaS 产品中广泛应用 Docker。
Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基于 Linux 内核的 cgroup,namespace,以及 OverlayFS 类的 Union FS 等技术,对进程进行封装隔离,属于操作系统层面的虚拟化技术。由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器。
2.docker 架构
概念 | 说明 |
---|---|
镜像(Images) | 就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。 |
容器(Container) | 容器是独立运行的一个或一组应用,是镜像运行时的实体。 |
客户端(Client) | Docker 客户端通过命令行或者其他工具使用 Docker SDK (https://docs.docker.com/develop/sdk/) 与 Docker 的守护进程通信。 |
主机(Host) | 一个物理或者虚拟的机器用于执行 Docker 守护进程和容器。 |
Docker Registry | Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库。 |
3.docker优势
优势1: 一致的运行环境,更轻松的迁移
优势2:对进程进行封装隔离,容器与容器之间互不影响,更高效的利用系统资源
优势3: 通过镜像复制N多个环境一致容器
4.Docker和虚拟机区别
比较上面两张图,我们发现虚拟机是携带操作系统,本身很小的应用程序却因为携带了操作系统而变得非常大,很笨重。Docker是不携带操作系统的,所以Docker的应用就非常的轻巧。另外在调用宿主机的CPU、磁盘等等这些资源的时候,拿内存举例,虚拟机是利用Hypervisor去虚拟化内存,整个调用过程是虚拟内存->虚拟物理内存->真正物理内存,但是Docker是利用Docker Engine去调用宿主的的资源,这时候过程是虚拟内存->真正物理内存。
传统虚拟机 | Docker容器 | |
---|---|---|
磁盘占用 | 几个GB到几十个GB左右 | 几十MB到几百MB左右 |
CPU内存占用 | 虚拟操作系统非常占用CPU和内存 | Docker引擎占用极低 |
启动速度 | (从开机到运行项目)几分钟 | (从开启容器到运行项目)几秒 |
安装管理 | 需要专门的运维技术 | 安装、管理方便 |
应用部署 | 每次部署都费时费力 | 从第二次部署开始轻松简捷 |
耦合性 | 多个应用服务安装到一起,容易互相影响 | 每个应用服务一个容器,达成隔离 |
系统依赖 | 无 | 需求相同或相似的内核,目前推荐是Linux |
5.Docker的安装
百度网盘地址
https://pan.baidu.com/s/1Dmi4rkDTqBQ57jxQz1BxsQ?pwd=jyjy //VMware地址
https://pan.baidu.com/s/187mivQKH4D4LfIbNHJd5GQ?pwd=jyjy //centos 8.1
地址如若失效请留言或者@我
5.1 安装docker(centos8.x)
- 卸载原始docker
$ sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
- 安装docker依赖
sudo yum install -y yum-utils
- 设置docker的yum源
sudo 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-compose-plugin
- 指定版本安装docker
yum list docker-ce --showduplicates | sort -r --查询版本
- 启动docker
systemctl start docker --启动docker
docker version --查看docker版本
- 关闭docker
systemctl stop docker
- 测试docker安装
docker version
- 配置阿里云镜像加速
cd /etc/docker //切换到docker安装目录
vi /etc/docker/daemon.json //编辑daemon.json
{
"registry-mirrors": ["https://xxxxx.mirror.aliyuncs.com"]
}
sudo systemctl daemon-reload //刷新配置
sudo systemctl restart docker //重启docker