在这里插入图片描述


一、Docker核心概念与架构

1.1 Docker技术栈

Docker客户端
Docker守护进程
镜像仓库
容器运行时
Linux内核命名空间
控制组cgroups
联合文件系统

1.2 容器与虚拟机对比

特性容器虚拟机
启动速度秒级分钟级
资源占用MB级GB级
隔离性进程级系统级
镜像大小10-100MB1-10GB
运行性能接近原生有损耗

二、Docker全生命周期管理

2.1 容器操作核心命令

# 容器全生命周期管理
docker create   # 创建容器但不启动
docker start    # 启动已停止的容器
docker stop     # 优雅停止容器(发送SIGTERM)
docker kill     # 强制停止容器(发送SIGKILL)
docker pause    # 冻结容器进程
docker unpause  # 恢复容器运行# 高级日志管理(支持JSON日志驱动)
docker logs --tail 100 -f --since 10m container_id# 容器资源监控
docker stats --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}"

2.2 镜像深度管理

# 镜像构建全流程
docker build -t myapp:v1 --build-arg ENV=prod --no-cache .# 多阶段构建示例(减少最终镜像大小)
FROM golang:1.18 AS builder
WORKDIR /app
COPY . .
RUN go build -o myappFROM alpine:latest  
COPY --from=builder /app/myapp .
CMD ["./myapp"]# 镜像安全扫描
docker scan myapp:v1

2.3 存储与卷管理

# 创建持久化卷
docker volume create db_data# 卷深度检查
docker volume inspect db_data | grep Mountpoint# 绑定挂载与卷挂载对比
docker run -v /host/path:/container/path   # 绑定挂载
docker run -v db_data:/container/path       # 卷挂载(推荐)

三、生产级容器部署指南

3.1 Redis高可用部署

# 使用自定义配置文件(重要安全配置)
docker run -d --name redis \-p 6379:6379 \-v /data/redis/redis.conf:/usr/local/etc/redis/redis.conf \-v redis_data:/data \--sysctl net.core.somaxconn=1024 \--memory 1g \--cpus 2 \redis:7.0 redis-server /usr/local/etc/redis/redis.conf# redis.conf关键配置:
requirepass YourStrongPassword
maxmemory 2gb
maxmemory-policy allkeys-lru
appendonly yes

3.2 MySQL生产配置

# 带性能调优参数的启动
docker run -d --name mysql \-p 3306:3306 \-v mysql_data:/var/lib/mysql \-v /etc/mysql/conf.d:/etc/mysql/conf.d \-e MYSQL_ROOT_PASSWORD=ComplexPassw0rd! \-e MYSQL_DATABASE=app_db \-e MYSQL_USER=app_user \-e MYSQL_PASSWORD=UserPassword123 \--innodb_buffer_pool_size=1G \--innodb_log_file_size=256M \mysql:8.0.23 \--character-set-server=utf8mb4 \--collation-server=utf8mb4_unicode_ci

3.3 Elasticsearch集群部署

# docker-compose-cluster.yml
version: '3.8'
services:es01:image: elasticsearch:7.14.0container_name: es01environment:- node.name=es01- cluster.name=es-docker-cluster- discovery.seed_hosts=es02,es03- cluster.initial_master_nodes=es01,es02,es03- bootstrap.memory_lock=true- "ES_JAVA_OPTS=-Xms4g -Xmx4g"ulimits:memlock:soft: -1hard: -1volumes:- es_data01:/usr/share/elasticsearch/dataports:- 9200:9200networks:- elastic# es02, es03配置类似...
volumes:es_data01, es_data02, es_data03
networks:elastic:driver: bridge

四、高级网络与安全

4.1 网络模式对比

网络模式特点适用场景
bridge默认NAT网络单机多容器通信
host直接使用宿主机网络高性能网络应用
overlay跨主机容器网络Swarm/K8s集群
macvlan容器具有MAC地址传统网络集成
none无网络特殊安全场景

4.2 安全加固实践

# 1. 使用非root用户运行容器
docker run -u 1000:1000 myapp# 2. 启用AppArmor配置文件
docker run --security-opt apparmor=my_profile# 3. 只读文件系统(除必要目录)
docker run --read-only -v /tmp:/tmp# 4. 禁用特权模式
docker run --cap-drop ALL --cap-add NET_BIND_SERVICE# 5. 定期更新镜像
docker pull official_image:latest

