CodeGym /课程 /Docker SELF /Docker 的基本术语

Docker 的基本术语

Docker SELF
第 10 级 , 课程 0
可用

6.1 镜像 (Images)

想要高效使用 Docker,首先需要理解几个关键术语:镜像,容器注册表。咱们一起来搞清楚它们的用途以及它们之间是怎么协作的。

Docker 镜像 就是一个模板,用来创建容器。镜像包括了运行应用程序所需的一切:操作系统、应用程序、库与依赖、还有配置文件。如果类比到 OOP: Docker 镜像就像是一个类,而容器就是类的对象。镜像是通过 Dockerfile 来创建的,Dockerfile 是一个描述创建镜像步骤的文本文件。

镜像的主要特性:

  1. 分层结构: 镜像由多个层组成。每个镜像都有一个基础层,后续的每一层都是对上一层的修改。这种设计不仅能节省空间,还加速了下载速度。
  2. 可复用性: 一个镜像可以被用来创建多个容器。
  3. 可移植性: 镜像可以在不同的系统中互相传递,这使得它们在开发、测试以及在不同环境中部署应用非常理想。

镜像的使用示例:

创建自己的镜像: 你可以通过编写 Dockerfile 来创建你自己的镜像,在文件中指定应用程序及其依赖的设置。

dockerfile

FROM ubuntu:latest
RUN apt-get update && apt-get install -y python3
COPY . /app
CMD ["python3", "/app/app.py"]

使用现成的镜像: 你也可以使用 Docker Hub 上已有的镜像,快速部署一些标准的应用程序,比如 Web 服务器或者数据库。

Terminal

docker pull nginx 

这个命令会从 Docker Hub 公共存储库中下载 nginx 镜像。

6.2 容器(Containers)

Docker 容器是镜像的运行实例。容器将应用程序及其依赖项隔离在单独的运行环境中,这样可以独立于主机系统和其他容器运行。容器非常轻量,因为它们使用的是主机操作系统的内核,而不像虚拟机需要创建一个单独的内核。

容器的主要特性:

  • 隔离: 容器将应用程序隔离,保证它们独立运行,并防止依赖冲突。
  • 轻量: 与虚拟机相比,容器消耗更少的资源,因为它们不需要单独的操作系统。
  • 快速启动: 容器的启动和停止速度比虚拟机快很多,这使得它们非常适合动态环境和扩展。

容器的使用示例:

运行容器: 你可以使用 docker run 命令从镜像运行容器。

Terminal

docker run -d -p 80:80 --name mynginx nginx

管理容器: Docker 提供了用于管理容器的命令:start、stop、restart、rm 和 exec。

Terminal

docker stop mynginx
docker rm mynginx

你将在接下来的讲座中了解所有命令及其参数。

6.3 注册表 (Registries)

Docker注册表 是Docker镜像的存储库。注册表让开发者和组织可以存储、管理和分发容器镜像。有公开的和私有的注册表。

注册表的主要特点:

  • 公开注册表: 类似Docker Hub,提供由社区或官方开发者创建的大量镜像的访问权限。
  • 私有注册表: 用于在组织内部存储和管理镜像,提供访问控制和安全性。
  • 与CI/CD集成: 注册表可以轻松与持续集成和部署系统集成,从而自动化镜像的构建和部署流程。

注册表的使用示例:

1. Docker Hub: 公共的(也是最受欢迎的)Docker镜像注册表。提供许多现成的(且通常是经过验证的,可以通过下载统计看到)镜像的访问权限。

Terminal

docker pull nginx
docker push myusername/myimage:tag  

2. 私有注册表: 你可以通过Docker Registry设置并使用自己的注册表。

Terminal

docker run -d -p 5000:5000 --name registry registry:2
docker tag myimage localhost:5000/myimage
docker push localhost:5000/myimage

镜像、容器和注册表的交互

这三个组件密切相关,构成了使用Docker的基础:

  • 创建镜像: 开发者通过Dockerfile创建镜像并将其保存在本地。
  • 将镜像上传到注册表: 镜像上传到注册表(比如Docker Hub或私有注册表),在这里存储,并可供其他用户或系统使用。
  • 启动容器: 用户从注册表下载镜像并启动容器,从而隔离应用程序并确保其运行。

6.4 编排 (Orchestration)

编排 是在分布式环境中管理多个容器的过程。编排工具帮助自动化部署、扩展和管理容器。

  • Kubernetes: 最流行的容器编排平台,可以管理不同节点上的容器集群。
  • Docker Swarm: Docker内置的编排平台,用于创建和管理Docker集群。
  • 编排功能: 自动扩展、自我修复、网络管理和负载均衡。

6.5 网络 (Networks)

Docker 的网络功能让容器之间以及容器与外部世界互相通信。Docker 提供了几种不同类型的网络来满足各种使用场景。

  • Bridge: 默认的网络模式,由 Docker 创建。桥接网络中的容器可以互相通信。
  • Host: 容器使用主机机器的网络接口,直接访问它们。
  • Overlay: 用于在多个 Docker 守护进程之间创建网络。需要用于编排。
  • None: 禁用容器的所有网络接口。对于隔离任务非常有用。

6.6 卷 (Volumes)

卷 (Volumes) 是一种用于容器数据持久化存储的机制。它可以将数据保存到容器外部,从而避免在容器重启或删除时数据丢失。

  • 创建卷: 卷通过命令 docker volume create 创建。
  • 挂载卷: 卷通过运行时添加 -v 参数连接到容器。
  • 优势: 卷提供了方便的数据保存和容器间数据共享,并且相比绑定目录 (bind mounts),性能更好。

重要! 卷是一个虚拟硬盘,可以连接到虚拟机或容器。通常存储在宿主操作系统中,作为普通文件存在。

评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION