容器技术入门与Docker环境部署

目录

一:Docker概述

1:什么是Docker?

2:Docker的优势

3:Docker的应用场景

4:Docker核心概念

(1)镜像

(2)容器

(3)仓库

二:Docker安装

1:本安装方式使用阿里云的软件仓库

三:Docker镜像操作

1:获取镜像

2:查看镜像信息

3:查看镜像的详细信息

4:修改镜像标签

5:删除镜像

6:存出镜像和载入镜像

四:Docker容器操作

1:容器的创建与启动

(1)创建容器

(2)查看所有的容器

(3)容器的运行

(4)利用容器的执行命令

(5)在启动容器时持续在后台运行

2:容器的终止

3:进入容器

4:容器导出

5:容器导入生成镜像

6:容器删除


一:Docker概述

1:什么是Docker?

如果要方便的创建运行在云平台上的应用,必须要脱离底层的硬件,同时还需要任何时间地点可获取这些资源,这正是 Docker 所能提供的。Docker 的容器技术可以在一台主机上轻松为任何应用创建一个轻量级的、可移植的、自给自足的容器。通过这种容器打包应用程序,意味着简化了重新部署、调试这些琐碎的重复工作,极大的提高了工作效率。

docker 是目前较为主流的容器技术。容器技术是一种轻量级的虚拟化技术,它可以让应用程序及其依赖项打包在一个独立的单元中运行,从而实现应用的隔离、可移植性和资源的高效利用。以下从概念、原理、与传统虚拟化技术的对比、优势、应用场景等方面详细介绍容器技术。

容器就像是一个独立的 "盒子",这个 "盒子" 里装着运行某个应用所需要的所有东西,包括代码、运行时环境、系统工具、系统库等。不同的容器之间相互隔离,每个容器都有自己独立的文件系统、进程空间、网络接口等,就好像它们是在不同的机器上运行一样,但实际上它们是共享宿主机的操作系统内核。

2:Docker的优势

Docker 容器运行速度很快,启动和停止可以在秒级实现,比传统虚拟机要快很多;Docker 核心解决的问题是利用容器来实现类似虚拟机的功能,从而利用更加节省的硬件资源提供给用户更多的计算资源。因此,Docker 容器除了运行其中的应用之外,基本不消耗额外的系统资源,在保证应用性能的同时,又减小了系统开销,使得一台主机上同时运行数千个 Docker 容器成为可能。

传统虚拟化技术(如 VMware、VirtualBox 等)是通过虚拟机管理程序(Hypervisor)在物理服务器上创建多个虚拟机(VM),每个虚拟机都包含完整的操作系统。而容器技术是在操作系统层面进行虚拟化,多个容器共享宿主机的操作系统内核。

容器技术和传统虚拟化的主要区别在于

  • 资源占用:传统虚拟机需要为每个虚拟机分配独立的操作系统,这会占用大量的系统资源;而容器共享宿主机的内核,只包含应用及其依赖项,资源占用相对较少,启动速度也更快。
  • 隔离性:虚拟机提供了更高程度的隔离,因为每个虚拟机都有自己独立的操作系统;容器的隔离性相对较弱,但对于大多数应用场景来说已经足够,并且可以通过合理的配置和管理来增强隔离性。
  • 性能:由于虚拟机存在额外的虚拟化层,会带来一定的性能开销;容器直接运行在宿主机的内核上,性能损耗较小,更接近原生应用的性能。

Docker 操作方便,可以通过 Dockerfile 配置文件支持灵活的自动化创建和部署。表 1 将 Docker 容器技术与传统虚拟机的特性进行了比较。

表 1 Docker 容器与传统虚拟机的区别

特性 Docker 容器 虚拟机
启动速度 秒级 分钟级
计算能力损耗 几乎无 损耗 50% 左右
性能 接近原生 弱于
系统支持量(单机) 上千个 几十个
隔离性 资源限制 完全隔离

