目录

一:Docker 概述

1:什么是Docker

2:Docker 的优势

3:Docker的应用场景

4:Docker核心概念

二:Docker 安装

三:Docker 镜像操作

1:获取镜像

2:查看镜像信息

3:查看镜像的详细信息

4:修改镜像标签(老名字+新名字)

5:删除镜像

6:存出镜像和载入镜像

四:Docker 容器操作


一:Docker 概述

         因为 Docker 轻便、快速的特性,可以使应用达到快速迭代的目的。每次小的变更,马上就可以看到效果,而不用将若干个小变更积攒到一定程度再变更。每次变更一小部分其实是一种非常安全的方式,在开发环境中能够快速提高工作效率。
         Docker 容器能够帮助开发人员、系统管理员、质量管理和版本控制工程师在一个生产环节中一起协同工作。制定一套容器标准能够使系统管理员更改容器的时候,程序员不需要关心容器的变化,而更专注自己的应用程序代码。从而隔离开了开发和管理,简化了开发和部署的成本。

1:什么是Docker

类别描述
定义Docker是一种轻量级的容器技术,用于打包应用程序及其依赖项,实现应用的隔离和可移植性。
核心功能创建轻量级、可移植、自给自足的容器,简化部署和调试工作。
技术原理共享宿主机操作系统内核,但容器间拥有独立的文件系统、进程空间和网络接口。
与传统虚拟化对比传统虚拟化需模拟完整操作系统(如VM),而容器仅虚拟化用户空间,更轻量高效。
优势1. 高效利用资源
2. 快速启动和部署
3. 环境一致性(开发、测试、生产)
4. 易于扩展和维护
应用场景1. 微服务架构
2. 持续集成/持续部署(CI/CD)
3. 云原生应用开发
4. 多租户环境隔离
容器特点像一个独立“盒子”,包含应用所需的代码、运行时、工具和库,与其他容器隔离运行。

2:Docker 的优势

        Docker 容器运行速度很快,启动和停止可以在秒级实现,比传统虚拟机要快很多;Docker 核心解决的问题是利用容器来实现类似虚拟机的功能,从而利用更加节省的硬件资源提供给用户更多的计算资源。因此,Docker 容器除了运行其中的应用之外,基本不消耗额外的系统资源,在保证应用性能的同时,又减小了系统开销,使得一台主机上同时运行数千个 Docker 容器成为可能。
        传统虚拟化技术(如 Vware、VirtualBox 等)是通过虚拟机管理程序(Hypervisor)在物理服务器上创建多个虚拟机(VM),每个虚拟机都包含完整的操作系统。而容器技术是在操作系统层面进行虚拟化,多个容器共享宿主机的操作系统内核。
        容器技术和传统虚拟化的主要区别在于:

对比维度容器技术传统虚拟化
资源占用共享宿主机内核,仅包含应用及依赖项,资源占用少,启动速度快(秒级)。每个虚拟机需独立运行完整操作系统,资源占用高(CPU、内存、存储),启动较慢(分钟级)。
隔离性进程级隔离,依赖宿主机内核,隔离性较弱(但可通过配置增强)。硬件级隔离,每个虚拟机有独立OS,安全性更高。
性能直接调用宿主机内核,性能损耗极低,接近原生应用。需通过虚拟化层(Hypervisor)访问硬件,存在额外性能开销。
适用场景高密度微服务、CI/CD、快速扩展、云原生应用。需要强隔离的多租户环境、异构OS运行(如Windows与Linux共存)。
代表技术Docker、Kubernetes、LXC。VMware、Hyper-V、KVM。

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

特性Docker 容器虚拟机
启动速度秒级(快速启动,适合动态伸缩)分钟级(需启动完整操作系统)
计算能力损耗几乎无(直接调用宿主机内核)约 50%(需通过虚拟化层访问硬件)
性能接近原生(低延迟,高吞吐)较弱(受虚拟化开销影响)
单机系统支持量上千个(轻量级,共享内核)几十个(资源占用高)
隔离性进程级隔离(通过命名空间/Cgroups限制资源,隔离性较弱但可配置增强)完全隔离(独立OS,硬件级安全)
资源占用极低(仅包含应用及依赖项)高(需分配独立OS、虚拟硬件)
适用场景微服务、CI/CD、云原生应用、高密度部署强隔离需求(如多租户、异构OS)、传统应用迁移
代表技术Docker, Kubernetes, PodmanVMware, Hyper-V, KVM

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

