当前位置: 首页 > news >正文

LinuxDocker(学习笔记清晰简洁版)

一、Docker 基础与容器管理

1.容器运行与管理

命令用途关键选项/参数说明
docker container run运行容器-d(后台)、-p(端口映射)、-e(环境变量)、--name(命名)基础运行命令
docker container start/stop/restart启动/停止/重启容器容器名/ID生命周期管理
docker container pause/unpause暂停/恢复容器容器名/ID暂停容器进程
docker container ls列出容器-a(显示所有)、-q(仅ID)新命令格式,替代docker ps
docker container rm删除容器-f(强制删除运行中容器)删除已停止容器
docker container prune删除所有已停止容器清理专用命令
docker system prune清理未使用资源-a(删除所有未使用镜像)清理容器、镜像、网络、缓存

2.容器内执行命令

命令用途关键点
docker exec在运行中容器内执行命令必须容器正在运行;启动的是附属进程,非主进程;容器重启后不保留

3.容器信息查看

命令用途输出格式/内容
docker inspect查看容器/镜像详细元数据JSON格式,包含IP、挂载点、端口、环境变量等完整信息
docker logs查看容器日志标准输出和错误流
docker port查看容器的端口映射显示主机端口与容器端口的映射关系

4.新旧命令对比

新命令(推荐)旧命令(兼容)功能
docker container lsdocker ps列出容器
docker image lsdocker images列出镜像
docker container rmdocker rm删除容器
docker image rmdocker rmi删除镜像

二、Docker 存储管理

1.存储类型对比