容器技术的优势主要体现在以下几个方面:

  • 隔离性:不同的容器之间相互隔离,一个容器的故障或异常不会影响其他容器的运行,提高了应用的稳定性和安全性。
  • 可移植性:容器将应用及其依赖项打包成一个独立的单元,使得应用可以在不同的环境中(如开发环境、测试环境、生产环境)无缝迁移和运行,避免了 "在我的机器上能运行,但在你的机器上不行" 的问题。
  • 资源高效利用:容器共享宿主机的操作系统内核,不需要为每个应用运行独立的操作系统,大大减少了资源的浪费,提高了服务器的利用率。
  • 快速部署和扩展:容器的启动速度非常快,通常只需要几秒钟,而且可以根据需要快速创建和销毁容器,方便进行应用的快速部署和弹性扩展。

3:Docker的应用场景

  • 开发环境管理:开发人员可以使用容器来创建一致的开发环境,确保团队成员之间的环境一致性,提高开发效率。
  • 持续集成和持续部署(CI/CD):在 CI/CD 流程中,容器可以帮助实现应用的快速打包、测试和部署,实现自动化的软件开发流程。
  • 微服务架构:容器技术非常适合微服务架构,每个微服务可以打包成一个独立的容器,独立开发、测试和部署,提高系统的可伸缩性和容错性。
  • 云计算:云服务提供商可以利用容器技术为用户提供更高效、灵活的计算资源,用户可以根据自己的需求快速创建和管理容器化的应用。

4:Docker核心概念

(1)镜像

镜像、容器、仓库是 Docker 的三大核心概念。其中 Docker 的镜像是创建容器的基础,类似虚拟机的快照,可以理解为一个面向 Docker 容器引擎的只读模板。例如:一个镜像可以是一个完整的 CentOS 操作系统环境,称为一个 CentOS 镜像;也可以是一个安装了 MySQL 的应用程序,称之为一个 MySQL 镜像等等。
Docker 提供了简单的机制来创建和更新现有的镜像,用户也可以从网上下载已经创建好的镜像直接使用。

(2)容器

Docker 的容器是从镜像创建的运行实例,它可以被启动、停止和删除。所创建的每一个容器都是相互隔离、互不可见,以保证安全性的平台。可以将容器看作是一个简易版的 Linux 环境,Docker 利用容器来运行和隔离应用。

(3)仓库

Docker 仓库是用来集中保存镜像的地方,当创建了自己的镜像之后,可以使用 push 命令将它上传到公有仓库(Public)或者私有仓库(Private)。当下次要在另外一台机器上使用这个镜像时,只需从仓库获取。
仓库注册服务器(Registry)是存放仓库的地方,其中包含了多个仓库。每个仓库集中存放某一类镜像,并且使用不同的标签(tag)来区分它们。目前最大的公共仓库是 docker Hub,存放了数量庞大的镜像供用户下载使用。

二:Docker安装

1:本安装方式使用阿里云的软件仓库

关闭防火墙

cpp 复制代码
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
vim /etc/selinux/config
修改:enforcing------》disabled

下载Docker的repo文件

cpp 复制代码
cd /etc/yum.repos.d/
curl -o docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
vim docker-ce.repo

替换仓库地址

cpp 复制代码
sed -i 's/$releasever/8/g' docker-ce.repo
sed -i 's/$basearch/x86_64/g' docker-ce.repo

更新索引文件并安装Docker

cpp 复制代码
dnf clean all
dnf makecache
dnf -y install docker-ce

添加国内镜像站

cpp 复制代码
cd /etc/docker
ls
#指定docker镜像服务器
vim daemon.json
{
"exec-opts": ["native.cgroupdriver=systemd"],
"registry-mirrors": [
	"https://docker.m.daocloud.io",
	"https://docker.imgdb.de",
		"https://docker-0.unsee.tech",
    		"https://docker.hlmirror.com"
	]
}

