Docker 就像一个神奇的工具箱,专为开发者设计。它让开发者能够构建、分发和管理他们的应用程序,这些应用程序被封装在小巧便携的盒子中,称为容器。容器就像虚拟房间,但比传统的虚拟机 (VM) 更快和更高效。多亏了 Docker,容器已经变得非常流行,并已成为现代软件开发的必备工具。
……
Docker 是什么?
Docker容器简介
Docker 是一个开源的平台,它自动化了应用部署到容器的过程。容器包含了运行应用所需的所有内容,包括代码、运行时环境、库和系统工具。Docker 提供给开发者的工具用于构建、管理和分发这些容器。
……
(OCI)
什么是开放容器倡议组织 (OCI)?
开放容器倡议组织 (OCI) 是由 Linux 基金会于 2015 年成立的一个开放治理组织。其目标是为容器运行时环境和镜像规范创建行业标准,确保容器生态系统之间的互操作性。
Docker 最初开发了自己的容器运行时和镜像格式。然而,随着容器的快速发展和对更广泛标准化的需求,Docker 将其容器运行时技术 runc 贡献给了 OCI。如今,Docker 的生态系统遵循 OCI 标准,使得 Docker 容器可以与其他符合 OCI 规范的运行时和工具无缝集成。
通过遵守OCI标准,Docker确保其容器和映像能在不同平台和工具上运行,促进了更加开放和协作的容器生态。
此处省略内容
容器有什么用呢?
- 便携性:容器可以在任何支持OCI兼容运行时的系统上运行,确保应用程序在不同环境中表现一致。
- 高效性:容器共享主机系统的内核,因此相比于虚拟机,它们更轻便且启动速度快。
- 可扩展性:容器可以根据负载轻松扩展或缩减。
- 一致性:容器通过封装所有依赖和配置,减少了“在我的机器上可以运行”的问题。
此处省略内容
容器 vs. 虚拟机 vs. 物理机
裸机 :
- 直接运行在物理硬件上,无需虚拟化层。
- 提供最佳性能,并可直接访问硬件资源。
- 最适合高性能工作负载和需要完全控制硬件的应用。
虚拟机(VMs):
- 自带完整操作系统,因此更重。
- 需要更多资源,启动时间也更长。
- 适合在一台物理机上运行多个操作系统。
容器:
- 共享主机操作系统内核,使它们更轻便。
- 占用内存少,启动快。
- 非常适合微服务和快速部署。
看看这个容器的图片
方面 | 容器 | 虚拟机 | 裸金属 |
---|---|---|---|
资源效率 | 高 | 中等 | 最高 |
启动时间 | 数秒 | 数分钟 | 不适用(N/A) |
隔离性 | 进程级 | 操作系统级别 | 完全物理隔离 |
可移植性 | 非常高 | 中等 | 低 |
性能 | 接近本机 | 中等 | 本机 |
应用场景 | 微服务、CI/CD管道 | 传统应用、操作系统测试 | 高性能计算, |
Docker 术语表
- Dockerfile : 一个包含构建Docker镜像指令的文本文件,用于指导如何创建Docker镜像。
- 镜像 :通过Dockerfile构建的镜像是一个用于创建容器的只读模板,并遵循OCI镜像规范。
- 容器 :镜像的一个可运行实例。容器可以被启动、停止和删除。
- 仓库(Registry) :存放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>
:将容器从<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容器
让我们创建一个简单的 Docker 容器来运行 Python 脚本。
- 创建一个Python脚本文件:将代码保存到名为
app.py
的文件中:
print("嗨,Docker!")
点击这里进入或退出全屏
- 创建一个叫
Dockerfile
的文件,包含以下内容:
# 使用Python 3.9-slim作为基础镜像
FROM python:3.9-slim
# 将app.py复制到镜像中的/app.py
COPY app.py /app.py
# 设置启动命令为运行/app.py
CMD ["python", "/app.py"]
全屏显示 退出全屏
- 构建 Docker 镜像
docker build -t python-app . # 使用Docker构建一个名为python-app的镜像
全屏显示 退出全屏
运行一下您的Docker容器
docker run python-app
运行一个名为python-app的Docker容器 (Running a Docker container named python-app)
全屏模式(按ESC退出)
这将会显示:,
嘿,Docker!
切换到全屏模式,退出全屏模式
总结
Docker 使得使用容器构建、部署和运行应用程序变得非常简单。通过遵循 OCI 标准,Docker 确保在容器世界里,所有组件都能无缝协作。容器非常高效、便携且易于扩展,这就是为什么它们是现代软件开发的核心部分。如果你熟悉 Docker 以及它如何与 OCI 协同工作,你可以利用这项技术加速工作流程,并确保你的应用程序能在任何平台上顺利运行。
下周我将研究Docker技术,敬请关注。
共同学习,写下你的评论
评论加载中...
作者其他优质文章