五、容器编排基础

5.1 Docker Compose全栈部署

# docker-compose-fullstack.yml
version: '3.8'
services:frontend:image: nginx:1.22.0ports:- "80:80"volumes:- ./frontend:/usr/share/nginx/htmldepends_on:- backendbackend:build: ./backendenvironment:- DB_HOST=db- REDIS_HOST=redisdeploy:resources:limits:cpus: '0.5'memory: 512Mdb:image: postgres:13volumes:- pg_data:/var/lib/postgresql/dataenvironment:POSTGRES_PASSWORD: dbpasswordredis:image: redis:7.0command: redis-server --requirepass redispassvolumes:pg_data:

六、企业级应用部署

6.1 Nexus私有仓库集群

# 启动Nexus主节点
docker run -d -p 8081:8081 \--name nexus-primary \-v nexus-data:/nexus-data \-e INSTALL4J_ADD_VM_PARAMS="-Xms2g -Xmx2g" \sonatype/nexus3# 配置集群节点
docker run -d -p 8082:8081 \--name nexus-replica \-v nexus-data-replica:/nexus-data \-e NEXUS_CLUSTER_NODE_ID=replica01 \-e NEXUS_CLUSTER_PRIMARY_NODE_URL=http://primary-ip:8081 \sonatype/nexus3

6.2 Jenkins CI/CD流水线容器

# Jenkins Dockerfile with pre-installed tools
FROM jenkins/jenkins:lts-jdk11USER root
RUN curl -sL https://deb.nodesource.com/setup_16.x | bash - && \apt-get install -y nodejs python3 docker-ce-cliUSER jenkins
COPY plugins.txt /usr/share/jenkins/ref/
RUN jenkins-plugin-cli -f /usr/share/jenkins/ref/plugins.txt

七、监控与排错体系

7.1 容器监控方案

# Prometheus + cAdvisor + Grafana 部署
docker run -d \--name=cadvisor \--volume=/:/rootfs:ro \--volume=/var/run:/var/run:ro \--volume=/sys:/sys:ro \--publish=8080:8080 \google/cadvisor# 日志集中管理
docker run -d \--name logspout \--volume=/var/run/docker.sock:/var/run/docker.sock \gliderlabs/logspout \syslog+tls://logs.example.com:514

7.2 故障诊断工具箱

工具用途安装方式
nsenter进入容器命名空间apt-get install util-linux
weave scope容器拓扑可视化docker run -d --name scope
ctop容器资源监控docker run --rm -ti quay.io/vektorlab/ctop
dive镜像层分析docker run --rm -ti wagoodman/dive

八、容器安全合规

8.1 Docker安全扫描

# 使用Trivy进行漏洞扫描
docker run --rm \-v /var/run/docker.sock:/var/run/docker.sock \aquasec/trivy image myapp:latest# CIS基准检测
docker run -it --net host --pid host \--cap-add audit_control \-v /var/lib:/var/lib \-v /var/run/docker.sock:/var/run/docker.sock \docker/docker-bench-security

8.2 合规性配置

  1. 禁止特权容器
    docker run --privileged → 禁止使用

  2. 文件系统保护

    docker run \--read-only \--tmpfs /tmp:rw,size=50m \myapp
    
  3. 网络隔离

    docker network create --internal private_net
    docker run --net private_net --rm alpine
    

九、附录:企业级最佳实践

9.1 镜像构建原则

  1. 最小化基础镜像
    Alpine (5MB) > Distroless > Ubuntu (72MB)

  2. 多阶段构建
    分离编译环境和运行环境

  3. 单进程原则
    每个容器只运行一个主进程

9.2 资源配额管理

# 内存限制(含OOM优先级)
docker run -m 512m --oom-kill-disable --oom-score-adj 500# CPU限制(CFS调度器)
docker run --cpus=1.5 --cpu-shares=512# 块I/O限制
docker run --device-read-bps /dev/sda:1mb 

9.3 零信任网络策略