开启Docker服务

cpp 复制代码
systemctl daemon-reload
systemctl restart docker
systemctl enable docker
docker version

优化内核参数

cpp 复制代码
vim /etc/sysctl.conf
net.ipv4.ip_forward=1
net.bridge.bridge-nf-call-ip6tables=1
net.bridge.bridge-nf-call-iptables=1
sysctl -p

快照Docker
测试Docker可用性,docker pull nginx:1.24.0

三:Docker镜像操作

1:获取镜像

  • 命令:docker pull [选项] [仓库地址/]仓库名:标签
  • 示例:docker pull ubuntu:20.04
  • 默认从Docker Hub获取,地址可省略(如阿里云等私有仓库需指定地址)

2:查看镜像信息

  • 列出镜像:docker images 或 docker image ls
  • 显示字段:仓库名、标签、ID、创建时间、大小
  • 搜索镜像:docker search 关键词(从仓库查找)

3:查看镜像的详细信息

  • 命令:docker inspect 镜像ID/名称
  • 返回JSON格式的详细配置信息(包括架构、环境变量、分层数据等)

4:修改镜像标签

  • 命令:docker tag 原镜像名:原标签 新镜像名:新标签
  • 示例:docker tag ubuntu:20.04 my-ubuntu:v1
  • 本质是创建别名,原镜像仍存在

5:删除镜像

  • 删除单个:docker rmi 镜像ID/名称 或 docker image rm 镜像ID/名称
  • 强制删除(有容器运行时):docker rmi -f 镜像ID
  • 清理悬空镜像:docker image prune

6:存出镜像和载入镜像

  • 导出为文件(存出):

    复制代码
    docker save -o 文件名.tar 镜像名:标签
    示例:docker save -o ubuntu20.tar ubuntu:20.04
  • 从文件导入(载入):

复制代码
docker load < 文件名.tar
或
docker load -i 文件名.tar
  • 区别:

    • save 保存完整历史记录,export(容器快照)只保留当前状态

    • load 恢复镜像库,import 从容器快照创建新镜像

四:Docker容器操作

1:容器的创建与启动

(1)创建容器

命令语法:docker create [OPTIONS] IMAGE [COMMAND] [ARG...]
参数说明:

  • OPTIONS(可选参数):docker create 支持众多可选参数,这些参数可以帮助你对创建的容器进行各种配置,以下是一些常用的参数:
cpp 复制代码
-i, --interactive:保持标准输入打开,即使没有附加到容器上,常用于需要交互的应用程序。
-t, --tty:分配一个伪终端,通常与 -i 一起使用,模拟一个交互式的终端环境,如 docker create -it。
-p, --publish list:将容器内的端口映射到宿主机的端口,格式为 宿主机端口:容器端口,例如 -p 8080:80 表示将容器的 80 端口映射到宿主机的 8080 端口。
-v, --volume list:挂载数据卷,将宿主机的目录或文件挂载到容器内,格式为 宿主机路径:容器路径,例如 -v /host/data:/container/data。
--name string:为创建的容器指定一个自定义的名称,方便后续管理和识别。
-e, --env list:设置容器内的环境变量,格式为 变量名 = 变量值,例如 -e DB_HOST=localhost。
--network string:指定容器要加入的网络,例如 --network my_network。
  • IMAGE

    • 指定用于创建容器的镜像名称和标签,如 nginx:latest。如果本地没有该镜像,Docker 会尝试从 Docker Hub 等镜像仓库中拉取。
  • COMMAND\] \[ARG...\](可选) * 指定容器启动时要执行的命令及其参数。如果不指定,将使用镜像的默认启动命令。

  • 批量创建多个配置好的容器,在需要时逐个启动,提高部署效率。

  • 对容器进行预配置,进行多次测试或验证不同的启动参数。

