Docker 架构及镜像源推荐

架构概述

Docker 架构是基于客户端-服务器模式的,其中包括多个关键组件,确保容器化应用的高效构建、管理和运行。
Docker 的架构设计使得开发者能够轻松地将应用程序与其所有依赖封装在一个可移植的容器中,并在不同的环境中一致地运行。
Docker 使用客户端-服务器 (C/S) 架构模式,使用远程 API 来管理和创建 Docker 容器。
Docker 容器通过 Docker 镜像来创建。

容器与镜像的关系

容器与镜像的关系类似于面向对象编程中的对象与类:

Docker面向对象
容器对象
镜像

架构示意图

在这里插入图片描述

Docker 架构的工作流程

  • 构建镜像:使用 Dockerfile 创建镜像。
  • 推送镜像到注册表:将镜像上传到 Docker Hub 或私有注册表中。
  • 拉取镜像:通过 docker pull 从注册表中拉取镜像。
  • 运行容器:使用镜像创建并启动容器。
  • 管理容器:使用 Docker 客户端命令管理正在运行的容器(例如查看日志、停止容器、查看资源使用情况等)。
  • 网络与存储:容器之间通过 Docker 网络连接,数据通过 Docker 卷或绑定挂载进行持久化。

核心组件及其工作机制

1. Docker 客户端(Docker Client)

Docker 客户端

Docker 客户端是用户与 Docker 守护进程交互的命令行界面(CLI)。它是用户与 Docker 系统的主要交互方式,用户通过 Docker CLI 发出命令,这些命令被发送到 Docker 守护进程, 由守护进程执行相应的操作。

功能:
  • 允许用户使用命令与 Docker 守护进程通信,如创建容器、构建镜像、查看容器状态等。
  • Docker 客户端与 Docker 守护进程之间通过 REST API 或 Unix 套接字通信。
常用命令:
  • docker run:运行容器
  • docker ps:列出正在运行的容器
  • docker build:构建 Docker 镜像
  • docker exec:在容器中执行命令

2. Docker 守护进程(Docker Daemon)

Docker 守护进程

Docker 守护进程(通常是 dockerd)是 Docker 架构的核心,负责管理容器生命周期、 构建镜像、分发镜像等任务。守护进程通常以后台进程的方式运行,等待来自 Docker 客户端的 API 请求。
功能:

  • 启动和停止容器
  • 构建、拉取和推送镜像
  • 管理容器的网络和存储
  • 启动、停止、查看容器日志等
  • 与 Docker 注册表进行通信,管理镜像的存储与分发

启动 Docker 守护进程(通常是自动启动的):

sudo systemctl start docker

3. Docker 引擎 API(Docker Engine API)

Docker 引擎 API

Docker 引擎 API 是 Docker 提供的 RESTful 接口,允许外部客户端与 Docker 守护进程进行通信。通过这个 API,用户可以执行各种操作,如启动容器、构建镜像、 查看容器状态等。

功能:
  • 向 Docker 守护进程发送 HTTP 请求,实现容器、镜像的管理
  • 提供 RESTful 接口,允许通过编程与 Docker 进行交互

查询当前 Docker 守护进程的版本:

curl --unix-socket /var/run/docker.sock http://localhost/version

4. Docker 容器(Docker Containers)

Docker 容器

容器是 Docker 的执行环境,它是轻量级、独立且可执行的软件包。容器是从 Docker 镜像启动的,包含了运行某个应用程序所需的一切——从操作系统库到应用程序代码。

功能:
  • 提供独立的运行环境,确保应用程序在不同的环境中具有一致的行为
  • 容器是临时的,通常在任务完成后被销毁

启动一个容器:

docker run -d ubuntu

5. Docker 镜像(Docker Images)

Docker 镜像

Docker 镜像是容器的只读模板。每个镜像都包含了应用程序运行所需的操作系统、运行时、 库、环境变量和应用代码等。镜像是静态的,用户可以根据镜像启动容器。

功能:
  • 镜像是构建容器的基础,每个容器实例化时都会使用镜像
  • 镜像是只读的,不同容器使用同一个镜像时,容器中的文件系统层是独立的

拉取 Ubuntu 镜像:

docker pull ubuntu

6. Docker 仓库(Docker Registries)

Docker 仓库

Docker 仓库是用来存储 Docker 镜像的地方,最常用的公共仓库是 Docker Hub。用户可以从 Docker Hub 下载镜像,也可以上传自己的镜像分享给其他人。

功能:
  • 存储 Docker 镜像
  • 提供镜像的上传和下载功能

推送镜像到 Docker Hub:

docker push <username>/<image_name>

7. Docker Compose

Docker Compose

Docker Compose 是一个用于定义和运行多容器 Docker 应用的工具。通过 Compose, 用户可以使用一个 docker-compose.yml 配置文件定义多个容器(服务),并可以通过一个命令启动这些容器。

功能:
  • 定义和运行多个容器组成的应用
  • 通过 YAML 文件来配置应用的服务、网络和卷等

创建一个简单的 docker-compose.yml 文件:

version: '3'
services:
  web:
    image: nginx
    ports:
      - "8080:80"
  db:
    image: mysql
    environment:
      MYSQL_ROOT_PASSWORD: example

启动 Compose 定义的所有服务:

docker-compose up

8. Docker Swarm

Docker Swarm

Docker Swarm 是 Docker 提供的集群管理和调度工具。它允许将多个 Docker 主机(节点) 组织成一个集群,并通过 Swarm 集群管理工具来调度和管理容器。

功能:
  • 管理多节点 Docker 集群
  • 通过调度器管理容器的部署和扩展

初始化 Swarm 集群:

docker swarm init

9. Docker 网络(Docker Networks)

Docker 网络

Docker 网络允许容器之间相互通信,并与外部世界进行连接。Docker 提供了多种网络模式来满足 不同的需求,如 bridge 网络(默认)、host 网络和 overlay 网络等。

功能:
  • 管理容器间的网络通信
  • 支持不同的网络模式,以适应不同场景下的需求

创建一个自定义网络并将容器连接到该网络:

docker network create my_network
docker run -d --network my_network ubuntu

10. Docker 卷(Docker Volumes)

Docker 卷

Docker 卷是一种数据持久化机制,允许数据在容器之间共享,并且独立于容器的生命周期。 与容器文件系统不同,卷的内容不会随着容器的销毁而丢失,适用于数据库等需要持久存储的应用。

功能:
  • 允许容器间共享数据
  • 保证数据持久化,独立于容器的生命周期

创建并挂载卷:

docker volume create my_volume
docker run -d -v my_volume:/data ubuntu

配置Docker镜像加速

国内从 DockerHub 拉取镜像有时会遇到困难,此时通过可以配置镜像加速器来提升获取 Docker 镜像的速度。Docker 镜像源配置支持 Linux、Windows 和 macOS 等多个平台,您可以根据使用的操作系统选择对应的配置方法。 关于镜像加速,推荐使用毫秒镜像

bash
curl -s https://static.1ms.run/1ms-helper/scripts/install.sh | sudo bash /dev/stdin config:mirror

登录毫秒镜像

高级用户加速更快一步
推荐使用【专属加速域名】功能(大幅提升账户安全、更灵活的控制)
注意:下面的命令仅配置登录,没有配置镜像,如果没执行【配置Docker镜像加速】则请执行

bash
curl -s https://static.1ms.run/1ms-helper/scripts/install.sh | sudo bash /dev/stdin config:account
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

木雷坞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值