文章目录
一、什么是 Docker Registry
Docker Registry(镜像仓库) 是一个负责存储、管理和分发 Docker 镜像的系统。它的作用类似于代码的版本控制系统,只不过它管理的是 Docker 镜像而非代码文件。Docker Registry 提供了镜像的存储、检索、版本管理等功能,并且具备用户认证和索引功能。
Docker Registry 的主要功能:
-
存储和管理镜像:
- Docker Registry 可以存储多个镜像仓库(Repository)。每个仓库可以包含不同版本的镜像,这些镜像通过标签(Tag)区分。例如,
nginx:latest
和nginx:v1.0
就是同一个仓库的两个不同版本的镜像。
- Docker Registry 可以存储多个镜像仓库(Repository)。每个仓库可以包含不同版本的镜像,这些镜像通过标签(Tag)区分。例如,
-
镜像仓库(Repository):
- Repository 是由某一特定 Docker 镜像的所有迭代版本组成的仓库。仓库通常由 Docker 镜像的名称和标签(Tag)组成。
- 例如,
nginx
是镜像的名称,latest
是标签。你可以通过nginx:latest
来拉取最新版本的 Nginx 镜像。
-
认证功能:
- Docker Registry 提供了用户注册、登录和登出的功能。通过 Docker Registry,用户可以进行镜像的推送(push)和拉取(pull)操作。为了确保镜像的安全性和私密性,Registry 支持用户认证。
-
镜像索引:
- Docker Registry 维护一个索引,帮助用户搜索和检索镜像。当用户需要查找某个镜像时,Registry 提供了镜像的索引信息,帮助用户快速找到所需的镜像版本。
镜像的结构:
一个 Docker 容器镜像包含两个主要部分:
- 元数据:由
Dockerfile
构建出来的描述文件,这些描述文件记录了镜像的构建步骤、每一层的内容以及依赖等信息。 - 层(Layers):Docker 镜像是分层存储的,每一层表示镜像构建过程中的一次修改。每个镜像层是不可变的,可以复用,层与层之间通过
checksum
(校验和)进行关联。这些层保存在 blob 中,这些 blob 才是占用实际存储空间的部分。
Docker Registry 的组成:
-
镜像仓库(Repository):
- 一个 Registry 可以包含多个仓库,每个仓库负责存储同一类镜像的不同版本。
- 仓库名称通常按“
用户名/仓库名
”的格式进行命名。例如,docker/hello-world
是 Docker 官方提供的一个简单示例镜像的仓库。
-
标签(Tag):
- 每个仓库可以包含多个标签,用于区分同一镜像的不同版本。标签通常用于指示镜像的版本或构建状态,如
latest
、v1.0
等。
- 每个仓库可以包含多个标签,用于区分同一镜像的不同版本。标签通常用于指示镜像的版本或构建状态,如
-
镜像名称(Image Name) + 标签(Tag):
- Docker 镜像通过名称和标签来唯一标识。格式通常为
repository:tag
。例如,nginx:latest
表示nginx
镜像的最新版本。
- Docker 镜像通过名称和标签来唯一标识。格式通常为
使用例子:
- 拉取镜像:
docker pull nginx:latest
从 Docker Hub 拉取最新版本的 nginx 镜像。 - 推送镜像:
docker push myrepo/myimage:v1.0
将myimage
镜像推送到myrepo
仓库。
Docker Hub:
- Docker Hub 是最常用的公共 Docker Registry,提供了丰富的公共镜像供用户使用。用户可以从中拉取镜像,也可以将自己的镜像推送到 Docker Hub 进行共享。
二、镜像仓库分类
按是否对外开放划分(研发人员常说的):
-
公有仓库:
- 公有仓库是指放置在公有网络上的镜像仓库,用户无需登录即可下载镜像。
- 例如,Docker Hub 和 阿里云镜像仓库,它们允许任何人公开访问镜像,供全球用户使用。
- 公有仓库通常提供常用的操作系统镜像和开发工具镜像,支持快速获取、共享和分发。
-
私有仓库:
- 私有仓库是指只对特定用户或团队开放的镜像仓库,通常用于存储企业或个人专有的镜像。
- 私有仓库一般部署在企业内部网络中,未经授权的用户无法访问,确保镜像的安全性。
- 适用于企业内部的应用部署和开发场景,避免将敏感或专有的数据暴露给外部。
按供应商和面向群体划分:
-
Sponsor(赞助)Registry:
- 这种类型的 Registry 由第三方提供,目的是为了支持 Docker 社区版用户和客户使用。
- 它们通常作为 Docker 镜像的公共存储位置,用户可以通过 Docker 客户端进行镜像的拉取(pull)和推送(push)。
- 例如,Docker Hub 就是一个典型的赞助型 Registry,Docker 官方会为其提供支持,并且允许社区用户免费使用。
-
Mirror(镜像)Registry:
- 镜像 Registry 是由第三方提供的 Registry,通常仅供特定客户或团队使用。
- 这些 Registry 提供镜像的副本(镜像源)供客户使用,可以降低网络延迟,提高下载速度。
- 例如,阿里云镜像仓库提供的服务需要注册账号,并且为中国用户提供更快的镜像下载速度,特别适合有特殊需求的客户。
-
Vendor(供应商)Registry:
- 供应商 Registry 由镜像的发布方或供应商提供,用于存储和分发他们的官方镜像。
- 例如,Google 和 RedHat 提供的镜像仓库服务,它们会将其自家维护的镜像(如操作系统、数据库等)存放在这些仓库中。
- 这些仓库通常会提供经过认证和优化的镜像,确保企业和开发者可以获得高质量、稳定的镜像版本。
-
Private Registry:
- 私有 Registry 是指由企业或组织自己搭建和维护的镜像仓库,通常部署在内网或专用的服务器上。
- 它们通常没有防火墙和额外的安全层,所有的镜像存储和传输都局限于内部使用。
- 适用于内部应用部署和开发流程中,避免外部访问并确保镜像的安全性。常用于敏感或专有的镜像存储。
三、镜像仓库工作机制
-
镜像仓库使用流程
-
实际开发中如何使用镜像仓库
在开发过程中,镜像通常由开发人员在本地构建或修改,随后将其推送到 “公共” 或 “私有” 的
Registry
中保存。这些镜像可以供其他开发人员或团队使用,例如用于将应用部署到不同的环境中。镜像仓库为整个开发、测试、预发布、生产等流程提供了镜像的管理与存储,确保团队成员能够共享与复用镜像。镜像仓库的使用场景可以涵盖从开发到生产的整个生命周期。
名词解释
- 开发环境:开发人员用于编写和调试应用程序的环境。在该环境中,代码的功能和性能通常会进行初步验证。
- 测试环境:开发完成后,应用被发布到测试环境供测试人员进行功能、性能等方面的验证,确保应用无重大问题。
- 预发布环境:该环境模拟生产环境,用来进行最终测试,确保应用在接近生产环境的环境下能正常运行。
- 生产环境:应用部署并面向终端用户的环境。它是真正的线上环境,需要高度可靠与稳定。
-
镜像仓库的拉取机制
当启动一个 Docker 容器时,Docker 引擎(
docker daemon
)会首先检查本地是否已有需要的镜像。如果该镜像已经存在于本地,它会直接使用本地的镜像来启动容器。如果本地没有找到所需的镜像,Docker 引擎会从远程的镜像仓库(
Registry
)中拉取该镜像。在拉取过程中,Docker 会从指定的镜像仓库下载最新的镜像版本,并将其保存在本地。在本地成功下载并保存镜像后,后续启动容器时将直接使用本地镜像,避免重复下载。
这种拉取机制确保了容器能够快速启动,且镜像的下载和存储过程是透明且自动化的,大大提高了部署和管理效率。
四、常用的镜像仓库
1. DockerHub
Docker Hub 是 Docker 提供的官方托管存储库服务,用于查找、存储和共享容器镜像。其主要特点包括:
- 私有仓库:个人用户可以创建自己的私有仓库,发布并管理自己的镜像。
- 镜像检索:提供镜像检索功能,方便用户查找所需的镜像。
- 丰富的镜像资源:包含官方镜像和认证组织提供的镜像,涵盖各种应用场景。
- 自动构建:支持从 GitHub 或 Bitbucket 自动构建容器镜像,并将它们推送到 Docker Hub。
- Webhook 支持:Webhook 是基于 HTTP 的回调机制,当某个事件发生时,服务器会将相关信息推送到预设的 URL。
2. 国内镜像源
由于从 Docker Hub 拉取镜像时可能会遇到网络延迟或不稳定问题,国内用户可以通过配置镜像加速器来加速镜像的下载。以下是常见的国内镜像加速器:
- 阿里云加速器:阿里云提供了官方的镜像加速服务。用户可以登录阿里云控制台,获取加速器地址。
- 网易云加速器:加速器地址为
https://hub-mirror.c.163.com
。 - 百度云加速器:加速器地址为
https://mirror.baidubce.com
。
配置镜像加速器
要配置镜像加速器,可以编辑 /etc/docker/daemon.json
文件(如果文件不存在,可以手动创建),添加以下内容:
{"registry-mirrors": ["https://hub-mirror.c.163.com","https://mirror.baidubce.com"]
}
重新加载配置并重启 Docker
配置完成后,需要重新加载 Docker 配置并重启 Docker 服务,执行以下命令:
# 加载配置
sudo systemctl daemon-reload# 重启 Docker 服务
sudo systemctl restart docker# 查看 Docker 服务状态
sudo systemctl status docker
3. 私有化仓库
私有镜像仓库是部署在公司或组织内部的仓库,用于存储和分发公司自己构建的 Docker 镜像。私有仓库可以有效保证镜像的安全性和隐私性,并且通常在 CI/CD 流程中使用。
常见的私有化仓库工具
-
Harbor
- Harbor 是 VMware 公司开源的一款企业级 Docker Registry 项目,旨在帮助企业快速搭建和管理 Docker 镜像仓库。
- 基于 Docker 官方的 Registry,Harbor 提供了以下企业级功能:
- 管理 UI 界面。
- 基于角色的访问控制(RBAC)。
- 集成 Active Directory(AD)或 LDAP。
- 审计日志功能。
- 支持中文界面。
- Harbor 组件基于 Docker 容器构建,通常通过 Docker Compose 部署。
-
Nexus
- Nexus 是由 Sonatype 公司发布的一款仓库管理工具,广泛用于 Maven 私服和 Docker 私服。
- 它支持存储和管理 Docker 镜像,并且提供了丰富的仓库管理功能,适用于组织内部的镜像管理。
-
Docker Registry
- Docker 官方提供的私有仓库服务,功能与 Docker Hub 类似,但用于内部使用。
- 用户可以搭建自己的私有 Registry 服务,确保镜像的私密性和安全性,尤其适用于需要控制镜像上传和拉取权限的企业。
五、镜像仓库相关命令
仓库命令
命令 | 别名 | 功能 |
---|---|---|
docker login | 登录仓库 | |
docker pull | docker image pull | 拉取镜像 |
docker push | docker image push | 推送镜像 |
docker search | 查找镜像 | |
docker logout | 登出仓 |
详细介绍
-
docker login
-
功能:
该命令用于登录到 Docker 镜像仓库(如 Docker Hub 或私有镜像仓库)。登录后,可以进行镜像的推送和拉取等操作。 -
语法:
docker login [OPTIONS] [SERVER]
-
关键参数:
-u, --username
:指定用户名。-p, --password
:指定密码(不推荐在命令行中直接使用密码)。--password-stdin
:从标准输入读取密码(更安全的方式)。SERVER
:指定仓库地址,默认是 Docker Hub。
-
样例:
# 登录到 Docker Hub docker login -u myusername -p mypassword# 从标准输入读取密码 echo "mypassword" | docker login -u myusername --password-stdin# 登录到指定的私有仓库 docker login -u myusername -p mypassword myprivaterepo.com
-
-
docker pull
-
功能:
该命令用于从 Docker 镜像仓库(如 Docker Hub 或私有仓库)拉取镜像到本地。 -
语法:
docker pull [OPTIONS] IMAGE[:TAG]
-
关键参数:
IMAGE
:指定要拉取的镜像名称。TAG
:指定镜像标签,默认为latest
。
-
样例:
# 拉取 Docker Hub 上的官方 Ubuntu 镜像 docker pull ubuntu# 拉取指定标签的镜像 docker pull ubuntu:20.04# 拉取私有仓库中的镜像 docker pull myprivaterepo.com/myimage:latest
-
-
docker push
-
功能:
该命令用于将本地镜像推送到 Docker 镜像仓库。 -
语法:
docker push [OPTIONS] IMAGE[:TAG]
-
关键参数:
IMAGE
:指定要推送的镜像名称。TAG
:指定镜像标签。
-
样例:
# 推送本地的镜像到 Docker Hub docker push myusername/myimage:latest# 推送本地镜像到私有仓库 docker push myprivaterepo.com/myimage:latest
-
-
docker search
-
功能:
该命令用于在 Docker Hub 或指定的镜像仓库中搜索镜像。 -
语法:
docker search [OPTIONS] TERM
-
关键参数:
TERM
:搜索的关键字。--filter
或-f
:按特定条件过滤搜索结果,例如根据星级、是否官方镜像等。--no-trunc
:不截断搜索结果。
-
样例:
# 在 Docker Hub 搜索 Ubuntu 镜像 docker search ubuntu# 搜索官方的镜像,并且只显示带星级评分的镜像 docker search --filter "is-official=true" --filter "stars=10" ubuntu# 搜索镜像时不截断结果 docker search --no-trunc mysql
-
-
docker logout
-
功能:
该命令用于从 Docker 镜像仓库登出。登出后,无法进行推送或拉取操作,除非重新登录。 -
语法:
docker logout [SERVER]
-
关键参数:
SERVER
:指定要登出的仓库地址。如果没有指定,默认为 Docker Hub。
-
样例:
# 登出 Docker Hub docker logout# 登出指定的私有仓库 docker logout myprivaterepo.com
-
镜像命令
以下是您要求的三个镜像相关命令(docker images
、docker image inspect
、docker image tag
)的详细介绍,按照您提供的格式:
docker images
-
功能:
该命令用于列出本地 Docker 镜像的列表,显示镜像的基本信息,包括镜像的 ID、标签、创建时间和大小。 -
语法:
docker images [OPTIONS] [REPOSITORY[:TAG]]
-
关键参数:
REPOSITORY
:指定要列出的镜像仓库。如果未指定,列出所有仓库的镜像。TAG
:指定要列出的镜像标签。如果未指定,列出所有标签的镜像。-a, --all
:显示所有镜像,包括中间层镜像。-q, --quiet
:只列出镜像的 ID。--digests
:显示镜像的摘要信息。
-
样例:
# 列出所有镜像 docker images# 列出指定仓库的镜像 docker images ubuntu# 仅列出镜像的 ID docker images -q# 显示镜像的摘要信息 docker images --digests
-
docker image inspect
-
功能:
该命令用于获取指定镜像的详细信息,以 JSON 格式输出镜像的元数据,如镜像的配置、层、环境变量等。 -
语法:
docker image inspect [OPTIONS] IMAGE [IMAGE...]
-
关键参数:
IMAGE
:指定要查看详细信息的镜像 ID 或镜像名称。-f, --format
:使用 Go 模板格式化输出结果,可以根据需要提取特定的信息。--type
:指定要返回的对象类型(如image
、container
等)。
-
样例:
# 查看指定镜像的详细信息 docker image inspect ubuntu# 查看多个镜像的详细信息 docker image inspect ubuntu alpine# 使用格式化输出,只显示镜像的创建时间 docker image inspect -f '{{.Created}}' ubuntu
-
docker image tag
(别名:docker tag
)-
功能:
该命令用于为本地镜像打标签。通过为镜像打标签,可以为同一个镜像指定多个标签,或者将镜像推送到其他仓库。 -
语法:
docker image tag [OPTIONS] SOURCE_IMAGE TARGET_IMAGE
-
关键参数:
SOURCE_IMAGE
:要打标签的源镜像的 ID 或名称。TARGET_IMAGE
:目标镜像的名称(包括仓库地址和标签)。-f, --force
:强制覆盖已有标签。--help
:显示帮助信息。
-
样例:
# 为本地镜像 ubuntu 打标签,将其命名为 myrepo/ubuntu:v1 docker image tag ubuntu myrepo/ubuntu:v1# 将本地镜像打标签并推送到指定的仓库 docker image tag ubuntu myprivaterepo.com/ubuntu:v1 docker push myprivaterepo.com/ubuntu:v1# 强制覆盖现有标签 docker image tag -f ubuntu myrepo/ubuntu:v2
-
容器命令
-
docker run
-
功能:
该命令用于创建并启动一个新的容器。docker run
是 Docker 中最常用的命令之一,允许用户从指定镜像创建容器,并且可以指定容器的配置、端口映射、挂载卷等参数。 -
语法:
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
-
关键参数:
-
样例:
# 从 ubuntu 镜像创建并启动一个容器,交互模式下运行 bash docker run -it ubuntu bash# 在后台启动容器并映射端口 docker run -d -p 8080:80 nginx# 创建并启动容器,挂载宿主机目录到容器 docker run -d -v /path/to/host/dir:/path/in/container nginx# 启动容器并设置环境变量 docker run -d -e "ENV_VAR=value" ubuntu# 使用 --name 为容器指定一个名称 docker run -d --name mynginx nginx# 容器停止后自动删除容器 docker run --rm ubuntu
-
-
docker ps
-
功能:
该命令用于列出当前正在运行的容器。docker ps
可以帮助用户查看容器的状态、容器 ID、镜像、端口映射等信息。 -
语法:
docker ps [OPTIONS]
-
关键参数:
-
样例:
# 列出所有正在运行的容器 docker ps# 列出所有容器(包括已经停止的容器) docker ps -a# 仅显示容器的 ID docker ps -q# 过滤显示特定镜像的容器 docker ps -f "ancestor=ubuntu"# 显示格式化后的输出,仅显示容器名称和状态 docker ps --format "{{.Names}}: {{.Status}}"# 显示完整的容器 ID docker ps --no-trunc
-
docker___530">六、docker 镜像仓库 练习
练习一:搭建一个 nginx 服务
知识
Web 服务器(网站服务器,也称www服务器):是指驻留在互联网上某种类型计算机的程序。主要功能是 提供网上信息浏览服务。
Nginx 是一款功能强大且高效的开源软件,广泛应用于 Web 服务器和反向代理服务器的角色。它能够处理大量的并发请求,提供高性能的负载均衡、内容缓存、反向代理等功能。Nginx 的主要应用场景包括网站发布、反向代理和负载均衡等,它常常用于构建高性能、高可用性的 Web 应用架构。
正向代理与反向代理
在介绍 Nginx 的反向代理功能之前,了解正向代理和反向代理的区别非常重要。
正向代理
正向代理是代理服务器代替客户端访问目标服务器的方式。客户端需要访问一个外部网站,但由于各种原因(如防火墙或地理限制),无法直接访问,这时可以通过正向代理来进行访问。正向代理代理的是客户端,客户端是知道自己访问的目标的,而目标服务器并不知道客户端的真实 IP 地址。
举例:我们无法直接访问 Google,因为受到网络限制或防火墙的影响。但可以通过 VPN(正向代理)连接到代理服务器,代理服务器代替我们访问 Google。此时,Google 知道的是代理服务器的 IP 地址,而非客户端的真实 IP。
反向代理
与正向代理相对,反向代理代理的是服务器端。反向代理的工作原理是客户端发起请求时,代理服务器接收到请求并转发给真实的服务器。客户端并不知晓这个请求是被代理转发的,它只知道访问的是代理服务器。
在 Nginx 中,反向代理的作用非常关键,尤其是在负载均衡和保护后端服务器时。反向代理为客户端提供透明的访问体验,所有的请求都通过代理服务器转发,客户端只知道目标地址是代理服务器,而不知道背后的具体服务器细节。
举例:当我们访问百度时,我们实际上并不直接连接到百度的所有服务器,而是通过 Nginx 反向代理服务器,这样 Nginx 可以转发我们的请求到实际的百度服务器上处理。对于客户端来说,整个过程是透明的。
Nginx 可以作为反向代理服务器处理来自客户端的请求,然后将请求转发到多个后端服务器上,这样可以实现负载均衡,提高系统的可用性和扩展性。Nginx 还可以缓存内容、处理 SSL 加密、管理请求速率等,是现代 Web 架构中不可或缺的组成部分。
下面展示一下如何启动nginx:
以ubuntu为例,首先通过下面的命令安装nginx:
apt install nginx -y
可以通过下面的命令查看是否成功安装,并启动nginx
# 查看版本
nginx -v
# 手动启动
nginx
当我们通过服务器启动nginx时,此时在浏览器中访问该ip地址,此时页面首页就是nginx的首页:
实操
-
我们可以通过
dockers search
查找镜像docker search nginx
-
随后通过
docker pull
拉取指定的镜像ubuntu@VM-8-2-ubuntu:~$ docker pull nginx:latest latest: Pulling from library/nginx bc0965b23a04: Pull complete 650ee30bbe5e: Pull complete 8cc1569e58f5: Pull complete 362f35df001b: Pull complete 13e320bf29cd: Pull complete 7b50399908e1: Pull complete 57b64962dd94: Pull complete Digest: sha256:fb197595ebe76b9c0c14ab68159fd3c08bd067ec62300583543f0ebda353b5be Status: Downloaded newer image for nginx:latest docker.io/library/nginx:latest
-
通过docker images可用查看所有镜像
ubuntu@VM-8-2-ubuntu:~$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest 66f8bdd3810c 3 weeks ago 192MB
-
通过下面的命令运行镜像
# <name> 为指定的容器名 <port> 为指定的端口号 docker run --name <name> --rm -it -p <port>:80 nginx:latest bash
-
启动nginx
ubuntu@VM-8-2-ubuntu:~$ docker run --name nginx1 --rm -it -p 8080:80 nginx:latest bash
root@2ccd88631580:/# nginx
2024/12/25 01:22:53 [notice] 7#7: using the "epoll" event method
2024/12/25 01:22:53 [notice] 7#7: nginx/1.27.3
2024/12/25 01:22:53 [notice] 7#7: built by gcc 12.2.0 (Debian 12.2.0-14)
2024/12/25 01:22:53 [notice] 7#7: OS: Linux 6.8.0-49-generic
2024/12/25 01:22:53 [notice] 7#7: getrlimit(RLIMIT_NOFILE): 1048576:1048576
2024/12/25 01:22:53 [notice] 8#8: start worker processes
2024/12/25 01:22:53 [notice] 8#8: start worker process 9
2024/12/25 01:22:53 [notice] 8#8: start worker process 10
- 此时另开一个shell并执行curl命令,可以接收到nginx初始欢迎页面的html;
ubuntu@VM-8-2-ubuntu:~$ curl 127.0.0.1
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
html { color-scheme: light dark; }
body { width: 35em; margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif; }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p><p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p><p><em>Thank you for using nginx.</em></p>
</body>
</html>
- 此时我们将shell退出,再次执行curl命令会发现ping 不通,即nginx是容器内的
root@0397436989f8:/# curl 127.0.0.1
curl: (7) Failed to connect to 127.0.0.1 port 80 after 0 ms: Couldn't connect to server
练习二:Docker hub 创建自己的私有仓库
BusyBox
BusyBox 是一个集成了许多 Unix 工具的小型软件包,旨在提供一个轻量级的、功能丰富的命令行工具集。它通常用于资源受限的环境中,如嵌入式系统、容器、路由器和其他需要小型操作系统的地方。
主要特点
-
多功能性:BusyBox 将许多常见的 Unix 工具(如
ls
,cp
,mv
,cat
,echo
,grep
,awk
,sed
,ifconfig
,ping
等)集成在一个单一的二进制文件中。每个命令实际上是同一个二进制文件的不同调用方式。 -
轻量级:由于将多个工具合并成一个单一的二进制文件,BusyBox 的文件大小通常非常小,可以有效地节省存储空间。通常它的大小仅为几百 KB。
-
可定制性:BusyBox 提供了一个配置工具,可以选择启用或禁用特定的命令和功能,以适应不同的需求。这使得它特别适合嵌入式开发。
-
兼容性:它提供了 POSIX 标准的实现,能够在没有完整 Linux 系统的情况下运行很多常见的命令和脚本。
使用场景
- 嵌入式系统:例如路由器、智能设备、网络设备等,通常需要一个小型且功能强大的操作环境,BusyBox 是理想的选择。
- Docker 容器:许多轻量级的 Docker 镜像(例如
alpine
)都使用 BusyBox 作为基础镜像,因为它非常小并且提供了大部分所需的常见命令。 - 恢复模式:在某些系统恢复环境中,BusyBox 可以作为一个紧急工具集,帮助用户执行基本的文件操作和系统修复任务。
ubuntu下我们可以通过下面的命令进行安装、检查、卸载;
# 安装
apt install -y busybox
# 检查
busybox ls
busybox ifconfig
busybox ifconfig | busybox grep lo
# 卸载
apt --purge autoremove busybox