注意事项

  • 创建容器时,要确保指定的镜像存在于本地或者可以从镜像仓库中拉取。
  • 使用 docker create 创建的容器处于停止状态,需要使用 docker start 命令启动。
  • 对于复杂的容器配置,要仔细检查参数的正确性,避免出现配置错误导致容器无法正常工作。

(2)查看所有的容器

命令语法:docker ps [OPTIONS]
参数说明:

  • docker ps 支持众多可选参数,这些参数可以帮助用户根据不同需求筛选和定制输出信息。下面介绍一些常用的参数:
cpp 复制代码
-a, --all:列出所有容器,包括正在运行的和已经停止的容器。默认情况下,docker ps 仅显示正在运行的容器。
-q, --quiet:只显示容器的 ID,不显示其他详细信息。该参数常用于脚本编写,方便批量操作容器,比如批量停止或删除容器。
-s, --size:在输出中显示容器所占用的文件系统大小,包括读写层大小和总大小。
-f, --filter filter:根据指定的条件过滤输出结果。过滤条件可以有多种,例如 status=running 表示只显示正在运行的容器;name=my_container 表示只显示名称为 my_container 的容器。
--format string:使用 Go 模板语法自定义输出格式,用户可以根据自己的需求灵活定制输出内容和样式。
-n, --last int:显示最近创建的 n 个容器(包括已停止的)。例如,docker ps -n 3 会显示最近创建的 3 个容器信息。
-1, --latest:只显示最近创建的容器(包括已停止的)。

(3)容器的运行

docker start 5a

docker start 是 Docker 中用于启动已创建但处于停止状态容器的命令。docker start 命令的主要作用是将之前使用 docker create 创建好但处于停止状态的容器,或者之前已经停止运行的容器重新启动起来。它会重新初始化容器的运行环境,加载相关资源,让容器内的进程继续执行。

命令语法:docker start [OPTIONS] CONTAINER [CONTAINER...]

参数说明:

  • OPTIONS(可选参数)
cpp 复制代码
-a, --attach:将本地标准输入、输出和错误输出附加到启动的容器上,即启动容器后进入容器的交互界面,能实时看到容器内程序的输出信息,也可以向容器内输入命令。
-i, --interactive:保持容器的标准输入打开,允许你与容器内的进程进行交互。通常和 -a 选项一起使用,以实现交互式操作。
--checkpoint string:指定从哪个检查点恢复容器。检查点功能允许你保存容器的当前状态,之后可以从该状态恢复容器的运行。
--checkpoint-dir string:指定检查点文件所在的目录。
--detach-keys string:指定从附加模式退出的键序列。默认情况下,使用 Ctrl - p Ctrl - q 组合键可以从附加模式退出容器,同时保持容器在后台运行。
--publish-all, -P:发布容器内所有暴露的端口到宿主机上,宿主机端口会随机分配。

注意事项:

  • 若容器启动失败,可使用 docker logs 命令查看容器的日志信息,以排查启动失败的原因。
  • 使用 -a 选项附加到容器时,若要退出容器又不停止它,可使用默认的 Ctrl - p Ctrl - q 组合键(可通过 --detach - keys 选项修改)。
  • 对于依赖外部资源(如数据库、网络服务)的容器,要确保这些资源在启动容器前已经可用,否则容器可能因无法连接到依赖资源而启动失败。

(4)利用容器的执行命令

命令语法:docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
参数说明:

  • OPTIONS(可选参数):docker run 支持众多可选参数,用于对容器的各种属性和行为进行配置,下面介绍一些常用的参数:
  • 容器运行模式相关
cpp 复制代码
-d, --detach:让容器在后台运行,并返回容器的 ID。使用该参数后,容器启动后不会将输出信息显示在当前终端,适用于长时间运行的服务类容器。
-i, --interactive:保持标准输入打开,允许你与容器内的进程进行交互。
-t, --tty:分配一个伪终端,通常与 -i 一起使用,模拟一个交互式的终端环境,例如 docker run -it 常用于创建交互式容器。
  • 容器命名和资源限制相关
