Docker 是 Linux 上最主流的容器化引擎基于 Linux 内核的 Namespace、Cgroup、UnionFS实现轻量级隔离能把应用与依赖打包成可移植容器做到 “一次构建、随处运行”。一、Docker 核心概念Linux 环境镜像Image只读模板包含应用 运行环境 依赖分层存储OverlayFS可复用、可共享。容器Container镜像的运行实例有独立进程 / 网络 / 文件系统轻量、秒级启动。仓库Registry存储 / 分发镜像如 Docker Hub、阿里云镜像仓库。Docker EngineLinux 后台守护进程dockerd负责管理镜像、容器、网络、存储。二、Linux 安装 Docker主流发行版Ubuntu / Debian推荐官方源# 1. 卸载旧版如有sudoaptremovedockerdocker-engine docker.io containerd runc# 2. 安装依赖sudoaptupdatesudoaptinstall-yca-certificatescurlgnupg lsb-release# 3. 添加 GPG 密钥sudomkdir-p/etc/apt/keyringscurl-fsSLhttps://download.docker.com/linux/ubuntu/gpg|sudogpg--dearmor-o/etc/apt/keyrings/docker.gpg# 4. 添加 Docker 源echodeb [arch$(dpkg --print-architecture)signed-by/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu$(lsb_release-cs)stable|sudotee/etc/apt/sources.list.d/docker.list/dev/null# 5. 安装 Docker Enginesudoaptupdatesudoaptinstall-ydocker-ce docker-ce-cli containerd.io docker-compose-plugin# 6. 启动并开机自启sudosystemctlenable--nowdocker# 7. 验证docker--versiondockerrun hello-worldCentOS / RHEL / Rocky Linux# 1. 卸载旧版sudoyum removedockerdocker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine# 2. 安装依赖sudoyuminstall-yyum-utils# 3. 添加 Docker 源sudoyum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo# 4. 安装sudoyuminstall-ydocker-ce docker-ce-cli containerd.io docker-compose-plugin# 5. 启动并开机自启sudosystemctlenable--nowdocker# 6. 验证docker--versiondockerrun hello-world一键脚本快速安装# 官方脚本curl-fsSLhttps://get.docker.com|sudosh# 国内可换阿里云脚本curl-fsSLhttps://mirrors.aliyun.com/docker-ce/linux/get-docker.sh|sudosh三、Linux 常用 Docker 命令镜像操作dockerpull nginx# 拉取镜像dockerimages# 查看本地镜像dockerrmi nginx# 删除镜像dockerbuild-tmyapp.# 从 Dockerfile 构建镜像容器操作dockerrun-d-p80:80 nginx# 后台运行端口映射dockerps# 查看运行中容器dockerps-a# 查看所有容器dockerstop容器ID/名# 停止容器dockerstart容器ID/名# 启动容器dockerrm容器ID/名# 删除容器dockerexec-it容器IDbash# 进入容器终端系统与日志dockersystemdf# 查看 Docker 磁盘占用dockerlogs容器ID# 查看容器日志dockerinfo# 查看 Docker 信息四、Linux 下 Docker 核心原理Namespace隔离进程、网络、文件系统、用户、UTS、IPC让容器像独立系统。Cgroup限制容器 CPU、内存、磁盘 IO、网络带宽防止资源抢占。UnionFSOverlayFS镜像分层共享底层层、只写顶层节省空间、加速启动。C/S 架构docker 客户端通过 API 与 dockerd 守护进程通信。五、Linux 下 Docker 优势轻量比虚拟机小得多秒级启动资源占用低。一致环境开发 / 测试 / 生产环境完全一致避免 “在我机器上能跑” 问题。可移植一次构建在任何 Linux 主机 / 云服务器运行。易扩展适合微服务、CI/CD、快速扩容场景。Docker 常用命令速查表可直接复制和实用 Dockerfile 编写示例覆盖日常开发 / 运维高频场景新手也能快速上手。一、Docker 常用命令速查表按场景分类# 1. 基础环境 系统信息 docker--version# 查看 Docker 版本dockerinfo# 查看 Docker 系统信息镜像/容器数、驱动、内核等dockersystemdf# 查看 Docker 磁盘占用镜像/容器/卷/构建缓存dockersystem prune# 清理无用资源停止的容器、悬空镜像、未使用网络dockersystem prune-a# 深度清理含未使用的镜像谨慎使用# 2. 镜像操作 dockerpull nginx:1.25# 拉取指定版本镜像不加版本默认latestdockerpull registry.cn-hangzhou.aliyuncs.com/library/nginx# 拉取国内镜像dockerimages# 列出本地所有镜像dockerimages-q# 只显示镜像ID批量删除用dockerrmi 镜像ID/镜像名# 删除单个镜像dockerrmi$(dockerimages-q)# 删除所有本地镜像谨慎dockertag 原镜像名:版本 新镜像名:版本# 给镜像打标签推送仓库用dockerpush 镜像名:版本# 推送镜像到仓库需先登录dockersave-omynginx.tar nginx:1.25# 导出镜像为tar包dockerload-imynginx.tar# 从tar包导入镜像# 3. 容器操作核心 # 启动容器高频参数-d后台 -p端口 -v挂载 -name命名 -it交互dockerrun-d-p8080:80--namemynginx-v/host/html:/usr/share/nginx/html nginx:1.25# 参数说明# -d后台运行 -p 主机端口:容器端口 --name自定义容器名# -v主机目录:容器目录数据持久化 -it交互式运行如bashdockerps# 查看运行中的容器dockerps-a# 查看所有容器含停止的dockerps-q# 只显示运行中容器IDdockerstop 容器ID/容器名# 停止容器优雅关闭dockerkill容器ID/容器名# 强制停止容器快速终止dockerstart 容器ID/容器名# 启动已停止的容器dockerrestart 容器ID/容器名# 重启容器dockerrm容器ID/容器名# 删除单个容器需先停止dockerrm$(dockerps-aq)# 删除所有容器谨慎dockerexec-it容器IDbash# 进入容器终端bash/shdockerexec-it容器IDsh# 轻量容器用sh如alpine镜像dockercp主机文件 容器ID:容器路径# 主机文件复制到容器dockercp容器ID:容器路径 主机文件# 容器文件复制到主机dockerlogs 容器ID/容器名# 查看容器日志dockerlogs-f容器ID# 实时跟踪日志类似tail -fdockerlogs--tail100容器ID# 查看最后100行日志dockerinspect 容器ID/镜像ID# 查看容器/镜像详细信息JSON格式# 4. 网络操作 dockernetworkls# 查看所有网络dockernetwork create mynet# 创建自定义桥接网络容器间互通dockerrun-d--nameapp1--networkmynet nginx# 容器加入自定义网络dockernetwork connect mynet 容器ID# 已有容器加入自定义网络# 5. 数据卷操作持久化推荐 dockervolumels# 查看所有数据卷dockervolume create myvol# 创建命名卷dockerrun-d-vmyvol:/data nginx# 挂载命名卷到容器dockervolume inspect myvol# 查看卷详情存储路径dockervolumermmyvol# 删除数据卷二、实用 Dockerfile 编写示例覆盖 3 类常见场景Dockerfile 是构建镜像的 “脚本”以下示例可直接复制修改适配你的业务场景。示例 1前端项目Vue/React打包部署Nginx 镜像# 阶段1构建前端项目FROM node:18-alpine AS build-stage WORKDIR /app# 复制依赖文件并安装利用缓存修改代码不重新装依赖COPY package.json package-lock.json ./ RUNnpminstall--registryhttps://registry.npmmirror.com# 复制所有代码并打包COPY..RUNnpmrun build# 阶段2部署到Nginx精简镜像FROM nginx:1.25-alpine# 复制构建好的前端文件到Nginx默认目录COPY--frombuild-stage /app/dist /usr/share/nginx/html# 复制自定义Nginx配置可选COPY nginx.conf /etc/nginx/conf.d/default.conf# 暴露端口EXPOSE80# 启动NginxCMD[nginx,-g,daemon off;]示例 2后端项目Java SpringBoot# 基础镜像精简版JRE比JDK小FROM openjdk:17-jre-slim# 维护者信息可选LABELmaintaineryouremail.com# 设置工作目录WORKDIR /app# 复制打包好的jar包到容器注意jar包名称替换成你的COPY target/your-app-1.0.0.jar app.jar# 设置JVM参数优化内存ENVJAVA_OPTS-Xms512m -Xmx1024m# 暴露端口对应SpringBoot配置的端口EXPOSE8080# 启动命令ENTRYPOINT[sh,-c,java$JAVA_OPTS-jar app.jar]示例 3Python 项目Flask/Django# 基础镜像FROM python:3.11-alpine# 避免pip缓存问题ENVPIP_NO_CACHE_DIR1# 工作目录WORKDIR /app# 复制依赖文件并安装国内源加速COPY requirements.txt.RUN pipinstall-rrequirements.txt-ihttps://pypi.tuna.tsinghua.edu.cn/simple# 复制项目代码COPY..# 暴露端口EXPOSE5000# 启动命令Flask示例Django替换为python manage.py runserver 0.0.0.0:5000CMD[python,app.py]三、Dockerfile 构建 运行命令配套示例# 进入Dockerfile所在目录cd/path/to/your/project# 构建镜像-t 打标签格式名称:版本dockerbuild-tmy-frontend:v1.# 运行镜像以前端示例为例dockerrun-d-p80:80--namemy-frontend-app my-frontend:v1总结命令速查表按「基础 / 镜像 / 容器 / 网络 / 数据卷」分类覆盖 90% 日常操作可直接复制使用 Dockerfile示例适配前端、Java、Python 三大主流场景核心优化如分层构建、国内源、内存优化已内置 关键技巧Dockerfile优先用 COPY 而非 ADD、用 alpine 精简镜像、分层构建减少镜像体积。