1. Docker 是什么
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。
Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
2. Docker架构原理
docker使用c/s架构,client通过接口与server进程通信实现容器的构建,运行和发布。
client和server可以运行在同一台集群中,也可以实现跨主机远程通信
Docker三要素:镜像、容器、仓库
1.镜像
Docker 镜像(Image)就是一个只读的模板,它可以是一个可运行软件(tomcat,mysql),也可以是一个系统(centos)。镜像可以用来创建 Docker 容器,一个镜像可以创建很多容器。
2.容器
Docker 利用容器(Container)独立运行一个或一组应用。容器是用镜像创建的运行实例。它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。可以把容器看做是一个简易版的 Linux 环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。
容器的定义和镜像几乎一模一样,也是一堆层的统一视角,唯一区别在于容器的最上面那一层是可读可写的。
3.仓库
仓库(Repository)是集中存放镜像文件的场所。
仓库(Repository)和仓库注册服务器(Registry)是有区别的。仓库注册服务器上往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签(tag,类似版本号)。
仓库分为公开仓库(Public)和私有仓库(Private)两种形式。
最大的公开仓库是 Docker Hub(https://hub.docker.com/),国内的公开仓库有阿里云 、网易云 等。
3. Docker引擎
docker引擎是一个C/S结构的应用
- server是一个常驻进程
- REST API实现了client和server间的交互协议
- CLI实现了容器和镜像的管理,为用户提供了统一的操作界面
4. Docker优势
- 更高效的利用系统资源:由于容器不需要进行硬件虚拟以及运行完整操作系统等额外开销,Docker 对系统资源的利用率更高。无论是应用执行速度、内存损耗或者文件存储速度,都要比传统虚拟机技术更高效。因此,相比虚拟机技术,一个相同配置的主机,往往可以运行更多数量的应用。
- 更快速的启动时间:传统的虚拟机技术启动应用服务往往需要数分钟,而Docker 容器应用,由于直接运行于宿主内核,无需启动完整的操作系统,因此可以做到秒级、甚至毫秒级的启动时间。大大的节约了开发、测试、部署的时间。
- 一致的运行环境:Docker 的镜像提供了除内核外完整的运行时环境,确保了应用运行环境一致性。
- 持续交付和部署:Docker是build once,run everywhere. 使用Docker 可以通过定制应用镜像来实现持续集成、持续交付、部署。开发人员可以通过Dockerfile 来进行镜像构建,并结合持续集成(Continuous Integration) 系统进行集成测试,而运维人员则可以直接在生产环境中快速部署该镜像,甚至结合持续部署(Continuous Delivery/Deployment) 系统进行自动部署。
- 更轻松的迁移:Docker 使用的分层存储以及镜像的技术,使得应用重复部分的复用更为容易,也使得应用的维护更新更加简单,基于基础镜像进一步扩展镜像也变得非常简单。此外,Docker 团队同各个开源项目团队一起维护了一大批高质量的官方镜像,既可以直接在生产环境使用,又可以作为基础进一步定制,大大的降低了应用服务的镜像制作成本。使用Dockerfile 使镜像构建透明化,不仅仅开发团队可以理解应用运行环境,也方便运维团队理解应用运行所需条件,帮助更好的生产环境中部署该镜像。
原文链接:https://blog.csdn.net/bskfnvjtlyzmv867/article/details/81044217
5. 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容器工作,性能更好。
|
Docker容器 |
虚拟机(VM) |
|
|
操作系统 |
与宿主机共享OS |
宿主机OS上运行宿主机OS |
|
存储大小 |
镜像小,便于存储与传输 |
镜像庞大(vmdk等) |
|
运行性能 |
几乎无额外性能损失 |
操作系统额外的cpu、内存消耗 |
|
移植性 |
轻便、灵活、适用于Linux |
笨重、与虚拟化技术耦合度高 |
|
硬件亲和性 |
面向软件开发者 |
面向硬件运维者 |
Docker优点:轻量级,速度快,运行应用隔离,方便维护...
6. Docker 基本命令
| 启动 Docker | systemctl start docker |
| 停止 Docker | systemctl stop docker |
| 重启 Docker | systemctl restart docker |
| 开机启动 Docker | systemctl enable docker |
| 查看 Docker 概要信息 | docker info |
| 查看 Docker 帮助文档 | docker --help |
|
查看 Docker 版本信息 |
docker version |