cpp 复制代码
--name string:为创建的容器指定一个自定义的名称,方便后续管理和识别。
-m, --memory bytes:限制容器可以使用的内存大小,例如 -m 512m 表示限制容器
--cpus decimal:限制容器可以使用的 CPU 资源,例如 --cpus 0.5 表示容器最多可以使用 0.5 个 CPU 核心。
  • 端口映射和数据卷相关
cpp 复制代码
-p, --publish list:将容器内的端口映射到宿主机的端口,格式为 宿主机端口:容器端口,例如 -p 8080:80 表示将容器的 80 端口映射到宿主机的 8080 端口。
-P, --publish-all:发布容器内所有暴露的端口到宿主机上,宿主机端口会随机分配。
-v, --volume list:挂载数据卷,将宿主机的目录或文件挂载到容器内,格式为 宿主机路径:容器路径,例如 -v /host/data:/container/data。
  • 环境变量和网络相关
cpp 复制代码
-e, --env list:设置容器内的环境变量,格式为 变量名 = 变量值,例如 -e DB_HOST=localhost。
--network string:指定容器要加入的网络,例如 --network my_network。
  • IMAGE
cpp 复制代码
指定用于创建容器的镜像名称和标签,如 nginx:latest。如果本地没有该镜像,Docker 会尝试从 Docker Hub 等镜像仓库中拉取。
  • COMMAND\] \[ARG...\](可选)

指定容器启动时要执行的命令及其参数。如果不指定,将使用镜像的默认启动命令。

复制代码
#### (5)在启动容器时持续在后台运行

    [root@localhost ~]# docker run -d centos:7 /usr/bin/bash -c "while true;do echo hello;done"

或

    [root@localhost ~]# docker run -dit centos:7 /bin/bash

**注意事项:**

> * 容器退出问题:若容器内的主进程退出,容器也会随之停止运行。例如,若在容器内运行的脚本执行完毕后没有其他持续运行的进程,容器就会停止。因此,要确保容器内有持续运行的服务或进程。
> * 日志查看:由于容器在后台运行,无法直接看到其输出信息。可以使用 docker logs 命令查看容器的日志,例如 docker logs \<容器 ID 或名称\>,以此来排查容器运行过程中出现的问题。
> * 资源占用:在后台运行的容器会持续占用系统资源(如 CPU、内存等),要注意监控容器的资源使用情况,避免资源过度占用影响系统性能。可以使用 docker stats 命令查看容器的资源使用统计信息。

### 2:容器的终止

    [root@localhost ~]# docker stop b18

> * 执行该命令后,Docker 会向 my_nginx 容器内的主进程发送 SIGTERM 信号,等待 10 秒(默认时间),如果进程没有自行终止,再发送 SIGKILL 信号强制终止。
> * docker stop 命令用于优雅地停止一个或多个正在运行的 Docker 容器。docker stop 命令的主要作用是向正在运行的容器内的主进程发送终止信号,让容器内的应用程序有机会正常关闭和清理资源,而不是像 docker kill 那样直接强制终止容器。这有助于避免数据丢失或损坏,保证应用程序的正常关闭流程。
> * 如果希望在停止容器时等待 20 秒,再进行强制终止,可以使用 -t 选项:

    docker stop -t 20 my_nginx

**注意事项:**
> * 容器响应情况:有些容器内的应用程序可能无法正确处理 SIGTERM 信号,导致无法在指定时间内正常关闭。在这种情况下,Docker 会在等待时间结束后发送 SIGKILL 信号强制终止容器,可能会造成数据丢失。
> * 依赖关系:在停止容器时,要考虑容器之间的依赖关系。如果一个容器依赖于另一个容器提供的服务,先停止被依赖的容器可能会导致依赖容器出现问题。
> * 停止状态检查:可以使用 docker ps 命令检查容器是否已经成功停止。停止的容器不会再出现在 docker ps 的输出中,但可以使用 docker ps -a 查看所有容器(包括已停止的)。

