🛥️ Docker 简介:核心概念

2025-05-25

🛥️ Docker 简介:核心概念

Docker 就像一个神奇的工具箱,让开发者可以在微型便携的“容器”中构建、发布和管理他们的应用程序。容器就像虚拟房间,但比传统的虚拟机 (VM) 速度更快、效率更高。得益于 Docker,容器变得非常流行,如今已成为现代软件开发的必备工具。


什么是 Docker?

Docker容器

Docker 是一个开源平台,可自动在容器内部署应用程序。容器是独立的环境,包含运行应用程序所需的一切,包括代码、运行时、库和系统工具。Docker 为开发人员提供了构建、管理和分发这些容器的工具。


奥西

什么是开放容器计划(OCI)

开放容器倡议(OCI)是由 Linux 基金会于 2015 年成立的开放治理结构,旨在为容器运行时和镜像规范创建行业标准,确保跨容器生态系统的互操作性。

Docker 最初开发了自己的容器运行时和镜像格式。然而,随着容器的兴起以及对更广泛标准化的需求,Docker 将其容器运行时技术runc贡献给了 OCI。如今,Docker 的生态系统遵循 OCI 标准,这使得 Docker 容器与其他符合 OCI 标准的运行时和工具兼容。

通过符合 OCI 标准,Docker 确保其容器和镜像可以在各种平台和工具上运行,从而促进更加开放和协作的容器生态系统。


容器为何有用?

  1. 可移植性:容器可以在任何支持 OCI 兼容运行时的系统上运行,确保应用程序在不同环境中的行为一致。
  2. 效率:容器共享主机系统的内核,与虚拟机相比,它们更轻量且启动速度更快。
  3. 可扩展性:容器可以轻松扩大或缩小以处理不同的负载。
  4. 一致性:容器通过封装所有依赖项和配置来减少“它在我的计算机上运行”的问题。

容器、虚拟机和裸机

容器、虚拟机和裸机

裸机

  • 直接在物理硬件上运行,无需任何虚拟化。
  • 提供最高性能和对硬件资源的直接访问。
  • 最适合需要完全控制硬件的高性能工作负载和应用程序。

裸机

虚拟机(VM)

  • 包括完整的操作系统,使它们变得更重。
  • 需要更多资源并且需要更长时间才能启动。
  • 适合在单台物理机上运行多个OS环境。

虚拟机 (VM)

容器

  • 共享主机操作系统内核,使其变得轻量级。
  • 使用更少的内存并快速启动。
  • 非常适合微服务和快速部署。

容器

方面 容器 虚拟机 裸机
资源效率 高的 缓和 最高
启动时间 分钟 不适用
*隔离 * 流程级 完整的操作系统级别 完全物理隔离
可移植性 非常高 缓和 低的
表现 近原生 缓和 本国的
用例 微服务、CI/CD 管道 遗留应用程序、操作系统测试 高性能计算

Docker术语

Docker术语

  • Dockerfile:包含构建 Docker 镜像的说明的文本文件。
  • 镜像:用于创建容器的只读模板。镜像由 Dockerfile 构建,并遵循 OCI 镜像规范。
  • 容器:镜像的可运行实例。容器可以被启动、停止和删除。
  • 注册表:Docker 镜像的存储库。Docker Hub 是一个流行的公共注册表,其他符合 OCI 标准的注册表包括 Harbor 和 Quay。

Docker 命令行速查表

Docker 命令行速查表

0.基本 Docker 命令

  • docker --version:检查 Docker 版本。
  • docker help:显示 Docker 命令和选项。
  • docker info:显示有关 Docker 的系统范围信息。

1.图片

  • docker images:列出所有本地镜像。
  • docker pull <image>:从 Docker Hub 下载镜像。
  • docker build -t <image_name> .:从当前目录中的 Dockerfile 构建镜像。
  • docker rmi <image>:删除图像。
  • docker tag <source_image> <new_image>:用新名称标记图像。

2.容器

  • docker run <image>:从图像运行容器。
  • docker run -it <image>:以交互模式运行容器。
  • docker run -d <image>:以分离模式运行容器。
  • docker ps:列出正在运行的容器。
  • docker ps -a:列出所有容器(包括已停止的容器)。
  • docker stop <container>:停止正在运行的容器。
  • docker start <container>:启动一个已停止的容器。
  • docker restart <container>:重新启动容器。
  • docker rm <container>:移除已停止的容器。
  • docker exec -it <container> <command>:在正在运行的容器内运行命令。

3.容器管理

  • docker logs <container>:查看容器的日志。
  • docker top <container>:显示容器中正在运行的进程。
  • docker stats <container>:显示资源使用情况统计的实时流。
  • docker inspect <container>:查看容器或镜像的详细信息。
  • docker rename <old_name> <new_name>:重命名容器。

4.网络

  • docker network ls:列出所有 Docker 网络。
  • docker network create <network_name>:创建新网络。
  • docker network connect <network> <container>:将容器连接到网络。
  • docker network disconnect <network> <container>:断开容器与网络的连接。
  • docker network inspect <network>:查看有关网络的详细信息。

5.

  • docker volume ls:列出所有卷。
  • docker volume create <volume_name>:创建卷。
  • docker volume inspect <volume>:显示有关卷的详细信息。
  • docker volume rm <volume>:删除卷。

示例:创建一个简单的 Docker 容器

让我们创建一个运行 Python 脚本的简单 Docker 容器。

  1. 创建 Python 脚本:将以下代码保存在名为的文件中app.py
   print("Hello, Docker!")
Enter fullscreen mode Exit fullscreen mode
  1. 创建 Dockerfile:创建一个名为的文件,Dockerfile内容如下:
   FROM python:3.9-slim
   COPY app.py /app.py
   CMD ["python", "/app.py"]
Enter fullscreen mode Exit fullscreen mode
  1. 构建 Docker 镜像
   docker build -t python-app .
Enter fullscreen mode Exit fullscreen mode
  1. 运行 Docker 容器
   docker run python-app
Enter fullscreen mode Exit fullscreen mode

这将输出:

   Hello, Docker!
Enter fullscreen mode Exit fullscreen mode

结论

Docker 让使用容器构建、部署和运行应用程序变得轻而易举。Docker 遵循 OCI 标准,确保容器世界中的一切都能无缝协作。容器具有极高的效率、可移植性和可扩展性,因此成为现代软件开发的核心。如果您了解 Docker 以及它如何与 OCI 协同工作,那么您可以使用这项技术来加速您的工作流程,并确保您的应用程序在任何平台上都能正常运行。

下周我将深入探讨 docker 架构,敬请关注。

文章来源:https://dev.to/juniourrau/introduction-to-docker-core-concepts-and-basics-for-beginners-4n0h
PREV
Github 上我最喜欢的 Javascript 学习资源
NEXT
8 负载平衡类型