优势具体表现与传统虚拟化对比应用场景示例
隔离性进程级隔离,故障容器不影响其他容器(通过命名空间/Cgroups实现)。弱于虚拟机的硬件级隔离,但已满足多数应用需求。多租户SaaS服务、微服务架构
可移植性一次打包,随处运行(依赖统一镜像格式),避免环境差异问题。虚拟机需携带完整OS镜像,体积大且环境适配复杂。跨云平台部署、开发-生产环境一致性保障
资源高效利用共享宿主机内核,无冗余OS开销,单机可运行上千容器。虚拟机需为每个实例分配独立OS资源,利用率低(单机通常仅几十个实例)。高密度计算、边缘计算资源优化
快速部署扩展秒级启动,支持快速水平扩展和自动伸缩(如K8s HPA)。虚拟机启动需分钟级,扩展速度慢。突发流量应对、CI/CD流水线加速
版本控制镜像分层存储,支持版本回滚和增量更新(通过Dockerfile管理)。虚拟机快照体积大,回滚效率低。蓝绿部署、热修复
生态工具链丰富的编排工具(K8s/Swarm)、监控(Prometheus)、日志(ELK)等开源解决方案。虚拟机管理工具(如vCenter)多为商业软件,生态封闭。DevOps全流程自动化

        Docker之所以拥有众多优势,与操作系统虚拟化自身的特点是分不开的。传统虚拟机需要有额外的虚拟机管理程序和虚拟机操作系统层,而 Docker 容器则是直接在操作系统层面之上实现的虚拟化。图 2是 Docker 与传统虚拟机架构。

3:Docker的应用场景

应用场景技术优势实现方式典型案例
开发环境管理环境一致性(避免“在我机器上能跑”问题),依赖隔离。使用 Dockerfile 定义环境,通过镜像共享给团队。新成员快速搭建开发环境,跨OS团队协作。
CI/CD 流水线快速构建、测试隔离、版本固化。在 Jenkins/GitLab CI 中集成 Docker,构建镜像并推送至仓库。自动化测试、一键回滚。
微服务架构独立部署、资源隔离、弹性伸缩。每个微服务打包为容器,通过 Kubernetes 编排。电商系统、支付服务解耦。
云计算资源高效利用、秒级部署、多云兼容。云厂商提供容器服务(如 AWS ECS、阿里云 ACK)。突发流量自动扩容,混合云部署。
边缘计算轻量级、低资源占用,适应异构设备。在边缘节点部署容器化应用(如 IoT 数据处理)。工厂设备实时监控,CDN 节点优化。
数据科学环境复现、依赖管理。JupyterLab 或 ML 模型打包为容器,共享数据集和训练环境。AI 团队协作训练模型。
遗留应用现代化无需重构代码即可迁移至云环境。将传统应用(如 Java WAR 包)容器化,逐步拆分微服务。银行系统上云改造。

4:Docker核心概念

核心概念定义特点操作示例类比说明
镜像只读模板,包含运行容器所需的文件系统结构和依赖项。- 分层存储(Union FS)
- 可复用、版本控制
- 静态不可变
- 构建镜像:docker build -t my-image .
- 拉取镜像:docker pull nginx
类似虚拟机的“安装光盘”或“快照”。
容器镜像的运行实例,包含独立的进程空间、网络和文件系统。- 轻量级(秒级启停)
- 隔离性(命名空间/Cgroups)
- 动态可读写
- 启动容器:docker run -d --name my-container nginx
- 进入容器:docker exec -it my-container bash
类似“正在运行的虚拟机实例”。
仓库集中存储和分发镜像的服务,分为公有仓库(Docker Hub)和私有仓库(自建)。- 支持多标签(tag)
- 权限控制(私有仓库)
- 镜像版本管理
- 推送镜像:docker push my-repo/my-image:tag
- 搜索镜像:docker search mysql
类似“应用商店”或“代码仓库(Git)”。

