首页
Linux常用
docker常用
关于
Search
1
docker安装MDCX
212 阅读
2
麒麟KylinV10离线下载安装包及安装
110 阅读
3
iStoreOS上使用WireGuard
78 阅读
4
UNRAID增加和缩小虚拟机虚拟磁盘大小
50 阅读
5
unraid添加iSCSI 发起程序
39 阅读
默认分类
docker
容器安装
Linux
数据库
群辉
软路由
unRAID
PVE
Nginx
wow
杂项
图床
飞牛
转载微信公众号文章
Docker学习
Linux学习
登录
Search
标签搜索
nginx
unraid
PVE
数据库
dockerfile
同步
wow服务器
装机硬件
宏
v2ray
直通
电视盒子
相册
黑裙7.0.1
远程穿透
定时
ssh
emby
symlink
软链接
奥黛丽·逐爱者
累计撰写
113
篇文章
累计收到
10
条评论
首页
栏目
默认分类
docker
容器安装
Linux
数据库
群辉
软路由
unRAID
PVE
Nginx
wow
杂项
图床
飞牛
转载微信公众号文章
Docker学习
Linux学习
页面
Linux常用
docker常用
关于
搜索到
29
篇与
转载微信公众号文章
的结果
2025-08-05
项目实践:使用Rsync和Crontab实现每天凌晨2点将远程服务器文件自动同步到本地服务器进行异地备份
本文将介绍如何通过rsync命令结合crontab定时任务,实现从远程SMB共享目录到本地目录的自动化文件同步。这种方案特别适合需要定期备份远程文件或保持两地文件一致性的场景。1.环境说明远程服务器:SMB共享目录位于/data/myshare/本地服务器:备份目录为/data/mybackup同步时间:每天凌晨2点SSH端口:假设远程服务器使用非标准SSH端口(如2222)2.实现步骤2.1创建同步脚本首先,我们需要创建一个bash脚本来自动执行同步任务。在本地服务器上创建/usr/local/bin/sync_backup.sh文件:#!/bin/bash# 远程服务器信息REMOTE_USER="username" # 替换为实际用户名REMOTE_HOST="remote.example.com" # 替换为实际主机名或IPSSH_PORT="2222" # 替换为实际SSH端口REMOTE_DIR="/data/myshare/" # 远程SMB共享目录LOCAL_DIR="/data/mybackup" # 本地备份目录# Rsync命令rsync -avz -e "ssh -p $SSH_PORT" --delete --progress $REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR $LOCAL_DIR# 记录同步日志echo "[$(date +'%Y-%m-%d %H:%M:%S')] Rsync completed from $REMOTE_HOST:$REMOTE_DIR to $LOCAL_DIR" >> /var/log/rsync_backup.log脚本说明:-avz:归档模式(a),显示详细输出(v),使用压缩传输(z)-e "ssh -p $SSH_PORT":指定非标准SSH端口--delete:删除本地目录中不存在于远程目录的文件--progress:显示传输进度最后一行将同步操作记录到日志文件中2.2设置脚本权限运行以下命令使脚本可执行:sudo chmod +x /usr/local/bin/sync_backup.sh2.3配置SSH免密登录为了避免每次同步都需要输入密码,可以设置SSH密钥认证:ssh-keygen -t rsassh-copy-id -i ~/.ssh/id_rsa.pub -p 2222 username@remote.example.com2.4创建crontab定时任务使用crontab -e命令编辑当前用户的crontab:0 2 * * * /usr/local/bin/sync_backup.sh这表示每天凌晨2点执行同步脚本。2.5验证配置可以手动运行脚本测试是否正常工作:/usr/local/bin/sync_backup.sh检查/var/log/rsync_backup.log查看同步结果。3.高级配置选项带宽限制:如果同步过程占用过多带宽,可以添加--bwlimit=KBPS参数限制传输速率。排除特定文件:使用--exclude参数排除不需要同步的文件或目录。邮件通知:可以在脚本中添加邮件发送功能,通知同步结果。错误处理:增强脚本的错误处理能力。修正后的脚本如下:#!/bin/bash# 远程服务器信息REMOTE_USER="username" # 替换为实际用户名REMOTE_HOST="remote.example.com" # 替换为实际主机名或IPSSH_PORT="2222" # 替换为实际SSH端口REMOTE_DIR="/data/myshare/" # 远程SMB共享目录LOCAL_DIR="/data/mybackup" # 本地备份目录# 执行rsync并捕获退出状态rsync -avz -e "ssh -p $SSH_PORT" --delete --progress $REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR $LOCAL_DIR# 检查rsync执行结果if [ $? -eq 0 ]; then echo "[$(date +'%Y-%m-%d %H:%M:%S')] Rsync completed successfully" >> /var/log/rsync_backup.logelse echo "[$(date +'%Y-%m-%d %H:%M:%S')] Rsync failed with error code $?" >> /var/log/rsync_backup.log # 可以在这里添加发送错误通知的代码fi4.总结通过结合rsync和crontab,我们建立了一个可靠、自动化的文件同步系统。这种方案具有以下优点:自动化运行:无需人工干预,定时自动执行高效同步:rsync只传输变化的文件部分,节省带宽和时间灵活性:支持非标准SSH端口和各种同步选项可追溯性:日志记录每次同步操作此方案适用于各种文件备份和同步场景,特别是需要定期将远程文件同步到本地的备份需求。
2025年08月05日
10 阅读
0 评论
0 点赞
2025-07-24
Linux指南(十三):磁盘
磁盘是什么01磁盘是计算机中用于长期存储数据的硬件设备,属于外存的一种,其存储的数据在断电后不会丢失。常见的磁盘类型包括机械硬盘(HDD,通过磁头读写磁性盘片存储数据)、固态硬盘(SSD,基于闪存芯片存储数据,速度更快)、U盘、移动硬盘等。在Linux系统中,磁盘被抽象为设备文件(如/dev/sda、/dev/nvme0n1),系统通过这些文件与磁盘交互,实现数据的读写和管理。磁盘常见操作02磁盘操作围绕“让磁盘可被系统使用”和“管理存储资源”展开,核心流程包括:识别磁盘:确认系统中存在的磁盘设备,了解其容量、类型等信息。分区:将物理磁盘划分为多个独立的逻辑区域(分区),便于数据分类管理(如区分系统文件和用户数据),避免数据混乱。格式化:对分区进行处理,使其支持特定的文件系统(如ext4、XFS),文件系统是管理文件存储结构的规则,决定了数据如何组织和访问。挂载:将格式化后的分区关联到Linux目录树的某个目录(挂载点),使系统能通过该目录访问分区内的文件。查看与维护:监控磁盘使用情况(如剩余空间、文件占用),检查并修复磁盘错误,确保存储稳定。磁盘常见命令03识别磁盘设备:lsblk:列出系统中所有磁盘及分区的信息,包括设备名称、大小、挂载点等,直观展示磁盘与分区的关系。fdisk -l:显示磁盘的详细信息,包括磁盘大小、分区表类型(MBR/GPT)、分区数量及每个分区的大小、类型等。分区操作:fdisk [设备名]:用于MBR分区表的磁盘分区(支持容量较小的磁盘),可创建、删除、调整分区,需进入交互模式操作(如fdisk /dev/sda)。parted [设备名]:支持GPT分区表(适用于大容量磁盘),可处理超过2TB的磁盘,支持分区大小动态调整(如parted /dev/sdb)。格式化分区:mkfs.xxx [分区名]:将分区格式化为指定文件系统,xxx为文件系统类型,如mkfs.ext4 /dev/sda1(格式化为ext4)、mkfs.xfs /dev/sdb1(格式化为XFS)。挂载与卸载:mount [分区名] [挂载点]:将分区挂载到指定目录,如mount /dev/sda1 /mnt/data。umount [挂载点/分区名]:卸载已挂载的分区,如umount /mnt/data或umount /dev/sda1。mount -a:根据/etc/fstab文件中的配置,自动挂载所有未挂载的分区(常用于系统启动时自动挂载)。查看磁盘使用情况:df -h:以人类可读的单位(如GB、MB)显示所有挂载点的磁盘空间使用情况,包括总容量、已用、可用空间及使用率。du -sh [目录/文件]:查看指定目录或文件的磁盘占用大小,-s表示汇总结果,-h为人类可读单位(如du -sh /home)。磁盘检查与修复:fsck [分区名]:检查并修复文件系统错误,需在分区未挂载时使用,如fsck.ext4 /dev/sda1(针对ext4文件系统)。badblocks [分区名]:检测分区中的坏块(无法正常存储数据的区域),如badblocks -v /dev/sda1(-v显示详细过程)。推荐:宝藏网站推荐:一个系统学习编程的网站Linux指南(一):Linux内核与Linux系统Linux指南(二):Linux命令行与图形用户界面Linux指南(七):目录介绍、目录的特性与功能、常见目录Linux指南(九):用户目录、主目录Linux指南(十):文件、一切皆文件Linux命令(四):系统管理命令介绍
2025年07月24日
2 阅读
0 评论
0 点赞
2025-07-24
Linux指南(十五):磁盘挂载与卸载
在Linux系统中,磁盘的挂载(Mount)与卸载(Umount)是管理存储设备的核心操作。挂载是将物理或虚拟磁盘(如硬盘分区、U盘、光盘等)与文件系统中的某个目录(挂载点)关联起来,使系统能够访问其中的内容;卸载则是解除这种关联,确保数据安全。挂载的基本概念01挂载点:Linux中所有存储设备都需挂载到一个目录下才能被访问,这个目录称为挂载点(通常是空目录)。例如,U盘可挂载到/mnt/usb,光盘可挂载到/media/cdrom。设备标识:存储设备在Linux中以文件形式存在于/dev目录下,常见标识如下:硬盘分区:如/dev/sda1(第一块SATA硬盘的第一个分区)、/dev/nvme0n1p1(NVMe硬盘的第一个分区)。U盘/移动硬盘:通常为/dev/sdb1、/dev/sdc1等(依插入顺序递增)。光盘:/dev/cdrom或/dev/sr0。挂载操作021. 基本语法mount [选项] 设备路径 挂载点目录2. 常用选项-t filesystem:指定文件系统类型(如ext4、xfs、ntfs、vfat等),通常可省略(系统会自动检测)。-o 选项:指定挂载参数,常见参数:ro:只读挂载(防止误修改)。rw:读写挂载(默认)。remount:重新挂载(用于修改已挂载设备的参数,如从只读改为读写)。uid=xxx/gid=xxx:挂载FAT32/NTFS等Windows文件系统时,指定用户/组权限(避免权限问题)。3. 示例挂载U盘(/dev/sdb1)到/mnt/usb(需先创建目录):先执行mkdir -p /mnt/usb创建挂载点,再执行mount /dev/sdb1 /mnt/usb(系统会自动检测文件系统)。挂载NTFS格式的移动硬盘(支持读写):需先安装ntfs-3g工具(如Ubuntu执行sudo apt install ntfs-3g),再执行mount -t ntfs-3g /dev/sdc1 /mnt/ntfs。重新挂载根目录为读写(救援模式下常用):执行mount -o remount,rw /。查看已挂载设备03使用以下命令查看系统中所有已挂载的设备及信息:mount:显示所有挂载信息(包含临时文件系统)。df -h:以人类可读的方式显示已挂载设备的空间使用情况。lsblk:列出所有块设备及其挂载点(直观展示磁盘分区结构)。卸载挂载04卸载的目的是确保数据写入完成,避免直接拔插导致数据丢失。1. 基本语法umount 设备路径 # 或 umount 挂载点目录2. 示例卸载/dev/sdb1(通过设备路径):执行umount /dev/sdb1。卸载/mnt/usb(通过挂载点):执行umount /mnt/usb。3. 常见问题:设备忙(device is busy)若卸载时提示“设备忙”,说明有程序正在访问该设备,解决方法:关闭所有访问该挂载点的程序或终端。使用fuser或lsof查找占用进程并终止:先执行fuser -m /mnt/usb查看占用/mnt/usb的进程ID,再执行kill -9 进程ID终止进程后再卸载。永久挂载05临时挂载在系统重启后会失效,若需永久挂载,需配置/etc/fstab文件(谨慎操作,错误配置可能导致系统无法启动)。1. /etc/fstab格式每行对应一个挂载配置,格式为:设备路径 挂载点 文件系统类型 挂载参数 备份标识(0=不备份) 自检顺序(0=不自检)2. 示例永久挂载/dev/sda5(ext4格式)到/data:执行echo "/dev/sda5 /data ext4 defaults 0 2" >> /etc/fstab。defaults:包含rw、suid、dev、exec、auto、nouser、async等默认参数。永久挂载NTFS移动硬盘(UUID方式,更稳定,设备标识可能随插入顺序变化):uid=1000/gid=1000:指定当前用户(通常UID=1000)拥有权限。先查询设备UUID:执行blkid /dev/sdc1(输出类似:/dev/sdc1: UUID="1234-ABCD" TYPE="ntfs")。添加到/etc/fstab:执行echo "UUID=1234-ABCD /mnt/ntfs ntfs-3g defaults,uid=1000,gid=1000 0 0" >> /etc/fstab。3. 验证配置添加后执行mount -a检查是否有错误(加载/etc/fstab中所有未挂载的设备,无报错则配置正确),避免重启后故障。推荐:Linux指南(一):Linux内核与Linux系统Linux指南(二):Linux命令行与图形用户界面Linux指南(七):目录介绍、目录的特性与功能、常见目录Linux指南(九):用户目录、主目录Linux指南(十):文件、一切皆文件Linux指南(十三):磁盘Linux命令(四):系统管理命令介绍
2025年07月24日
14 阅读
0 评论
0 点赞
2025-07-24
Rsync(远程同步):Linux 最常用的文件复制与同步工具
Rsync(远程同步)是Linux/Unix系统中用于远程和本地复制及同步文件和目录的最常用命令。借助 rsync 命令,可以跨目录、磁盘和网络远程和本地复制及同步数据,执行数据备份,并在两台 Linux 机器之间进行镜像同步。本文将详细讲解 rsync 命令的部分基本和高级用法,帮助您在基于 Linux 的机器上远程和本地传输文件。归档模式 | 增量传输 | SSH 加密 | 带宽控制📢 无需 root 权限 | 本地/远程通用 | 保留文件属性# 基础格式(归档+压缩+进度显示)rsync -avzP 源路径 目标路径常用选项:选项作用-v显示详细传输过程-r递归复制目录(不保留元数据)-a归档模式(保留所有文件属性)-z传输时压缩数据-h人性化显示数字大小-P显示实时进度条🚀 核心优势对比表特性Rsync传统 SCP传输效率✅ 增量同步(仅传差异部分)❌ 全文件传输带宽控制✅ --bwlimit 限速❌ 不支持属性保留✅ 权限/时间戳/所有者❌ 部分丢失断点续传✅ -P 选项自动续传❌ 重新传输安全传输✅ SSH 隧道加密✅ SSH 加密📦 基础操作篇1. 本地文件同步要本地复制或同步文件,可以使用以下命令,该命令将从本地机器的一个位置同步单个文件到另一个位置。rsync -zvh Python-3.13.4.tgz /tmp/backups/# 将 Python-3.13.4.tgz 同步到 /tmp/backups2. 本地目录同步(保留属性)以下命令将从一台机器上的一个目录将所有文件传输或同步到同一台机器上的另一个目录。rsync -avzh music/ oneh@192.168.2.100:/home/oneh/# 递归同步整个目录(保留属性)3. 远程 → 本地目录同步rsync -azvh oneh@192.168.2.100:/home/oneh/ /tmp/music🌐 远程操作篇4. 本地 → 远程目录(SSH 加密)使用 rsync,可以借助 SSH进行数据传输。通过 SSH 协议,可以确保数据在加密的连接中传输,从而防止任何人在数据通过互联网传输过程中窃取数据。要通过 SSH 使用 rsync,您可以使用 -e 选项指定远程 shell 命令,通常为 ssh,如下所示。rsync -avzhe ssh music/ oneh@192.168.2.100:/home/oneh/backup_music5. 远程文件 → 本地(带进度条)远程到本地,使用 --progress 显示传输进度条.rsync -avzhe ssh --progress oneh@192.168.2.100:/home/oneh/backup_music /home/oneh/backup_music6. SSH 密钥免密同步(安全推荐)# 先配置密钥:ssh-keygen + ssh-copy-idrsync -avzhe ssh /source user@IP:/dest ⚙️ 高级技巧篇7. 智能文件过滤# 包含 .c 排除 .h:rsync -avz --include='*.c' --exclude='*.h' /home/oneh/Python-3.13.4/Python/ oneh@192.168.2.100:/home/oneh/Python8. 目标端清理源端已删除文件如果源位置不存在某个文件或目录,但目标位置已经存在该文件/目录,希望在同步过程中删除目标位置的该现有文件/目录。rsync -avz --delete /home/oneh/music/ oneh@192.168.2.100:/home/oneh/backup_music/9. 传输后自动删除源文件假设你有一个主网页服务器和一个数据备份服务器,你创建了每日备份并将其与备份服务器同步,但现在你不想在网页服务器上保留该备份的本地副本。rsync --remove-source-files -avzh data.log oneh@192.168.2.100:/home/oneh/backup/10. 空运行测试(安全防护)如果您是 rsync 的新手,且不确定自己的命令会产生什么具体效果,那么 rsync 可能会对目标文件夹中的内容造成混乱,而要撤销这些操作可能会非常繁琐。使用此选项不会对文件进行任何修改,并显示命令的输出结果。如果输出结果与您期望的完全一致,则可以从命令中移除‘--dry-run’选项,并在终端中运行。rsync --dry-run -avz hello.py oneh@192.168.2.100:/home/oneh/🛡️ 企业级场景方案11. 带宽限速(避免网络阻塞)使用--bwlimit选项从一台机器向另一台机器传输数据时,可以设置带宽限制。此选项可帮助我们限制I/O带宽。rsync --bwlimit=5000 -avzh Python-3.13.4.tgz oneh@192.168.2.100:/home/oneh/ 12. 故障恢复传输rsync -avzP --partial /中断文件 目标路径📊 参数速查表参数作用示例-a归档模式(全属性保留)rsync -a src/ dest/-z传输时压缩rsync -z data.log remote:--max-size限制文件大小--max-size='100M'-W禁用增量传输(全文件)rsync -W image.iso dest/--stats显示传输统计rsync -a --stats src/ dest/💎 结语与进阶建议灾难防护:重要操作前必加 --dry-run性能调优:大文件传输用 -W + --bwlimit 组合自动化:搭配 cron 实现定时备份深度学习:man rsync 查看 50+ 高级参数✨ 下一步实践:# 生成测试环境mkdir -p test/{src,dest} && touch test/src/file{1..100}.txt# 体验实时同步:watch -n 1 "rsync -avz test/src/ test/dest/ | grep 'sent'"推荐阅读:👉 1.在 Linux 系统上绝对不能执行的 10 条命令-很危险的👉 2.基本的Linux命令,【tail】 命令常用的实用示例,告别海量日志,精准抓取关键信息👉 3.章节2:基本的Linux命令,【echo】 命令常用的实用示例,Linux终端输出的瑞士军刀!
2025年07月24日
24 阅读
0 评论
0 点赞
2025-07-17
100个Docker容器操作命令实战大全!
容器化部署已成为现代运维的核心技能,掌握这些命令让你轻松驾驭从开发到生产的全流程。一、容器生命周期管理(18个)1. 运行容器:docker run -d --name web nginx:latest 后台启动Nginx容器2. 启动已停止容器:docker start web3. 停止运行中容器:docker stop web(发送SIGTERM信号)4. 强制停止容器:docker kill web(发送SIGKILL信号)5. 重启容器:docker restart web6. 暂停容器进程:docker pause web(冻结进程树)7. 恢复暂停容器:docker unpause web8. 删除停止的容器:docker rm web9. 强制删除运行中容器:docker rm -f web(生产环境慎用)10. 批量删除停止容器:docker container prune11. 创建容器不启动:docker create --name temp alpine sleep 360012. 容器重命名:docker rename old_name new_name13. 更新运行参数:docker update --memory 512m web 动态调整内存限制14. 设置重启策略:docker run --restart=always nginx 崩溃后自动重启15. 容器自愈检测:docker run --health-cmd="curl -f http://localhost || exit 1" --health-interval=30s nginx16. 查看健康状态:docker inspect --format='{{.State.Health.Status}}' web17. 资源限制(CPU):docker run --cpus=1.5 app 限制使用1.5核CPU18. 资源限制(内存):docker run -m 2g --memory-swap=3g app 内存+Swap限制二、容器操作与调试(15个)19. 进入交互终端:docker exec -it web /bin/bash20. 后台执行命令:docker exec -d web touch /tmp/test.log21. 查看实时日志:docker logs -f --tail 100 web(追踪最后100行)22. 查看进程列表:docker top web23. 容器详情查看:docker inspect web | jq .(配合jq解析JSON)24. 端口映射检查:docker port web25. 文件复制到容器:docker cp app.conf web:/etc/nginx/conf.d/26. 从容器复制文件:docker cp web:/var/log/nginx/error.log ./27. 查看资源统计:docker stats --no-stream(显示当前状态)28. 实时监控资源:docker stats web mysql(监控特定容器)29. 容器差异检查:docker diff web(查看文件系统变更)30. 容器提交为镜像:docker commit -c 'CMD ["nginx"]' web nginx:v2(慎用,推荐Dockerfile)31. 容器导出快照:docker export web > web.tar32. 挂载调试工具:docker run --cap-add SYS_PTRACE --security-opt seccomp=unconfined debug_tool33. 使用nsenter调试:nsenter --target $(docker inspect -f {{.State.Pid}} web) --mount --uts --ipc --net --pid三、镜像管理(12个)34. 拉取镜像:docker pull alpine:3.18(指定版本避免latest风险)35. 查看本地镜像:docker images --filter "dangling=false"(过滤悬空镜像)36. 删除镜像:docker rmi alpine:3.1737. 强制删除镜像:docker rmi -f redis(被容器使用时需加-f)38. 清理悬空镜像:docker image prune39. 导出镜像存档:docker save -o nginx.tar nginx:latest40. 导入镜像存档:docker load -i nginx.tar41. 查看镜像历史:docker history nginx42. 镜像标签管理:docker tag nginx:latest myreg.com/nginx:v143. 推送镜像到仓库:docker push myreg.com/nginx:v144. 构建镜像:docker build -t myapp:v1 --build-arg ENV=prod .45. 多阶段构建:Dockerfile中:COPY --from=builder /app/bin /usr/bin四、存储管理(10个)46. 创建匿名卷:docker run -v /data mysql(自动创建)47. 绑定主机目录:docker run -v /host/path:/container/path nginx48. 创建命名卷:docker volume create app_data49. 使用命名卷:docker run -v app_data:/var/lib/mysql mysql50. 查看卷详情:docker volume inspect app_data51. 清理未使用卷:docker volume prune52. 查看挂载点:docker inspect -f '{{ .Mounts }}' web53. 临时文件系统:docker run --tmpfs /tmp:size=100m app54. 只读挂载:docker run -v /conf:/etc/nginx:ro nginx(生产安全必备)55. 共享存储卷:docker run --volumes-from db_storage backup_tool五、网络管理(12个)56. 查看网络列表:docker network ls57. 创建自定义网络:docker network create --driver bridge my_net58. 指定容器网络:docker run --network=my_net web59. 容器别名访问:docker run --network=my_net --name web --network-alias website nginx60. 查看网络详情:docker network inspect my_net61. 连接运行中容器:docker network connect my_net existing_container62. 断开容器网络:docker network disconnect my_net container63. 端口随机映射:docker run -P nginx(自动绑定随机主机端口)64. 指定端口映射:docker run -p 8080:80 -p 443:443 nginx65. 主机模式网络:docker run --network=host nginx(共享主机网络栈)66. 容器间直连:docker run --link redis:db app(传统方式,推荐使用自定义网络)67. DNS配置覆盖:docker run --dns 8.8.8.8 --dns-search example.com alpine六、生产运维实践(15个)68. 日志驱动设置:docker run --log-driver=json-file --log-opt max-size=10m nginx69. 日志标签添加:docker run --log-opt tag="{{.Name}}/{{.ID}}" nginx70. 环境变量注入:docker run -e TZ=Asia/Shanghai -e APP_ENV=prod app71. 时区同步配置:docker run -v /etc/localtime:/etc/localtime:ro app72. 容器自启策略:docker run --restart=on-failure:5 app(失败时最多重启5次)73. 内核参数调整:docker run --sysctl net.core.somaxconn=1024 app74. 容器资源限制:docker run --cpus=".5" -m 500m --blkio-weight=500 app75. OOM优先级设置:docker run --oom-score-adj=500 app(值越高越易被kill)76. 容器用户隔离:docker run --user 1000:1000 app(避免root运行)77. 只读文件系统:docker run --read-only app(需配合tmpfs使用)78. 能力控制:docker run --cap-add NET_ADMIN --cap-drop SYS_ADMIN app79. 安全加固:docker run --security-opt no-new-privileges app(禁止提权)80. AppArmor配置:docker run --security-opt apparmor=my_profile app81. SELinux标签:docker run --security-opt label=type:container_t app82. 设备访问授权:docker run --device=/dev/snd:/dev/snd:rw audio_app七、集群与编排(10个)83. 初始化Swarm:docker swarm init --advertise-addr 192.168.1.10084. 加入Swarm集群:docker swarm join --token SWMTKN... 192.168.1.100:237785. 部署Stack服务:docker stack deploy -c docker-compose.yml myapp86. 查看服务列表:docker service ls87. 服务伸缩操作:docker service scale web=588. 滚动更新配置:docker service update --image nginx:1.23 web89. 回滚服务版本:docker service rollback web90. 查看服务日志:docker service logs -f web91. 节点状态检查:docker node ls92. 服务约束部署:docker service create --constraint 'node.role==worker' nginx八、系统维护与监控(8个)93. 查看Docker版本:docker version94. 系统全局信息:docker info95. 磁盘空间清理:docker system prune -af(慎用!清理所有未用资源)96. 事件实时监控:docker events --filter 'event=die'(捕获容器退出事件)97. 构建缓存清理:docker builder prune98. 检查容器配置:docker config ls(Swarm模式)99. 容器漏洞扫描:docker scan nginx:latest(需登录Docker Hub)100. 资源使用报告:docker system df -v(详细磁盘占用分析)生产环境五大黄金法则1. 镜像版本固化:禁止使用latest标签,必须明确版本号(如nginx:1.25.3)2. 资源硬性限制:所有容器必须设置--memory和--cpus限制3. 日志轮转机制:通过max-size和max-file防止日志撑爆磁盘4. 非root用户运行:使用--user指定非特权用户(UID>1000)5. 只读文件系统:配合tmpfs实现写入路径最小化重要提醒:永远不要在容器内存储重要数据!所有持久化数据必须通过:• 绑定挂载(Bind Mounts)• 命名卷(Named Volumes)• 分布式存储(NFS/Ceph等)掌握这100个命令只是起点,真正的容器高手深谙以下原则:✅ 容器即不可变基础设施(Immutable Infrastructure)✅ 日志输出到stdout/stderr而非文件✅ 单容器单进程模型(Sidecar模式除外)✅ 镜像构建遵循最小化原则(如Alpine基础镜像)记住: 最危险的Docker命令不是rm -f,而是缺乏生产级意识的随意操作。 以上,既然看到这里了,如果觉得不错,随手点个赞、在看、转发三连吧,如果想第一时间收到推送,也可以给我个星标⭐~谢谢你看我的文章,我们,下次再见。
2025年07月17日
6 阅读
0 评论
0 点赞
1
2
3
...
6