行业资讯

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

发布时间:2026/7/22 16:23:40
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 psdocker 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 sourcemyvolume,target/app/data nginx3.绑定挂载# 开发环境代码热重载 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 Compose1.基本概念用途多容器应用的一键编排与管理文件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_ENVproduction 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.系统架构分层应用层用户程序系统库层提供API接口Shell层命令行接口内核层直接控制硬件系统核心硬件层物理设备4.应用领域服务器与托管桌面与个人使用嵌入式系统网络安全Kali Linux六、Linux 文件与目录操作1.基本命令命令用途常用选项说明pwd显示当前工作目录的完整路径无Print Working Directorycd切换目录cd ~家目录、cd ..上级、cd -返回上次目录Change Directoryls列出目录内容-a显示隐藏文件、-l详细信息Listmkdir创建目录-p递归创建多层目录Make Directoryrmdir删除空目录无Remove Directoryrm -r递归删除非空目录-i交互确认、-f强制危险操作cat查看小文件全部内容-n显示行号大文件用lesstouch创建空文件或更新文件时间戳无已存在文件仅更新时间戳echo打印文本或创建文件 file覆盖、 file追加不能直接删除文件内容2.目录操作技巧递归创建mkdir -p a/b/c自动创建中间目录安全删除先确认路径重要数据先备份文件查看小文件用cat大文件用less支持双向滚动七、Linux 系统信息与帮助1.系统信息命令命令用途常用选项说明df -h查看磁盘使用情况-h人类可读格式Disk Freeps aux查看所有进程信息aux显示所有用户进程Process Statusuname -a查看系统内核信息-a所有信息Unix Nametop动态查看系统资源使用无实时监控systemctl管理系统服务start/stop/restart/statussystemd服务管理journalctl查看系统日志-f跟踪日志systemd日志2.帮助系统man 命令查看命令手册页按/搜索关键词按q退出支持所有已安装命令--help 选项快速查看命令帮助如ls --help3.其他工具命令grep文本搜索如grep error log.txtfind文件查找wc统计行数、字数、字节数sort排序八、Linux 文件系统与权限1.文件系统层次结构标准FHS目录主要用途示例/根目录所有目录的起点/bin系统启动必需的用户命令如ls、cp核心命令/sbin系统管理命令需root权限如reboot、fdisk管理命令/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/user4.文件权限基础三类主体所有者Owner、所属组Group、其他用户Others三种权限读r、写w、执行x权限表示符号表示-rwxr-xr-x八进制表示755rwxr-xr-x、644rw-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 nginxRHEL/CentOS/FedoraDNF/YUMsudo dnf install nginxopenSUSEZyppersudo zypper install nginxArch/ManjaroPacmansudo pacman -S nginx2.APT常用操作# 更新软件包列表 sudo apt update ​ # 安装软件 sudo apt install package ​ # 移除软件保留配置 sudo apt remove package ​ # 完全移除包括配置 sudo apt purge package ​ # 搜索软件包 apt search keyword ​ # 查看已安装 apt list --installed3.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 最佳实践镜像标签生产环境避免使用latest明确指定版本数据持久化优先使用Volumes生产环境开发环境可用Bind Mounts热重载敏感数据使用Docker Secrets端口管理不要暴露不必要的端口使用-p明确指定映射关系容器清理定期执行docker system prune清理未使用资源定期执行docker volume prune清理未使用卷环境变量敏感信息通过.env文件管理不硬编码2.Linux 安全实践最小权限原则只授予必要权限敏感文件适当权限设置如私钥600备份重要操作前备份数据日志监控定期检查系统日志软件更新定期更新系统和软件包3.Compose 最佳实践版本控制Compose文件加入版本控制.env文件除外多环境配置为不同环境准备不同的.env文件资源限制为服务设置CPU/内存限制健康检查配置healthcheck确保服务就绪十一、易错点总结1.Docker 相关端口映射方向-p 主机:容器不是容器:主机数据持久化容器删除后可写层数据丢失EXPOSE vs -pEXPOSE只是声明-p才是实际映射exec 限制只能在运行中的容器使用路径要求Bind Mounts必须使用绝对路径环境变量安全不要将密码等硬编码在yml文件中2.Linux 相关mkdir 递归创建多层目录必须加-prm 危险rm -r递归删除不可恢复局部变量必须显式初始化目录权限必须有x权限才能进入目录服务管理启动/停止服务需要root权限通常用sudo3.综合要点服务发现Compose中服务可通过服务名直接访问镜像标签生产环境避免latest卷管理Volumes由Docker管理Bind Mounts使用主机路径帮助系统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 └── 服务管systemctlstart/stop/enable/status