二:Docker 安装

    Docker 支持在主流的操作系统平台上进行使用,包括 Windows 系统、Linux 系统、以及 Macos 系统等。目前最新的 RHEL、Cent 0s 以及 Ubuntu 系统官方软件源中都已经默认自带了 Docker 包,可直接安装使用,也可以用 Docker 自己的 YUM 源进行配置。

    Centos 系统下安装 Docker 可以有两种方式:一种是使用CURL 获得 Docker 的安装脚本进行安装,另一种是使用 YUM 仓库来安装 Docker。注意:目前 Docker 只能支持 64 位系统。

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

# 步骤 1: 添加软件源信息
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo# 步骤 2: 安装必要的系统工具
yum install -y yum-utils# 步骤 3: 安装 Docker-CE
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum clean all
yum makecache
yum -y install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin# 步骤4:添加国内镜像站
mkdir -p /etc/docker/
cat > /etc/docker/daemon.json <<EOF
{"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"]
}
EOF# 步骤5:开启Docker服务
systemctl daemon-reload
systemctl restart docker
systemctl enable docker
docker version# 步骤6:优化内核参数
cat >> /etc/sysctl.conf <<EOF
net.ipv4.ip_forward=1
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
EOFsysctl -p

三:Docker 镜像操作

    运行 Docker 容器前需要本地存在对应的镜像。如果不存在本地镜像,Docker 就会尝试从默认镜像仓库下载。镜像仓库是由 Docker 官方维护的一个公共仓库,可以满足用户的绝大部分需求。用户也可以通过配置来使用自定义的镜像仓库。

1:获取镜像

[root@localhost ~]# docker pull nginx

        docker pull 是 Docker 里的一个关键命令,其主要功能是从 Docker 镜像仓库(默认是 DockerHub)中拉取镜像到本地 Docker 主机

命令语法:docker pull [OPTIONS] NAME[:TAG|@DIGEST]

参数说明:

OPTIONS(可选参数)

-a,--all-tags:拉取指定仓库中的所有标签的镜像。
--disable-content-trust:默认值为 true,该选项用于禁用镜像内容验证,也就是不验证镜像的签名。
NAME[ :TAG|@DIGEST]

NAME:这是要拉取的镜像的名称,它可以包含仓库地址和命名空间信息。例如,在 DockerHub 上的镜像,如果是官方镜像,通常直接写镜像名,如nginx;如果是用户或组织的镜像,则格式为 用户名/镜像名,像 dockerlibrary/redis。
TAG(可选):指定要拉取的镜像的具体标签,用于区分同一镜像的不同版本。若不指定标签,默认会拉取 latest 标签的镜像。
DIGEST(可选):通过镜像的摘要信息来精确指定要拉取的镜像版本,这能确保拉取的是特定哈希值对应的精确镜像,避免因标签可能指向不同版本而产生混淆。格式如nginx@sha256:abcdef123456...
    对于 Docker 镜像来说,如果下载镜像时不指定标签,则默认会下载仓库中最新版本的镜像,即选择标签为 latest 标签,也可通过指定的标签来下载特定版本的某一镜像。这里标签(tag)就是用来区分镜像版本的。

    从整个下载的过程可以看出,镜像文件是由若干层(Layer)组成,称之为AUFS(联合文件系统),是实现增量保存与更新的基础,下载过程中会输出镜像的各层信息。镜像下载到本地之后就可以随时使用该镜像了。 用户也可以选择从其他注册服务器仓库下载,这时需要在仓库名称前指定完整的仓库注册服务器地址。

2:查看镜像信息
 

[root@localhost ~]# docker images

          docker images 是 Docker 中一个基础且常用的命令,主要用于列出本地 Docker 主机上的镜像信息。docker images 命令会列出本地 Docker 主机上所有可用的镜像,展示镜像的基本信息,帮助用户了解本地镜像的存储情况,包括镜像的仓库名、标签、镜像 ID、创建时间和大小等。

    从显示的情况可以读出以下信息:

REPOSITORY:镜像属于的仓库:
TAG:镜像的标签信息,标记同一个仓库中的不同镜像;
IMAGE ID:镜像的唯- ID 号,唯一标识一个镜像;
CREATED:镜像创建时间:
VIRTUAL SIZE:镜像大小;
命令语法:docker images [OPTIONS] [REPOSITORY[:TAG]]