### 3:进入容器

    [root@localhost ~]# docker exec -it 03f /bin/bash

**退出**

    [root@03f062851c52 /]# exit

**docker exec 命令是 Docker 中一个非常实用的工具,它允许你在一个正在运行的容器内部执行额外的命令。docker exec 命令的主要作用是在不停止容器运行的情况下,对正在运行的容器进行调试、维护或执行一些临时任务。通过该命令,你可以在容器内部执行各种操作,就像直接登录到容器内部的操作系统一样。以下是对该命令的详细解释:**

**命令语法:docker exec \[OPTIONS\] CONTAINER COMMAND \[ARG...\]**

**参数说明:**

```cpp
-d, --detach:让命令在容器后台执行,不将命令的输出信息显示在当前终端,执行后会返回命令在容器内的执行进程 ID。
-i, --interactive:保持标准输入打开,允许你与容器内执行的命令进行交互,通常用于需要输入信息的命令。
-t, --tty:分配一个伪终端,模拟一个交互式的终端环境,一般和 -i 一起使用,即 docker exec -it,这样可以让你像在本地终端一样与容器内的命令进行交互。
-t, --tty:分配一个伪终端,模拟一个交互式的终端环境,一般和 -i 一起使用,即 docker exec -it,这样可以让你像在本地终端一样与容器内的命令进行交互。
-u, --user string:指定在容器内执行命令的用户,可以是用户名或用户 ID,例如 --user root 表示以 root 用户身份执行命令。
-w, --workdir string:指定命令在容器内的工作目录,即命令执行时的当前目录。
  • CONTAINER
  • 指定要在哪个正在运行的容器中执行命令,可以使用容器的名称或者 ID。
  • COMMAND [ARG...]
  • 指定要在容器内执行的命令及其参数。例如,执行 ls 命令查看容器内的文件列表,或者执行 bash 进入容器的 shell 环境。

注意事项:

  • 容器必须正在运行:docker exec 只能对正在运行的容器执行命令。如果容器处于停止状态,该命令将无法执行。
  • 权限问题:在容器内执行命令时,要注意用户的权限。某些操作可能需要 root 权限才能完成,如果使用普通用户身份执行可能会失败。
  • 命令执行环境:容器内的环境可能与宿主机不同,例如软件安装情况、环境变量设置等。在执行命令时,要确保容器内已经安装了所需的软件,并且环境配置正确。

4:容器导出

docker export 03f > centos7

docker export 命令用于将一个运行中的或已停止的 Docker 容器的文件系统内容导出为一个 tar 归档文件。

应用场景:

  • 迁移容器:当你需要把一个容器从一个 Docker 环境迁移到另一个 Docker 环境时,可以使用 docker export 导出容器的文件系统,再在目标环境中导入使用。
  • 备份容器:对容器的当前状态进行备份,以便在需要时可以恢复到该状态。
  • 分析容器内容:将容器的文件系统导出后,可以在宿主机上查看和分析容器内的文件和目录结构。

注意事项:

与 docker save 的区别:

  • docker save 操作的对象是镜像,保存的是镜像的所有层信息和元数据,包括镜像的历史记录和构建信息,而 docker export 操作的对象是容器,只保存容器当前的文件系统状态,不包含镜像的历史和构建信息。
  • 使用 docker save 保存的镜像可以直接使用 docker load 加载到其他 Docker 环境中,而使用 docker export 导出的容器文件系统需要使用 docker import 导入,导入后会生成一个新的镜像,且该镜像没有之前的历史记录。

容器状态:

  • 无论容器是运行中还是已停止,都可以使用 docker export 命令进行导出。不过,在导出运行中的容器时,要注意容器内的文件可能正在被修改,导出的文件系统状态可能不是一个完全一致的快照。

文件大小:

  • 导出的 tar 文件可能会比较大,尤其是对于包含大量文件的容器。在导出和存储时,要确保有足够的磁盘空间。

权限问题:

  • 导出的文件系统中的文件权限可能会受到宿主机和容器之间权限映射的影响。在导入到新环境后,要检查文件权限是否符合预期。

5:容器导入生成镜像

**[root@localhost ~]# docker import centos7 centos7:test

root@[localhost](https://localhost/ "localhost") \~\]# docker images** ### **6:容器删除** **\[root@[localhost](https://localhost/ "localhost") \~\]# docker rm 7f** **docker rm 是 Docker 中用于删除容器的基础命令。** **命令语法:docker rm \[OPTIONS\] CONTAINER \[CONTAINER...\]** **参数说明:** ```cpp -f, --force:强制删除正在运行的容器。默认情况下,docker rm 只能删除已停止的容器,添加该选项后,会向容器内的主进程发送 SIGKILL 信号,直接终止容器并将其删除,但可能导致数据丢失或应用异常。 -l, --link:仅删除容器的网络连接,而删除容器本身。通常用于清理容器与网络之间的关联。 -v, --volumes:在删除容器的同时,删除与该容器关联的数据卷。如果数据卷中存储着重要数据,使用该选项要谨慎。 CONTAINER [CONTAINER...]:指定要删除的容器,可以是容器的名称或者 ID,支持同时指定多个容器,用空格分隔。 ``` **使用场景:** > * 资源清理:当容器不再使用时,及时删除以释放系统资源,如磁盘空间、内存和网络端口等。 > * 环境重置:在开发或测试环境中,需要频繁创建和删除容器,以重置环境、测试不同的配置或重新部署应用。 > * 故障排除:当容器出现无法恢复的故障时,删除容器并重新创建可能是解决问题的有效方法。 **注意事项:** > * 容器状态:默认只能删除已停止的容器,若要删除正在运行的容器,需使用 -f 选项,但可能会导致数据丢失或应用异常,因此尽量先使用 docker stop 正常停止容器后再删除。 > * 数据卷处理:使用 -v 选项删除容器关联的数据卷时要谨慎,确保数据卷中的数据不再需要,否则可能造成数据丢失。 > * 依赖关系:在删除容器前,要考虑容器之间的依赖关系。如果一个容器依赖于另一个容器提供的服务,先删除被依赖的容器可能会导致依赖容器出现问题。 > * 不可逆操作:容器删除后无法直接恢复,因此在执行删除操作前要确认容器确实不再需要。 > * 删除所有容器(原文此处未完整展示具体命令等内容 ,按现有提取 )

相关推荐
武子康3 分钟前
Java-51 深入浅出 Tomcat 手写 Tomcat 类加载机制 双亲委派机制 生命周期 插件化
java·开发语言·spring boot·后端·spring·tomcat·springcloud
若鱼19195 分钟前
openapi-generator-maven-plugin自动生成HTTP远程调用客户端
java
爬虫程序猿8 分钟前
如何利用 Java 爬虫获得微店商品详情:实战指南
java·开发语言·爬虫
都叫我大帅哥15 分钟前
当Java遇上函数式编程:从“面条代码”到“代码诗人”的进化指南
java
都叫我大帅哥20 分钟前
Spring Batch中的JobRepository:批处理的“记忆大师”是如何工作的?🧠
java·spring
三好码农29 分钟前
深入Android 15 Zygote:ZygoteServer如何驾驭进程孵化
java·设计模式·架构
叶 落2 小时前
三种语言写 MCP
java·python·ai·typescript·mcp
桃子是唯一的水果3 小时前
spring碎片
java·spring
LUCIAZZZ3 小时前
项目拓展-Spring实现策略类统一管理
java·jvm·spring boot·后端·spring·操作系统
zhendeWD3 小时前
springboot 提供的可扩展接口
java·spring boot·后端·spring