# 默认拒绝所有流量
docker network create --driver bridge \--opt com.docker.network.bridge.enable_icc=false \isolated_net# 按需开放端口
docker run -p 8080:8080/tcp --publish 53:53/udp

更新日期:2025年7月8日
适用版本:Docker CE 25.0+ / Engine 26.0+

如需PDF版本或容器安全自查清单,请联系作者获取。

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

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

相关文章

8、保存应用数据

目录用户首选项的使用用户首选项主要API用户首选项开发流程用户首选项开发实践关系型数据库的使用关系型数据库工作流程关系型数据库开发实践用户首选项的使用 用户首选项主要API 用户首选项开发流程 成功的获取了一个名为myStore的Preferences实例 保存了一个键值对&#x…

(C++)list列表相关基础用法(C++教程)(STL库基础教程)

源代码&#xff1a;#include <iostream> #include <list>using namespace std;int main(){list<int> numbers{10,20,30};numbers.push_front(5);numbers.push_back(40);auto it numbers.begin();advance(it,2);numbers.insert(it,15);cout<<"该列…

Spring CGLIB私有方法访问成员变量为null问题

场景 代码 RestController public class TestJob {Autowiredprivate XxService xxService;XxlJob("testCGLIB")private void doTest(){System.out.println("方法调用");System.out.println("成员变量注入:"(xxService!null));this.doInnerTest()…

Paimon本地表查询引擎LocalTableQuery详解

LocalTableQueryLocalTableQuery 是 Paimon 中实现本地化、带缓存的表查询的核心引擎。它的主要应用场景是 Flink 中的 Lookup Join。当 Flink 作业需要根据一个流中的 Key 去关联一个 Paimon 维表时&#xff0c;LocalTableQuery 可以在 Flink 的 TaskManager 节点上&#xff0…

使用协程简化异步资源获取操作

异步编程的两种场景 在异步编程中&#xff0c;回调函数通常服务于两种不同场景&#xff1a; 一次性资源获取&#xff1a;等待异步操作完成并返回结果。持续事件通知。监听并响应多个状态变更。 Kotlin为这两种场景提供了解决方案&#xff1a;使用挂起函数简化一次性资源获取…

ABP VNext + Cosmos DB Change Feed:搭建实时数据变更流服务

ABP VNext Cosmos DB Change Feed&#xff1a;搭建实时数据变更流服务 &#x1f680; &#x1f4da; 目录ABP VNext Cosmos DB Change Feed&#xff1a;搭建实时数据变更流服务 &#x1f680;TL;DR ✨&#x1f680;1. 环境与依赖 &#x1f3d7;️2. 服务注册与依赖注入 &…

STM32-定时器

定时器&#xff1a;有4个独立通道&#xff1a;输入捕获&#xff1b;输出比较PWM生成&#xff1b;单脉冲模式输出&#xff1b;可通外部信号控制定时器&#xff08;TIMx-ETR&#xff09;&#xff1b;支持针对定时的增量&#xff08;正交&#xff09;编码器、霍尔传感器电路通用定…

Windows Server 2019--职业技能大赛B模块Windows服务器配置样题

一、赛题说明 &#xff08;一&#xff09;竞赛介绍 请详细阅读网络拓扑图&#xff0c;为所有计算机修改默认防火墙以便允许ICMP和相应的流量&#xff0c;不允许直接关闭主机的防火墙。除了CD-ROM/HDD驱动器&#xff0c;请不要修改虚拟机本身的硬件设置。 &#xff08;二&…

vue3+Echarts实现立体柱状图

Echarts柱状图中文网&#xff1a;https://echarts.apache.org/examples/zh/index.html#chart-type-bar 效果展示&#xff1a; 主要实现过程是三部分的组合&#xff0c;最上面是一个椭圆&#xff0c;中间是正常的柱子&#xff0c;下方再加上一个椭圆&#xff0c;就出来立体的效…

【UE5】虚幻引擎小百科

一、类名前面的大写字母的含义是什么UE5常见前缀分类表前缀含义实例用于AActorACharacter&#xff0c;AWeaponBase可放入世界中的对象&#xff08;有位置、可碰撞等&#xff09;UUObject派生类UUserWidget&#xff0c;UWeaponComponent引擎对象、逻辑模块&#xff0c;不具备Tra…

【Linux系统】vim编辑器 | 编译器gcc/g++ | make/Makefile

1. vim编辑器一、历史发展与Vim vs Vi的区别起源与演进Vi&#xff08;1976年&#xff09; &#xff1a;由Bill Joy开发&#xff0c;嵌入BSD Unix系统&#xff0c;是首个面向屏幕的文本编辑器&#xff0c;但功能有限&#xff08;如无多级撤销&#xff09;。Vim&#xff08;1991年…

国产飞腾主板,赋能网络安全防御硬手段

​ 当前&#xff0c;网络安全形势严峻&#xff0c;网络攻击手段不断翻新&#xff0c;从数据泄露到电脑中毒&#xff0c;企业、机构乃至国家的数字资产都面临着巨大风险。在此背景下&#xff0c;国产硬件技术的突破对筑牢网络安全防线意义重大。 高能计算机基于市场需求&#…

Spring AI 概述与架构设计

目录一、前言二、简介三、核心能力概览四、理解模块架构图五、模型适配能力六、最小应用示例七、与传统 LLM 调用相比八、总结九、参考一、前言 在 AI 正以前所未有的速度“下沉”到各类系统与业务的当下&#xff0c;Spring 官方推出的 Spring AI 项目&#xff0c;为 Java 开发…

UI前端与数字孪生融合新领域:智慧环保的污染源监测与治理

hello宝子们...我们是艾斯视觉擅长ui设计、前端开发、数字孪生、大数据、三维建模、三维动画10年经验!希望我的分享能帮助到您!如需帮助可以评论关注私信我们一起探讨!致敬感谢感恩!一、引言&#xff1a;数字孪生重构智慧环保的技术范式在环境污染治理压力持续增大的背景下&…

【go/wails】wails入门系列(一)环境安装与demo

文章目录说在前面go安装nodejs安装wails创建项目运行说在前面 操作系统&#xff1a;win11go版本&#xff1a;1.24.4nodejs版本&#xff1a;v22.16.0wails版本&#xff1a;v2.10.1 go安装 官网 这里 下载安装即可 nodejs 官网 这里 下载安装即可 安装wails 设置go国内代理g…

linux qt 使用log4cpp库

一、日志库下载 下载地址&#xff1a;https://log4cpp.sourceforge.net/二、日志库解压&#xff0c;编译 1.将文件夹解压出来2.进入文件夹内部&#xff0c;打开终端3.终端中依次输入以下命令 mkdir build ./configure --prefix$(pwd)/build make make install 一般来说不会报错…

探索阿里云Data Integration:数据同步的魔法工具

引言在当今数字化时代&#xff0c;数据已成为企业的核心资产&#xff0c;如同企业发展的 “燃料”&#xff0c;驱动着业务的增长与创新。从用户行为数据到业务运营数据&#xff0c;从市场趋势数据到供应链数据&#xff0c;每一个数据点都蕴含着巨大的价值&#xff0c;能够为企业…

【Java面试】Redis的poll函数epoll函数区别?

Redis 在选择 poll 和 epoll 时主要基于性能需求、连接规模、操作系统支持等因素。以下是具体场景的对比与选择建议&#xff1a;1. 何时使用 poll 函数&#xff1f;适用场景&#xff1a; 跨平台兼容性需求&#xff1a;poll 在几乎所有操作系统&#xff08;如 Windows、BSD、Lin…

RPC--RPCHandler的实现

在RPC框架中&#xff0c;Handler用于接收RpcRequest&#xff0c;经过处理后返回RpcResponseSlf4jpublic class RpcRequestHandler {private final ServiceProvider serviceProvider;//获取一个单例模式的服务提供类public RpcRequestHandler() {serviceProvider SingletonFact…

C#读取文件夹和文件列表:全面指南

C#读取文件夹和文件列表&#xff1a;全面指南 在 C# 开发中&#xff0c;经常需要获取文件夹中的文件列表或子文件夹结构&#xff0c;例如文件管理器、批量处理工具、备份程序等场景。本文将详细介绍 C# 中读取文件夹和文件列表的各种方法&#xff0c;包括基础操作、递归遍历、过…