参数说明:

OPTIONS(可选参数)

-a, --all:显示所有镜像(包括中间层镜像)。默认情况下,docker images 只显示顶层镜像。
digests:显示镜像的摘要信息。
-f,--filter filter:根据指定的条件过滤输出结果。过滤条件可以是多种类型,例如 dangling=true表示只显示虚悬镜像(没有标签的镜像)。
--format string:使用 Go 模板语法自定义输出格式。
--no-trunc:不截断输出信息,完整显示镜像 ID 等较长的字段。
-9,--quiet:只显示镜像的 ID。
REPOSITORY [:TAG](可选)

REPOSITORY:指定要显示的镜像仓库名称。
TAG:指定要显示的镜像标签。如果不指定标签,默认显示所有标签的镜像。

3:查看镜像的详细信息

[root@localhost ~]# docker inspect c15

       docker inspect 是 Docker 中一个非常实用的命令,它用于返回 Docker 对象(如容器、镜像、网络、卷等)的底层详细信息,这些信息以 JSON 格式展示,方便用户深入了解 Docker 对象的配置和状态。
命令语法:docker inspect[OPTIONS]NAME|ID [NAME|ID...]参数说明:
OPTIONS:可选参数,用于指定输出格式或过滤特定信息,常见的选项有:
• --format,-f:指定输出格式,使用 Go 模板语法。
• --size,-s:在输出中显示容器的文件系统大小(仅适用于容器)
NAME|ID:要检查的 Docker 对象的名称或 ID,可以指定多个对象。可检查的 Docker 对象
docker inspect 可以检査多种 Docker 对象,常见的包括:
容器(Container):获取容器的详细信息,如运行状态、网络配置、挂载点等。
镜像(Image):查看镜像的构建历史、层信息、环境变量等。
网络(Network):了解网络的配置,如驱动类型、子网信息等。
卷(Volume):获取卷的详细信息,如挂载路径、驱动类型等。

4:修改镜像标签(老名字+新名字)

[root@localhost ~]# docker tag nginx nginx:v1
[root@localhost ~]# docker images

         在 Docker 中,docker tag 命令用于为现有的 Docker 镜像添加一个新的标签(tag)。标签本质上是镜像的一个别名,它可以让你更方便地引用和管理镜像,同时也有助于区分不同版本或用途的镜像。

命令语法:docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]

参数说明:

SOURCE_IMAGE[:TAG]:指定源镜像的名称和标签。SOURCE IMAGE 是源镜像的名称,「:TAG] 是可选的标签,如果不指定标签,默认使用 latest。
TARGET_IMAGE[:TAG]:指定目标镜像的名称和标签。这是你要为源镜像添加的新标签。同样,TARGET_IMAGE 是目标镜像的名称,[:TAG]是可选的标签,如果不指定标签,默认使用 latest。
       docker tag 命令并不会创建一个新的镜像,它只是为现有的镜像添加一个额外的标签。多个标签可以指向同一个镜像,这些标签只是镜像的不同引用方式。

5:删除镜像

# 用镜像名删除
[root@localhost ~]# docker rmi nginx:v1# 用镜像ID删除 
[root@localhost ~]# docker rmi c15

命令语法:docker rmi [OPTIONS] IMAGE [IMAGE...]

参数说明:

OPTIONS(可选参数)

-f,--force:强制删除镜像。即使有容器正在使用该镜像,也会尝试删除,但不建议轻易使用,因为可能导致容器无法正常运行。
--no-prune:默认情况下,删除镜像时会同时删除该镜像相关的未使用的父镜像层(虚悬镜像),使用该选项可以禁止删除这些父镜像层。
IMAGE

指定要删除的镜像,可以是镜像的名称、标签、镜像 ID,也可以同时指定多个镜像。例如:nginx:latest、123456789abc 等。
注意事项:

     在删除镜像之前,要确保没有正在运行或已停止的容器依赖该镜像。可以使用 docker ps -a命令査看所有容器,使用 docker stop 和 docker rm 命令停止并删除依赖该镜像的容器后,再删除镜像。
      镜像的删除是不可逆的操作,删除后无法恢复,所以在执行删除操作前要谨慎确认。
     当删除一个有多个标签的镜像时,删除一个标签只是移除该标签的引用,只有当所有标签都被删除后,镜像才会真正从磁盘上删除。

