docker介绍

一. Docker基础

1.Docker是什么?

Docker是一款开源的应用容器引擎,由Docker Inc.公司开发,自推出以来迅速成为云计算领域中的关键技术之一。Docker利用Linux的内核特性如cgroups(Control Groups)和namespaces实现了资源隔离与限制,可以在同一主机系统上轻松地创建和管理多个容器实例,每个容器都像是一个轻量级的、独立运行的虚拟环境。

2. Docker的核心组成部分包括:

  1. Docker Client(客户端):用户通过Docker CLI(命令行界面)与Docker守护进程交互,发送构建、运行、停止容器等相关命令。

  2. Docker Daemon(守护进程):在宿主机上持续运行的后台服务,负责接收客户端命令,管理容器、镜像和网络等核心组件。

  3. Docker Image(镜像):一种分层结构的只读模板,包含了运行应用程序所需的所有依赖文件和配置信息。用户可以根据基础镜像创建新的定制镜像,或者从Docker Hub这样的镜像仓库拉取现成的镜像。

  4. Docker Container(容器):基于镜像运行的可执行实例,容器之间相互隔离,各自拥有独立的文件系统、网络空间以及其他资源,可以快速启动、停止和迁移。

3、Docker的主要优势和特点包括:

  • 标准化和可移植性:容器化的应用可以在任何支持Docker的环境中运行,因为所有的依赖都被包含在镜像之中,大大简化了部署流程。

  • 轻量级虚拟化:相比传统的虚拟机技术,容器占用的资源更少,启动更快,因此可以更高效地利用硬件资源。

  • 资源隔离与安全性:通过内核提供的隔离机制,确保容器间互不影响,提供一定的安全保障。

  • DevOps友好:Docker促进了持续集成和持续部署(CI/CD)实践,有助于实现敏捷开发和运维自动化。

  • 容器编排:虽然Docker本身提供了容器的生命周期管理,但在大规模集群环境下,常常结合Kubernetes、Docker Swarm等容器编排工具来管理大量容器的调度、网络和服务发现等复杂需求。

综上所述,Docker已经成为现代软件开发、交付和部署流程中不可或缺的一部分,极大地提升了应用的构建、测试、分发和运行效率。

二.Docker与Virtual Machine区别

Docker与Virtual Machine(虚拟机)的主要区别在于它们的架构、资源使用、隔离程度以及启动和运行效率等方面:

  1. 架构和资源使用:

  2. Docker:基于容器技术,它不运行完整的操作系统,而是利用宿主机的操作系统内核,并通过命名空间(Namespace)、控制组(Cgroups)等内核特性进行隔离,使得不同的容器共享同一内核,但拥有独立的用户空间。因此,Docker容器相比虚拟机更加轻量级,启动更快,占用存储空间和内存较少。

  3. Virtual Machine:每个虚拟机运行在其自身的Guest OS(客户操作系统)之上,这个Guest OS位于一个名为Hypervisor(虚拟机管理程序)的底层软件之上,该软件模拟出一套完整的硬件环境供Guest OS使用。这意味着每个虚拟机都需要一个完整的操作系统副本,资源消耗较大,启动时间较长,存储和内存占用较多。

  4. 隔离程度:

  5. Docker:容器之间的隔离不如虚拟机彻底,尤其是在安全性和稳定性方面。容器共享内核,如果一个容器出现了内核漏洞或故障,可能影响到同一主机上的其他容器。

  6. Virtual Machine:虚拟机提供了较高的隔离级别,因为每个虚拟机都有独立的操作系统,即便一个虚拟机受到攻击或崩溃,也不会直接影响到其他虚拟机。

  7. 启动和运行效率:

  8. Docker:由于容器不需要加载和运行整个操作系统,所以能够实现秒级启动,运行时性能损失较小,接近于直接在宿主机上运行应用。

  9. Virtual Machine:虚拟机需要启动整个操作系统,包括内核引导和系统初始化等步骤,启动时间一般为分钟级别,运行时性能虽经过优化但仍低于直接在物理机上运行。

  10. 应用场景和灵活性:

  11. Docker:非常适合于服务部署、微服务架构、持续集成/持续部署(CI/CD)等场景,容器易于复制和移动,确保在不同环境下的部署一致性。

  12. Virtual Machine:适合于需要更高隔离度的场景,例如测试不同操作系统版本的应用、隔离不兼容的服务,以及硬件兼容性要求较高的传统应用。

  13. 管理和编排:

  14. Docker:具备良好的容器编排能力,通过Docker Compose、Kubernetes等工具可以轻松管理和调度大量容器。

  15. Virtual Machine:早期的虚拟机管理相对独立,但现在也有诸如VMware vSphere、OpenStack等平台支持大规模虚拟机的管理和编排。

VM技术和容器技术对比

面对上述几个问题,docker设想是交付运行环境如同海运,OS如同一个货轮,每一个在OS基础上的软件都如同一个集装箱,用户可以通过标准化手段自由组装运行环境,同时集装箱的内容可以由用户自定义,也可以由专业人员制造。这样,交付一个软件,就是一系列标准化组件的集合的交付,如同乐高积木,用户只需要选择合适的积木组合,并且在最顶端署上自己的名字(最后一个标准化组件是用户的app)。这也就是基于docker的PaaS产品的原型。

三.Docker应用

  • Docker在各种场景中都有广泛的应用,包括开发环境搭建、持续集成和部署、微服务架构等。

  • Docker可以提供一致的开发和测试环境,简化了开发者之间的协作和应用的部署。

  • 在CI/CD中,Docker可以用于构建和打包应用程序,以及自动化测试和部署。

  • 在微服务架构中,Docker可以帮助实现服务的隔离、部署和扩展。

docker安装软件

docker run -itd --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
相关推荐
想学习java初学者24 分钟前
Docker compose部署elasticsearch(单机版)
运维·docker·容器
r0ad2 小时前
SpringCloud2023实战之接口服务测试工具SpringBootTest
spring boot·后端·spring cloud
微刻时光2 小时前
Docker部署Nginx
运维·nginx·docker·容器·经验
小安运维日记2 小时前
CKA认证 | Day3 K8s管理应用生命周期(上)
运维·云原生·容器·kubernetes·云计算·k8s
陈小肚2 小时前
k8s 1.28.2 集群部署 docker registry 接入 MinIO 存储
docker·容器·kubernetes
A陈雷3 小时前
springboot整合elasticsearch,并使用docker desktop运行elasticsearch镜像容器遇到的问题。
spring boot·elasticsearch·docker
.生产的驴3 小时前
SpringCloud Gateway网关路由配置 接口统一 登录验证 权限校验 路由属性
java·spring boot·后端·spring·spring cloud·gateway·rabbitmq
小扳3 小时前
Docker 篇-Docker 详细安装、了解和使用 Docker 核心功能(数据卷、自定义镜像 Dockerfile、网络)
运维·spring boot·后端·mysql·spring cloud·docker·容器
politeboy4 小时前
关于k8s中镜像的服务端口被拒绝的问题
云原生·容器·kubernetes
weixin_438197384 小时前
K8S创建云主机配置docker仓库
linux·云原生·容器·eureka·kubernetes