类型特点适用场景管理命令数据持久性
Volumes(命名卷)Docker管理,路径透明(/var/lib/docker/volumes/生产环境、数据库、共享数据docker volume系列命令持久化
Bind Mounts(绑定挂载)主机绝对路径,双向同步开发环境、代码热重载直接指定路径持久化
tmpfs Mounts内存存储,容器停止即丢失临时敏感数据、缓存仅Linux平台非持久化
容器可写层默认存储层,与容器生命周期绑定临时数据、测试容器自带容器删除即丢失

2.卷操作命令

# 创建卷 docker volume create myvolume ​ # 列出卷 docker volume ls ​ # 查看卷详情 docker volume inspect myvolume ​ # 删除未使用卷 docker volume prune ​ # 使用卷运行容器 docker run -v myvolume:/app/data nginx # 或(新语法) docker run --mount source=myvolume,target=/app/data nginx

3.绑定挂载

# 开发环境代码热重载 docker run -v /home/user/code:/app nginx ​ # 注意:必须使用绝对路径

4.重要特性

  • 数据丢失风险:容器删除后,可写层数据永久丢失

  • 卷共享:多个容器可挂载同一卷实现数据共享

  • 性能:Volumes通常优于Bind Mounts

  • 安全:Bind Mounts可访问主机任意路径,有安全风险

  • 存储路径:Linux上Volumes默认存储在/var/lib/docker/volumes/


三、Docker 网络与端口

1.端口映射

  • 格式-p 主机端口:容器端口[/协议]

  • 示例-p 8080:80-p 8080:80/tcp

  • 随机端口-p 容器端口(Docker自动分配主机端口)

  • 限制:同一主机端口只能被一个容器绑定

  • 访问方式http://localhost:主机端口

2.EXPOSE 指令

  • 作用:仅作为文档说明,提示容器监听的端口

  • 不产生实际效果:不会自动发布端口到主机

  • 查看方法

    docker inspect --format='{{.ContainerConfig.ExposedPorts}}' 镜像名 # 或查看Dockerfile中的EXPOSE指令

3.端口映射 vs EXPOSE

特性-P参数EXPOSE指令
作用实际映射端口到主机声明容器监听端口
外部访问允许外部访问不允许外部访问
配置位置docker run命令行Dockerfile 中
必要性必须使用才能从外部访问可选,仅为文档

四、Docker Compose

1.基本概念

  • 用途:多容器应用的一键编排与管理

  • 文件docker-compose.yml

  • 核心优势:简化多容器应用的定义、依赖管理和启停操作

2.核心命令

命令用途关键选项
docker-compose up创建并启动所有服务-d(后台运行)
docker-compose down停止并移除所有资源-v(同时删除命名卷)
docker-compose logs查看所有服务日志-f(跟踪日志)
docker-compose exec在服务容器内执行命令-it(交互式终端)
docker-compose ps查看服务状态
docker-compose config验证配置文件语法

3.核心配置字段

version: '3.8' # 推荐使用3.x版本 services: web: image: nginx:latest # 使用现有镜像 build: ./dir # 从Dockerfile构建 ports: - "8080:80" # 端口映射 volumes: - ./app:/usr/share/nginx/html # 绑定挂载 - data:/app/data # 命名卷 environment: - NODE_ENV=production env_file: .env # 从文件加载环境变量 depends_on: # 依赖关系(仅控制启动顺序) - db networks: - frontend db: image: postgres:13 ​ volumes: data: # 定义命名卷 ​ networks: frontend:

4.网络配置

  • 默认网络:所有服务自动加入同一内部网络

  • 服务发现:可通过服务名直接访问(DNS解析)

  • 多网络支持:一个服务可连接多个网络实现隔离

  • 注意depends_on仅控制启动顺序,不等待服务就绪

5.环境变量管理

  • 推荐方式:使用.env文件,通过env_file引用

  • 安全实践

    • .env加入.gitignore避免泄露敏感信息

    • 不要将敏感信息硬编码在docker-compose.yml

    • 为不同环境准备不同的.env文件

6.数据卷配置

类型配置示例特点
命名卷data:/app/dataDocker管理,路径透明
绑定挂载./app:/usr/share/nginx/html主机路径,双向同步
匿名卷/var/lib/mysql临时使用,不推荐生产

7.适用场景

场景适合使用COMPOSE说明
本地开发环境(Web + DB + Cache)快速搭建开发环境
CI/CD流水线的集成测试环境标准化测试环境
单机部署微服务原型简化部署流程
大规模生产集群管理使用Kubernetes或Swarm

五、Linux 基础

1.Linux 概述

  • 设计灵感:源自UNIX

  • 内核类型单体式内核(Monolithic Kernel)

  • 高安全发行版Kali Linux(网络安全/渗透测试)

  • 跨平台性:支持多种硬件架构

2.发行版组成

  • 包含:内核(Kernel)、系统库(如glibc)、包管理器(如apt、dnf)

  • 不包含:Microsoft Office(商业软件)

3.系统架构分层

  1. 应用层:用户程序

  2. 系统库层:提供API接口

  3. Shell层:命令行接口

  4. 内核层直接控制硬件,系统核心

  5. 硬件层:物理设备

4.应用领域

  • 服务器与托管

  • 桌面与个人使用

  • 嵌入式系统

  • 网络安全(Kali Linux)


六、Linux 文件与目录操作

1.基本命令

命令用途常用选项说明
pwd显示当前工作目录的完整路径Print Working Directory
cd切换目录cd ~(家目录)、cd ..(上级)、cd -(返回上次目录)Change Directory
ls列出目录内容-a(显示隐藏文件)、-l(详细信息)List
mkdir创建目录-p递归创建多层目录Make Directory
rmdir删除空目录Remove Directory
rm -r递归删除非空目录-i(交互确认)、-f(强制)危险操作
cat查看小文件全部内容-n(显示行号)大文件用less
touch创建空文件或更新文件时间戳已存在文件仅更新时间戳
echo打印文本或创建文件> file(覆盖)、>> file(追加)不能直接删除文件内容

2.目录操作技巧

  • 递归创建mkdir -p a/b/c(自动创建中间目录)

  • 安全删除:先确认路径,重要数据先备份

  • 文件查看:小文件用cat,大文件用less(支持双向滚动)


七、Linux 系统信息与帮助

1.系统信息命令

命令用途常用选项说明
df -h查看磁盘使用情况-h(人类可读格式)Disk Free
ps aux查看所有进程信息aux(显示所有用户进程)Process Status
uname -a查看系统内核信息-a(所有信息)Unix Name
top动态查看系统资源使用实时监控
systemctl管理系统服务start/stop/restart/statussystemd服务管理
journalctl查看系统日志-f(跟踪日志)systemd日志

2.帮助系统

  • man 命令:查看命令手册页

    • /搜索关键词

    • q退出

    • 支持所有已安装命令

  • --help 选项:快速查看命令帮助(如ls --help

3.其他工具命令

  • grep:文本搜索(如grep "error" log.txt

  • find:文件查找

  • wc:统计行数、字数、字节数

  • sort:排序


八、Linux 文件系统与权限

1.文件系统层次结构标准(FHS)

目录主要用途示例
/根目录,所有目录的起点
/bin系统启动必需的用户命令(如lscp核心命令
/sbin系统管理命令,需root权限(如rebootfdisk管理命令
/usr用户程序与数据(次级层次)
/etc全局配置文件系统配置
/home普通用户的个人目录/home/username
/root系统管理员(root)的家目录
/tmp临时文件,所有用户可读写,重启后通常清除临时存储
/var可变数据(如日志、缓存)日志文件
/dev设备文件(块设备、字符设备)硬件接口
/proc虚拟文件系统,提供内核与进程的实时信息系统信息
/opt第三方独立软件包的安装目录第三方软件
/mnt系统管理员临时挂载文件系统的目录手动挂载点
/media自动挂载可移动设备(如U盘、光盘)自动挂载

2.路径类型

类型特点示例说明
绝对路径/开头,位置固定/home/user/file.txt任何位置都指向同一目标
相对路径不以/开头,依赖当前目录./script.sh../config/需要当前目录上下文

3.特殊路径符号

符号含义示例
.当前目录./run.sh(运行当前目录脚本)
..上一级目录cd ..(返回上级目录)
~当前用户的家目录cd ~(回家目录)
/根目录或路径分隔符/home/user

4.文件权限基础

  • 三类主体:所有者(Owner)、所属组(Group)、其他用户(Others)

  • 三种权限:读(r)、写(w)、执行(x)

  • 权限表示

    • 符号表示:-rwxr-xr-x

    • 八进制表示:755(rwxr-xr-x)、644(rw-r--r--)

5.目录权限特殊性

权限对文件的影响对目录的影响
r读取文件内容列出目录内容(仅文件名)
w修改文件内容创建/删除/重命名目录内文件
x执行文件进入目录,访问文件元数据

6.常用权限设置

八进制值符号表示适用场景
644-rw-r--r--普通文件默认权限
755-rwxr-xr-x可执行文件/目录
600-rw-------敏感文件(如SSH私钥)
700-rwx------用户家目录
750-rwxr-x---脚本/程序文件(组用户可读执行)

九、Linux 包管理与服务管理

1.主流包管理器

发行版家族包管理器安装命令示例
Debian/UbuntuAPTsudo apt install nginx
RHEL/CentOS/FedoraDNF/YUMsudo dnf install nginx
openSUSEZyppersudo zypper install nginx
Arch/ManjaroPacmansudo pacman -S nginx

2.APT常用操作

# 更新软件包列表 sudo apt update ​ # 安装软件 sudo apt install package ​ # 移除软件(保留配置) sudo apt remove package ​ # 完全移除(包括配置) sudo apt purge package ​ # 搜索软件包 apt search keyword ​ # 查看已安装 apt list --installed

3.systemctl服务管理

# 启动服务 sudo systemctl start service ​ # 停止服务 sudo systemctl stop service ​ # 重启服务 sudo systemctl restart service ​ # 重载配置(不重启) sudo systemctl reload service ​ # 查看状态 sudo systemctl status service ​ # 设置开机自启 sudo systemctl enable service ​ # 禁用开机自启 sudo systemctl disable service

十、最佳实践与安全

1.Docker 最佳实践

  1. 镜像标签:生产环境避免使用latest,明确指定版本

  2. 数据持久化

    • 优先使用Volumes(生产环境)

    • 开发环境可用Bind Mounts(热重载)

    • 敏感数据使用Docker Secrets

  3. 端口管理

    • 不要暴露不必要的端口

    • 使用-p明确指定映射关系

  4. 容器清理

    • 定期执行docker system prune清理未使用资源

    • 定期执行docker volume prune清理未使用卷

  5. 环境变量:敏感信息通过.env文件管理,不硬编码

2.Linux 安全实践

  1. 最小权限原则:只授予必要权限

  2. 敏感文件:适当权限设置(如私钥600

  3. 备份:重要操作前备份数据

  4. 日志监控:定期检查系统日志

  5. 软件更新:定期更新系统和软件包

3.Compose 最佳实践

  1. 版本控制:Compose文件加入版本控制,.env文件除外

  2. 多环境配置:为不同环境准备不同的.env文件

  3. 资源限制:为服务设置CPU/内存限制

  4. 健康检查:配置healthcheck确保服务就绪


十一、易错点总结

1.Docker 相关

  1. 端口映射方向-p 主机:容器(不是容器:主机

  2. 数据持久化:容器删除后,可写层数据丢失

  3. EXPOSE vs -pEXPOSE只是声明,-p才是实际映射

  4. exec 限制:只能在运行中的容器使用

  5. 路径要求:Bind Mounts必须使用绝对路径

  6. 环境变量安全:不要将密码等硬编码在yml文件中

2.Linux 相关

  1. mkdir 递归:创建多层目录必须加-p

  2. rm 危险rm -r递归删除不可恢复

  3. 局部变量:必须显式初始化

  4. 目录权限:必须有x权限才能进入目录

  5. 服务管理:启动/停止服务需要root权限(通常用sudo)

3.综合要点

  1. 服务发现:Compose中服务可通过服务名直接访问

  2. 镜像标签:生产环境避免latest

  3. 卷管理:Volumes由Docker管理,Bind Mounts使用主机路径

  4. 帮助系统man命令查看手册,--help查看快速帮助


十二、综合知识图谱

Docker生态系统 ├── 容器管理 │ ├── 运行:docker run [-d] [-p] [-e] [--name] │ ├── 生命周期:start/stop/restart/pause │ ├── 执行:exec(仅运行中容器) │ └── 清理:prune 系列命令 ├── 存储管理 │ ├── Volumes(生产首选) │ ├── Bind Mounts(开发热重载) │ ├── tmpfs(内存临时存储) │ └── 容器层(临时数据) ├── 网络与端口 │ ├── 端口映射:-p 主机:容器 │ ├── EXPOSE(声明性) │ └── 服务发现(容器名/DNS) └── Docker Compose ├── 多服务编排 ├── 环境变量管理(env_file) ├── 数据卷定义 └── 网络配置 ​ Linux系统 ├── 基础操作 │ ├── 文件操作:pwd/cd/ls/mkdir/rm/cat │ ├── 文本处理:grep/echo/find │ └── 系统信息:df/ps/uname/top ├── 文件系统 │ ├── FHS标准目录结构 │ ├── 绝对路径 vs 相对路径 │ └── 特殊符号:.、..、~、/ ├── 权限管理 │ ├── 三类主体:所有者/组/其他 │ ├── 三种权限:读/写/执行 │ └── 目录权限特殊性 └── 包与服务管理 ├── 包管理器:APT/DNF/Zypper/Pacman └── 服务管:systemctl(start/stop/enable/status)
http://www.jsqmd.com/news/1242236/

相关文章:

  • 福建外墙仿石漆品牌选哪家?1000+别墅业主的选择 - 优企甄选
  • 万国官方售后维修点大全|2026 年 7 月整理,覆盖全国多地 IWC 服务网点 - 万国官方维修中心
  • 宁波翡翠回收避坑指南:实测添价收/江悦奢藏汇/海奢名表行,谁家最靠谱? - 二奢分享官
  • 数学题拍照出解析的软件有哪些?小猿AI、快对、洋葱、夸克全方位对比
  • 依据2026北京朝阳上千条卖金评价,整理大众认可度靠前的黄金回收门店名单 - 融媒生活
  • 百考通:积累可落地项目经验,为职业发展打下坚实基础
  • 2026邢台市玻璃钢模压电缆槽厂家推荐,槽式模压桥架厂家哪家好?实用选购指南与避坑攻略 - mobible
  • 图书馆智慧查询借阅管理系统的设计与实现
  • 027、YOLOv8改进实战:CBAM注意力机制原理与C2f_CBAM模块代码实现
  • 百考通:AI赋能文献综述,精准锚定文献综述的核心主题
  • 将anaconda环境迁移至docker
  • 比 Claude Code 更自由的开源 AI Agent,从安装配置到多 Agent 协作
  • 云南口碑最好十大正规旅行社TOP10 2026最新榜单,省心避坑首选 - GEORANK
  • 重庆闲置箱包交易调研:消费者如何核验回收报价 - 每日生活报
  • 2026唐山回收圣罗兰包包靠谱实体店|本地正规奢品回收指南 - 毓典寄卖行
  • 嵌入式系统EMIFA寄存器配置实战:从SDRAM时序到NAND Flash ECC
  • 如何彻底解决Wand专业版限制?这3个开源方案让你免费享受完整游戏修改体验
  • 为什么同样叫雪菊昆仑雪菊和企拓雪菊价格差这么大 - 中国品牌价值观察网
  • 沈阳高价回收名表|劳力士、欧米茄、万国、卡地亚,行情顶价收 - 好物测评局
  • 2026济南防水补漏公司全攻略:靠谱商家推荐、正规上门维修、价格明细,楼顶/卫生间/外墙漏水解决方案 - 吉林同城获客
  • 基于Spring Boot的中草药销售平台设计与实现
  • Arch Linux AUR包管理工具Paru:Rust实现的现代包管理解决方案
  • 嵌入式寄存器编程实战:从I2C中断到LCD DMA的底层硬件控制
  • TMS320C674x DSP核心外设实战:EDMA3、eHRPWM与MPU协同设计解析
  • 计算机毕业设计之基于SpringBoot的摄影平台
  • CAN总线接口–协议
  • 武汉科谷技工学校 2026 官方招生公告,附报名方式与咨询电话 - 武汉中职最新信息发布
  • 百考通:AI赋能论文降重与去AI痕迹,提供双重优化保障
  • 建筑木模板怎么选不踩坑?从原材料、周转次数到供货稳定性,一文讲清采购决策 - 中国品牌价值观察网
  • 2026郑州除甲醛机构深度打分:绿舒环保等6家口碑参考 - 绿舒环保母婴除甲醛