docker简介

Docker是一种用于开发、交付和运行应用程序的开放平台,通过使用容器技术,可以更加高效地打包和部署应用程序。

容器化技术: Docker使用容器化技术,允许开发人员将应用程序和其依赖项打包到一个称为容器的轻量级、可移植的环境中。容器提供了一种隔离的执行环境,使应用程序可以在任何环境中以相同的方式运行,无论是开发、测试还是生产环境。

镜像: Docker镜像是一个只读的模板,包含了运行应用程序所需的所有文件和依赖项。镜像可以用来创建容器实例。开发人员可以从Docker Hub等镜像仓库中获取公共镜像,也可以自己构建定制的镜像。

容器

容器是一个运行时的实例,基于镜像创建,并包含了应用程序及其依赖项。容器是轻量级的、可移植的,并且可以快速启动和停止。容器是一种虚拟化技术,它提供了一种将应用程序及其所有依赖项(如库、运行时环境、配置文件等)打包到一个独立的、可移植的运行环境中的方法。容器可以在不同的计算机和操作系统上运行,而不需要重新配置或修改应用程序。容器化技术允许开发人员将应用程序与其依赖项打包成一个可移植的单元,从而简化了开发、测试、部署和维护应用程序的过程。

容器与传统的虚拟机相比有许多优势,包括更快的启动时间、更小的资源占用、更高的性能和更好的可移植性。容器之间是隔离的,每个容器都有自己的文件系统、进程空间和网络空间,但它们共享主机的操作系统内核,这使得容器更加轻量级和高效。

容器技术的典型实现是Docker,它是一个开源的容器化平台,提供了一套工具和接口,使得开发人员可以轻松地创建、部署和管理容器化应用程序。除了Docker之外,还有其他容器技术,如Kubernetes、OpenShift、LXC等,它们提供了更多的功能和灵活性,用于构建和管理大规模的容器化基础设施。

Docker引擎: Docker引擎是一个用于创建和管理容器的开源工具。它包括了一系列命令行工具和API,允许开发人员构建、运行和管理容器化应用程序。

Docker Compose: Docker Compose是一个用于定义和运行多个容器应用程序的工具。它允许开发人员使用YAML文件定义应用程序的服务、网络和存储配置,并通过单个命令启动、停止和管理整个应用程序。

Docker Swarm: Docker Swarm是一个用于构建和管理容器集群的工具。它允许开发人员将多个Docker主机组合成一个虚拟的集群,从而可以在集群中运行和管理大规模的容器化应用程序。

Docker 架构

镜像(Image):Docker 镜像(Image),就相当于是一个 root 文件系统。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统。

容器(Container):镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。

仓库(Repository):仓库可看成一个代码控制中心,用来保存镜像。


Docker 镜像(Images)

Docker 镜像是用于创建 Docker 容器的模板,比如 Ubuntu 系统。

Docker 容器(Container)

容器是独立运行的一个或一组应用,是镜像运行时的实体。

Docker 客户端(Client)

Docker 客户端通过命令行或者其他工具使用 Docker SDK (https://docs.docker.com/develop/sdk/) 与 Docker 的守护进程通信。

Docker 主机(Host)

一个物理或者虚拟的机器用于执行 Docker 守护进程和容器。

Docker Registry

Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库。Docker Hub(https://hub.docker.com) 提供了庞大的镜像集合供使用。一个 Docker Registry 中可以包含多个仓库(Repository);每个仓库可以包含多个标签(Tag);每个标签对应一个镜像。通常,一个仓库会包含同一个软件不同版本的镜像,而标签就常用于对应该软件的各个版本。我们可以通过 <仓库名>:<标签> 的格式来指定具体是这个软件哪个版本的镜像。如果不给出标签,将以 latest 作为默认标签。

Docker Machine

Docker Machine是一个简化Docker安装的命令行工具,通过一个简单的命令行即可在相应的平台上安装Docker,比如VirtualBox、 Digital Ocean、Microsoft Azure。

相关推荐
吳所畏惧32 分钟前
宝塔面板Redis密码修改指南:SSH命令修改 vs 面板UI界面修改,哪个更靠谱?
运维·服务器·数据库·redis·缓存·ssh
张忠琳41 分钟前
【NVIDIA】 NVIDIA Container Toolkit v1.19.1 — OCI 模块超深度分析之三
云原生·容器·架构·kubernetes·nvidia
HiDev_1 小时前
【非标自动化】2、认识元器件(确定目标)
运维·自动化
Zhang~Ling2 小时前
从 fopen 到 struct file:从零开始拆解 Linux 文件 I/O
linux·运维·服务器
爱写代码的森2 小时前
蒙三方库 | harmony-utils之FileUtil文件重命名与属性查询详解
linux·运维·服务器·华为·harmonyos·鸿蒙·huawei
Elastic 中国社区官方博客2 小时前
将你的 Grafana Kubernetes 仪表板迁移到 Elastic Observability:相同的 PromQL,30 倍更快的查询
大数据·人工智能·elasticsearch·搜索引擎·容器·kubernetes·grafana
中微极客2 小时前
2026主流AI Agent框架技术选型与性能对比
运维·网络·人工智能
久曲健的测试窝3 小时前
智能座舱自动化测试落地方案:数字仿真搭配实车实测,解决用例运维与场景失真难题
运维
AOwhisky3 小时前
Python 学习笔记(第十五期)——运维自动化(下·后篇):堡垒机实战——paramiko高阶篇
运维·python·学习·云原生·自动化·运维开发
重生的黑客4 小时前
Linux 进程优先级、切换与调度:从孤儿进程到 O(1) 调度模型
linux·运维·服务器·进程优先级·nice