🛥️ Docker 简介:核心概念
Docker 就像一个神奇的工具箱,让开发者可以在微型便携的“容器”中构建、发布和管理他们的应用程序。容器就像虚拟房间,但比传统的虚拟机 (VM) 速度更快、效率更高。得益于 Docker,容器变得非常流行,如今已成为现代软件开发的必备工具。
什么是 Docker?
Docker 是一个开源平台,可自动在容器内部署应用程序。容器是独立的环境,包含运行应用程序所需的一切,包括代码、运行时、库和系统工具。Docker 为开发人员提供了构建、管理和分发这些容器的工具。
什么是开放容器计划(OCI)?
开放容器倡议(OCI)是由 Linux 基金会于 2015 年成立的开放治理结构,旨在为容器运行时和镜像规范创建行业标准,确保跨容器生态系统的互操作性。
Docker 最初开发了自己的容器运行时和镜像格式。然而,随着容器的兴起以及对更广泛标准化的需求,Docker 将其容器运行时技术runc贡献给了 OCI。如今,Docker 的生态系统遵循 OCI 标准,这使得 Docker 容器与其他符合 OCI 标准的运行时和工具兼容。
通过符合 OCI 标准,Docker 确保其容器和镜像可以在各种平台和工具上运行,从而促进更加开放和协作的容器生态系统。
容器为何有用?
- 可移植性:容器可以在任何支持 OCI 兼容运行时的系统上运行,确保应用程序在不同环境中的行为一致。
- 效率:容器共享主机系统的内核,与虚拟机相比,它们更轻量且启动速度更快。
- 可扩展性:容器可以轻松扩大或缩小以处理不同的负载。
- 一致性:容器通过封装所有依赖项和配置来减少“它在我的计算机上运行”的问题。
容器、虚拟机和裸机
裸机:
- 直接在物理硬件上运行,无需任何虚拟化。
- 提供最高性能和对硬件资源的直接访问。
- 最适合需要完全控制硬件的高性能工作负载和应用程序。
虚拟机(VM):
- 包括完整的操作系统,使它们变得更重。
- 需要更多资源并且需要更长时间才能启动。
- 适合在单台物理机上运行多个OS环境。
容器:
- 共享主机操作系统内核,使其变得轻量级。
- 使用更少的内存并快速启动。
- 非常适合微服务和快速部署。
| 方面 | 容器 | 虚拟机 | 裸机 | 
|---|---|---|---|
| 资源效率 | 高的 | 缓和 | 最高 | 
| 启动时间 | 秒 | 分钟 | 不适用 | 
| *隔离 * | 流程级 | 完整的操作系统级别 | 完全物理隔离 | 
| 可移植性 | 非常高 | 缓和 | 低的 | 
| 表现 | 近原生 | 缓和 | 本国的 | 
| 用例 | 微服务、CI/CD 管道 | 遗留应用程序、操作系统测试 | 高性能计算 | 
Docker术语
- Dockerfile:包含构建 Docker 镜像的说明的文本文件。
- 镜像:用于创建容器的只读模板。镜像由 Dockerfile 构建,并遵循 OCI 镜像规范。
- 容器:镜像的可运行实例。容器可以被启动、停止和删除。
- 注册表:Docker 镜像的存储库。Docker Hub 是一个流行的公共注册表,其他符合 OCI 标准的注册表包括 Harbor 和 Quay。
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 容器。
- 创建 Python 脚本:将以下代码保存在名为的文件中app.py:
   print("Hello, Docker!")
- 创建 Dockerfile:创建一个名为的文件,Dockerfile内容如下:
   FROM python:3.9-slim
   COPY app.py /app.py
   CMD ["python", "/app.py"]
- 构建 Docker 镜像:
   docker build -t python-app .
- 运行 Docker 容器:
   docker run python-app
这将输出:
   Hello, Docker!
结论
Docker 让使用容器构建、部署和运行应用程序变得轻而易举。Docker 遵循 OCI 标准,确保容器世界中的一切都能无缝协作。容器具有极高的效率、可移植性和可扩展性,因此成为现代软件开发的核心。如果您了解 Docker 以及它如何与 OCI 协同工作,那么您可以使用这项技术来加速您的工作流程,并确保您的应用程序在任何平台上都能正常运行。
下周我将深入探讨 docker 架构,敬请关注。
文章来源:https://dev.to/juniourrau/introduction-to-docker-core-concepts-and-basics-for-beginners-4n0h 后端开发教程 - Java、Spring Boot 实战 - msg200.com
            后端开发教程 - Java、Spring Boot 实战 - msg200.com
          