6:存出镜像和载入镜像

# (1) 导出镜像
[root@localhost ~]# docker save -o nginx.tar nginx:latest# (2) 删除镜像 
[root@localhost ~]# docker rmi nginx:latest# (3) 导入镜像
[root@localhost ~]# docker load < nginx.tar

注意事项:

文件大小:保存的镜像文件可能会非常大,尤其是包含多个大型镜像时。在保存和传输这些文件时,要确保有足够的磁盘空间和网络带宽。
镜像版本:保存的镜像文件中包含的是特定版本(标签)的镜像。在恢复镜像时,要确保使用正确的标签和版本。
跨平台兼容性:虽然 Docker 镜像是设计为跨平台的,但在不同的操作系统上保存和加载镜像时,可能会遇到一些兼容性问题。尽量在相同或兼容的操作系统版本之间传输和使用镜像。
镜像依赖:如果保存的镜像依赖于其他基础镜像,确保在目标环境中也有这些基础镜像,或者将它们一起保存和传输。

四:Docker 容器操作

    容器是 Docker 的另一个核心概念。简单说,容器是镜像的一个运行实例,是独立运行的一个或一组应用以及它们所必需的运行环境,包括文件系统、系统类库、she11 环境等。镜像是只读模板,而容器会给这个只读模板添加一个额外的可写层。

容器的创建与启动

操作类型命令语法核心功能关键参数示例适用场景
创建容器docker create [OPTIONS] IMAGE从镜像创建容器(不自动启动)-it(交互式终端)
-p 宿主机端口:容器端口
-v 宿主机目录:容器目录
--name 容器名
docker create -it --name mycentos -p 80:80 centos:7预配置容器后再启动
查看容器docker ps [OPTIONS]列出容器状态-a(显示所有容器)
-q(仅显示ID)
-f "name=xxx"(过滤)
docker ps -a | grep nginx监控容器运行状态
启动容器docker start [OPTIONS] CONTAINER启动已存在的容器-a(附加输出流)
-i(保持交互)
docker start -ai mycentos重新启动已停止的容器
创建并启动容器docker run [OPTIONS] IMAGE [COMMAND]创建并立即启动容器(镜像不存在时自动拉取)-d(后台运行)
--rm(退出后自动删除)
-e 环境变量
--network 网络
docker run -d --name web -p 8080:80 -e "ENV=prod" nginx快速部署服务
后台持续运行docker run -d IMAGE [COMMAND]启动守护式容器(需容器内有常驻进程)--cpus 2(限制CPU核心)
-m 512m(限制内存)
--restart=always(自动重启)
docker run -d --cpus=1 -m 1g --restart=always redis部署数据库、消息队列等持久化服务
停止容器docker stop [OPTIONS] CONTAINER优雅停止容器(发送SIGTERM信号)-t(超时时间,默认10秒)docker stop -t 5 mynginx安全关闭服务
强制停止容器docker kill [OPTIONS] CONTAINER强制终止容器(发送SIGKILL信号)-s(指定信号,如SIGKILLdocker kill mynginx容器无响应时强制终止
删除容器docker rm [OPTIONS] CONTAINER删除已停止的容器-f(强制删除运行中的容器)
-v(同时删除关联卷)
docker rm -fv old_container清理无用容器释放资源
场景推荐命令原因及关键参数扩展用法
调试容器docker run -it IMAGE /bin/bash-it:分配交互式终端,直接进入容器内部调试。
/bin/bash:指定启动Shell。
1. 快速排查配置问题:docker run -it --rm alpine sh
2. 检查环境变量:docker run -it python env
批量预配置容器docker create + docker start1. create:预先配置网络、卷等参数。
2. start:按需启动,适合批量管理。
结合脚本批量操作:
for i in {1..5}; do docker create --name node-$i nginx; done
运行服务类容器docker run -d IMAGE-d:后台守护进程模式。
自动拉取镜像(若本地不存在)。
1. Web服务:docker run -d -p 80:80 --name web nginx
2. 数据库:docker run -d -e MYSQL_ROOT_PASSWORD=123 mysql
临时测试容器docker run --rm IMAGE--rm:容器退出后自动删除,避免残留临时容器。单次命令执行:
docker run --rm busybox echo "Hello World"
资源受限环境docker run -d --cpus=1 -m 512m--cpus:限制CPU核心数。
-m:限制内存,防止资源耗尽。
云原生部署:
docker run -d --cpus=0.5 -m 256m --name limit-app my-app
容器网络配置docker run --network=host/bridge--network:指定网络模式。
host:共享宿主机网络栈。
bridge:默认隔离网络。
高性能场景:docker run -d --network=host redis
数据持久化docker run -v /host/path:/container-v:挂载宿主机目录到容器,数据持久化。数据库数据存储:
docker run -d -v /data/mysql:/var/lib/mysql mysql
操作类型命令语法核心功能关键参数注意事项典型场景
优雅停止容器docker stop [-t N] CONTAINER发送SIGTERM信号,允许容器完成清理后退出-t:超时时间(秒,默认10秒)1. 需确保容器内进程能处理SIGTERM
2. 有依赖关系的容器需按顺序停止
安全关闭数据库、微服务等
强制终止容器docker kill [-s SIGNAL] CONTAINER立即发送SIGKILL信号强制终止-s:指定信号(如SIGKILL/SIGTERM)1. 可能导致数据损坏
2. 仅用于无响应容器
容器死锁或僵尸进程处理
进入容器docker exec -it CONTAINER COMMAND在运行中容器内执行交互式命令-it:交互式终端
-u user:指定用户
-w /path:设置工作目录
1. 容器必须处于运行状态
2. 注意用户权限(如root操作需谨慎)
调试、日志查看或配置修改
导出容器快照docker export CONTAINER > file.tar将容器文件系统导出为tar包(不含元数据)1. 与docker save区别:不保留镜像层历史
2. 导出前建议先停止容器
迁移容器状态或备份
导入为镜像docker import file.tar IMAGE:TAG从tar文件创建新镜像(扁平化无历史层)-c:添加Dockerfile指令(如CMD生成的镜像无构建历史,体积可能较大快速构建定制化基础镜像
删除容器docker rm [-fv] CONTAINER删除已停止的容器及关联资源-f:强制删除运行中容器
-v:同时删除匿名卷
1. 数据卷删除不可逆
2. 重要数据需提前备份
清理无用容器释放资源
批量清理docker container prune一键删除所有已停止的容器配合-f跳过确认提示定期维护

场景推荐命令优势与原理扩展用法
正常停止服务docker stop -t 20 CONTAINER优势:发送SIGTERM信号,允许应用优雅关闭(如保存数据、释放连接)
参数-t 20 延长等待时间至20秒
1. 数据库容器:docker stop -t 30 mysql
2. 微服务:docker stop -t 15 order-service
容器无响应时docker kill CONTAINER优势:立即发送SIGKILL信号强制终止,快速释放资源
注意:可能导致数据丢失,慎用
1. 指定信号:docker kill -s SIGKILL hung_container
2. 批量终止:docker kill $(docker ps -q)
调试运行中容器docker exec -it CONTAINER bash优势:无需重启容器,直接进入交互式终端调试
注意:容器需已运行且包含bash/sh
1. 指定用户:docker exec -u root -it nginx bash
2. 执行单命令:docker exec redis redis-cli ping
临时诊断网络问题docker run --rm -it busybox ping优势:使用轻量镜像快速测试网络,--rm自动清理
场景:检查容器间通信或外网连通性
docker run --rm -it alpine ping 8.8.8.8
查看实时日志docker logs -f CONTAINER优势:动态跟踪日志输出(类似tail -f
参数--since 10m 查看最近10分钟日志
docker logs -f --tail 100 web_app
资源监控docker stats CONTAINER优势:实时显示CPU/内存/网络等资源占用
扩展docker top CONTAINER查看进程列表
docker stats --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}"
配置检查docker inspect CONTAINER优势:获取容器详细配置(网络/IP/卷等)
技巧:结合jq解析JSON输出
docker inspect web | jq .[0].NetworkSettings.IPAddress

数据持久化建议

  • 重要数据应通过-v挂载数据卷
  • 删除容器时避免使用-v参数,除非确认数据可丢弃
# 停止所有运行中的容器
docker stop $(docker ps -q)# 删除所有已停止容器
docker rm $(docker ps -aq)# 导出所有容器
for id in $(docker ps -aq); do docker export $id > $id.tar; done

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/913877.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/913877.shtml
英文地址,请注明出处:http://en.pswp.cn/news/913877.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

构建高效分布式系统:bRPC组合Channels与HTTP/H2访问指南

构建高效分布式系统&#xff1a;bRPC组合Channels与HTTP/H2访问指南 引言 在现代分布式系统中&#xff0c;下游服务访问的复杂性日益增加。bRPC通过组合Channels和HTTP/H2访问优化&#xff0c;提供了解决多层级RPC调用、负载均衡和协议兼容性问题的完整方案。本文将深入解析两大…

WSL创建Ubuntu子系统与 VS code 开发

文章目录一、打开Windows的虚拟化基础功能二、安装WSL和Ubuntu1. 安装 WSL2. 安装 Ubuntu三、 VScode一、打开Windows的虚拟化基础功能 控制面板-程序和功能-启动或关闭Windows功能&#xff0c;勾选适用于Linux的Windows子系统、虚拟机平台&#xff0c; 完成后根据提示重启电脑…

AlpineLinux二进制文件部署prometheus

在Alpine Linux上通过二进制文件部署Prometheus的步骤如下: 创建用户和组: groupadd prometheus useradd -g prometheus -m -s /sbin/nologin prometheus下载Prometheus二进制文件: 你可以从Prometheus的官方GitHub发布页面下载最新的二进制文件。例如,使用wget命令: wget…

IoT 小程序:如何破解设备互联的碎片化困局?

一、IoT 设备管理为何需要轻量化解决方案&#xff1f;随着物联网设备规模爆发式增长 —— 预计 2025 年全球连接数将达 270 亿台&#xff0c;传统 Native 应用开发模式的弊端日益凸显&#xff1a;某智能家居厂商开发 3 款主流设备 APP&#xff0c;需维护 iOS/Android/ 小程序 3…

Word 怎么让字变大、变粗、换颜色?

这是Word中最常用也最基础的操作之一。学会它&#xff0c;你的文档就会立刻变得重点突出&#xff0c;清晰易读。 记住一个核心前提&#xff1a;无论做什么格式修改&#xff0c;第一步永远是【先选中你要修改的文字】。 你可以把鼠标放在文字的开头&#xff0c;按住左键&#xf…

Ruby 安装 - Linux

Ruby 安装 - Linux 引言 Ruby 是一种广泛使用的高级编程语言,以其简洁、优雅和强大的功能而闻名。在 Linux 系统上安装 Ruby 是许多开发者的首要任务。本文将详细介绍如何在 Linux 系统上安装 Ruby,包括准备工作、安装过程和常见问题解决。 准备工作 在开始安装 Ruby 之前…

数组的应用示例

任意输入【0,9】范围内的整数&#xff0c;统计输入的每一种数字的个数并输出&#xff0c;输入-1结束程序 #include <stdio.h> int main(){const int number 10;int x;int i;int count[number];for ( i 0; i < number; i){count[i] 0;}printf("请输入0&#xf…

鸿蒙智行6月交付新车52747辆 单日交付量3651辆

近日&#xff0c;鸿蒙智行公布最新销量数据&#xff0c;6月单月全系交付52747辆&#xff0c;单日交付量3651辆&#xff0c;分别刷新鸿蒙智行单月、单日销量历史新高。仅用39个月实现全系累计交付80万辆&#xff0c;创下新势力汽车最快交付纪录。 尊界S800自5月30日上市以来&…

基于模糊控制及BP神经网络开关磁阻电机的matlab仿真

1.模型简介本仿真模型基于MATLAB/Simulink&#xff08;版本MATLAB 2015Rb&#xff09;软件。2.仿真算法:1&#xff09;采用转速、转矩双闭环控制算法&#xff1b;2&#xff09;外环是速度环&#xff0c;采用改进复合模糊控制&#xff0c;实现速度跟踪&#xff1b;3&#xff09;…

最新团购源码商城 虚拟商城系统源码 全开源

内容目录一、详细介绍二、效果展示1.部分代码2.效果图展示三、学习资料下载一、详细介绍 最新团购源码商城 虚拟商城系统源码 全开源 基于PHP开发的多功能在线商城系统&#xff0c;适合个人、小型企业或创业团队快速搭建自己的商品销售平台。系统界面美观&#xff0c;功能丰富…

Visual Studio 旧版软件下载教程

一、前言最近在开发过程中编译使用Cuda的版本较低&#xff0c;导致与最新的Visual Studio Community 2022 17.14.8不兼容。编译报错如下&#xff1a;[cmake] C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.44.35207\include\yvals_core.h(902): e…

乐橙亮相2025广州建博会:用AI重新定义家庭安全与技术边界

在智能锁迈入AI新时代的关键节点&#xff0c;谁才是真正的技术引领者&#xff1f;2025年广州建博会&#xff0c;乐橙用一场“不炫技、重本质”的深度展演给出了答案。智哪儿在现场了解到&#xff0c;在A区3.1-28展位&#xff0c;乐橙围绕“智启新境 All in Intelligent”这一主…

快速搭建服务器,fetch请求从服务器获取数据

1.strapi首先strapi是一个api管理系统&#xff0c;可以让我们直接用网页的形式去定义自己的api&#xff0c;包括设置模型和权限等功能。首先直接在项目目录里面安装库。npx create-strapilatest server --quickstart这样就可以直接在项目目录创建一个连接数据库的服务器了。不用…

UGF开发记录_3_使用Python一键转换Excle表格为Txt文本

使用UnityGameFramework日常记录_3_配一键转换配置表 该系列只做记录 不做教程 所以文章简洁直接 会列出碰到的问题和解决方案 只适合UGF萌新 为了提高效率&#xff0c;我使用Python编写了一个脚本&#xff0c;实现了一键将Excel表格批量转换为带分隔符的Txt文件&#xff0c…

leetcode 3440. 重新安排会议得到最多空余时间 II 中等

给你一个整数 eventTime 表示一个活动的总时长&#xff0c;这个活动开始于 t 0 &#xff0c;结束于 t eventTime 。同时给你两个长度为 n 的整数数组 startTime 和 endTime 。它们表示这次活动中 n 个时间 没有重叠 的会议&#xff0c;其中第 i 个会议的时间为 [startTime[i]…

大型语言模型(LLM)的最新研究进展及相关新信息技术

大型语言模型(LLM)的最新研究进展及相关新信息技术 一、Google的Gemini 2.0系列 1. Gemini 2.0 Flash Thinking 核心技术:引入“推理时计算”(Inference-Time Computation)机制,支持模型在回答复杂问题前自主“思考”,显著提升数学和代码任务的准确性。多模态能力:支…

c++-友元函数和友元类

友元友元提供了一种突破封装的方式&#xff0c;有时提供了便利。但是友元会增加耦合度&#xff0c;破坏了封装&#xff0c;所以 友元不宜多用。 友元分为&#xff1a;友元函数和友元类友元函数问题现在尝试去在Date类里重载operator<<。无论怎样设置参数&#xff0c;只要…

alpinelinux的网络配置

在 Alpine Linux 中配置网络&#xff0c;您可以根据以下步骤进行&#xff1a; 配置本机 hostname&#xff1a; 本机hostname保存在/etc/hostname文件中。 echo alpine-web > /etc/hostname hostname -F /etc/hostname # 立即生效运行结果&#xff1a; localhost:~# echo &qu…

day1--项目搭建and内容管理模块

1. 项目搭建1.1 创建父工程1.1.1 创建xuecheng-plus-project工程1.1.2 导入依赖<?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instan…

腾讯云录音文件快速识别实战教程

文章目录前言接口简介前置条件实战添加 Maven 依赖核心代码示例参数说明个人简介前言 本文介绍如何基于腾讯云语音识别 快速识别接口&#xff0c;实现通过 HTTPS POST 方式上传音频并快速识别同步返回识别结果的实战流程。 接口简介 腾讯云语音识别 快速识别接口 支持上传音…