Docker是什么
Docker 是一个开源的应用容器引擎,它允许开发者打包他们的应用以及应用的依赖包到一个可移植的容器中,然后这个容器可以在任何支持 Docker 的Linux或Windows机器上运行。Docker 容器的概念基于集装箱在物流领域的思想,即提供一个标准化的单元,可以快速、可靠地从一个环境 迁移到另一个环境。
关键特点:
- 容器化:Docker 允许将应用程序及其环境封装在一个容器中,确保在不同的环境中有一致的运行行为。
- 可移植性:容器可以在任何支持 Docker 的操作系统上运行,这极大地简化了应用的部署和迁移。
- 隔离性:容器之间是相互隔离的,它们拥有自己的文件系统、网络和进程空间。
- 轻量级:与传统虚拟机相比,Docker 容器占用的资源更少,启动速度更快。
- 可扩展性:Docker 可以轻松地扩展服务,通过简单的命令即可创建、启动、停止和销毁容器。
主要组件:
- Docker客户端:用户与 Docker 交互的主要方式,通过命令行界面(CLI)发送命令给 Docker 守护进程。
- Docker守护进程(Dockerd):在宿主机上运行的后台服务,负责管理容器、镜像、网络和存储等。
- Docker镜像:一个只读的模板,用于创建 Docker 容器。镜像通常基于其他镜像并添加自定义层。
- Docker容器:容器是从镜像创建的运行实例。它可以被启动、停止、删除,每个容器都是独立运行的。
- Docker仓库:存储和分发 Docker 镜像的地方。Docker Hub 是 Docker 官方提供的一个公共仓库。
- Docker Compose:一个用于定义和运行多容器 Docker 应用的工具。它使用 YAML 文件配置应用程序的服务。 Docker 通过其容器化技术改变了软件的开发、交付和运行方式,是现代云原生应用和微服务架构的重要组成部分。

Docker VS 虚拟机
特性 | Docker | 虚拟机 (VM) |
---|---|---|
虚拟化层级 | 操作系统级别虚拟化 (OS-level) | 🟢硬件级别虚拟化 (Hypervisor-level) |
启动时间 | 🟢毫秒~秒级启动 | 分钟级启动 |
资源消耗 | 🟢轻量级,占用较少资源 | 相对较重,每个虚拟机需要完整的操作系统 |
性能开销 | 🟢较小(共享宿主机内核) | 较大(每个虚拟机有完整的操作系统) |
隔离性 | 容器之间共享宿主操作系统内核,隔离性较弱 | 🟢完全隔离,每个虚拟机都有独立的操作系统 |
可移植性 | 🟢高(可以在任何安装 Docker 的平台运行) | 较低(受限于虚拟机软件的兼容性) |
部署效率 | 🟢极高(可以快速部署和迁移) | 较低(启动和配置时间较长) |
兼容性 | 由于基于 Linux 的技术实现,在 Windows 和 macOS 上使用 Doceker 需安装 Docker-Desktop 模拟出一个 Linux 环境。 | 🟢支持主流操作系统 |
使用场景 | APP开发环节,打包依赖环境。APP部署环节,提供软件隔离环境。APP运维,群组管理。 | 提供硬件级的操作系统。 |
容器与Docker的关系?
Docker是容器的实现方式之一。
容器和虚拟机的关系?
通常会在物理机上安装 VM,在 VM上使用 Docker(容器)部署应用。
三、加入 docker 组
安装 Docker 后,非 root 用户使用 Docker 需要加上 sudo ,不方便。可以把用户加入 docker 用户组,用户组中的用户不需要使用 sudo 。
sudo usermod -aG docker $USER
注销后生效。
四、Docker镜像
国内网络需要配置镜像源,把 https://docker.1panel.live 换成有效的URL即可,可以添加多个镜像源。
{
"registry-mirrors": [
"https://docker.1panel.live"
]
}
修改配置后,重启 Docker 服务。
sudo systemctl restart docker
五、部署第一个 Docker 应用
docker run hello-world
hello-world
是一个简单的 Docker 应用,它的大小只有几KB。当它运行成功时会在屏幕上输出一段欢迎语,如此用户便能确认 Docker 的确安装成功了。

用户首次执行 docker run hello-world 命令时,docker 在后台完成以下步骤: