方法一:使用官方安装脚本(推荐)
# 更新系统包
sudo apt update
# 安装必要的包
sudo apt install -y apt-transport-https ca-certificates curl gnupg lsb-release
# 添加 Docker 官方 GPG 密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# 添加 Docker 仓库
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 更新包索引
sudo apt update
# 安装 Docker Engine
sudo apt install -y docker-ce docker-ce-cli containerd.io
# 启动 Docker 服务
sudo systemctl start docker
sudo systemctl enable docker
方法二:使用便捷脚本
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh
2.3 配置 Docker
添加用户到 docker 组
# 添加当前用户到 docker 组
sudo usermod -aG docker $USER
# 重新登录或执行以下命令
newgrp docker
验证安装
# 查看 Docker 版本
docker --version
# 运行测试容器
docker run hello-world
2.4 安装 Docker Compose
方法一:使用 pip 安装
# 安装 pip
sudo apt install -y python3-pip
# 安装 docker-compose
sudo pip3 install docker-compose
方法二:直接下载二进制文件
# 下载最新版本的 docker-compose
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 添加执行权限
sudo chmod +x /usr/local/bin/docker-compose
# 验证安装
docker-compose --version
2.5 配置 Docker 镜像加速器
# 创建 daemon.json 文件
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn",
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com"
]
}
EOF
# 重启 Docker 服务
sudo systemctl daemon-reload
sudo systemctl restart docker
二、核心概念速览
概念 |
说明 |
类比 |
镜像(Image) |
只读模板,包含应用代码和运行环境 |
虚拟机ISO文件 |
容器(Container) |
镜像的运行实例,可读写、独立隔离 |
正在运行的虚拟机 |
仓库(Registry) |
存储和分发镜像的平台(如Docker Hub) |
应用商店 |
数据卷(Volume) |
持久化存储容器数据,独立于容器生命周期 |
移动硬盘 |
网络(Network) |
容器间通信的虚拟通道(支持bridge/host/none等模式) |
局域网 |
三、镜像与容器管理
3.1 镜像操作
# 拉取镜像
docker pull nginx:latest
# 构建自定义镜像
# Dockerfile示例:
FROM ubuntu:22.04
RUN apt-get update && apt-get install -y nginx
COPY index.html /var/www/html/
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
# 构建命令
docker build -t my-nginx:v1 .
# 导出/导入镜像
docker save my-nginx:v1 > my-nginx.tar
docker load < my-nginx.tar
3.2 容器操作
# 启动容器
docker run -d --name my-nginx -p 8080:80 my-nginx:v1
# 进入容器
docker exec -it my-nginx /bin/bash
# 查看运行状态
docker ps -a
# 停止/删除容器
docker stop my-nginx && docker rm my-nginx
# 持久化数据
docker run -d -v /host/path:/container/path mysql:latest
四、数据卷与迁移
4.1 数据卷管理
docker volume create app_data
docker run --rm -v app_data:/data -v $(pwd):/backup ubuntu tar czvf /backup/backup.tar.gz /data
docker run --rm -v app_data:/data -v $(pwd):/backup ubuntu tar xzvf /backup/backup.tar.gz -C /data
4.2 容器迁移
docker commit my-nginx my-nginx:migrate
docker save my-nginx:migrate > my-nginx-migrate.tar
scp my-nginx-migrate.tar user@new-server:/path/
docker load < my-nginx-migrate.tar
docker run -d -p 8080:80 my-nginx:migrate
五、Docker Compose编排
5.1 Compose文件示例
version: '3.8'
services:
web:
image: nginx:latest
ports:
- "80:80"
volumes:
- ./html:/usr/share/nginx/html
depends_on:
- php
php:
image: php:7.4-fpm
volumes:
- ./html:/var/www/html
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: rootpass
volumes:
- mysql_data:/var/lib/mysql
volumes:
mysql_data:
5.2 常用命令
docker-compose up -d
docker-compose logs -f
docker-compose down
docker-compose up -d --build
六、实战:部署LNMP环境
6.1 方案一:使用Docker Compose
项目结构
lnmp/
├── docker-compose.yml
├── html/
│ └── index.php
└── mysql/
└── init.sql
docker-compose.yml
version: '3.8'
services:
nginx:
image: nginx:latest
ports: ["80:80"]
volumes:
- ./html:/var/www/html
- ./nginx.conf:/etc/nginx/conf.d/default.conf
depends_on: [php, mysql]
php:
image: php:7.4-fpm
volumes: ["./html:/var/www/html"]
mysql:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: rootpass
MYSQL_DATABASE: app_db
volumes:
- ./mysql:/docker-entrypoint-initdb.d
- mysql_data:/var/lib/mysql
volumes:
mysql_data:
启动验证
echo "<?php phpinfo(); ?>" > html/index.php
docker-compose up -d
6.2 方案二:纯Docker命令
docker network create lnmp-net
docker run -d --name mysql --network lnmp-net \
-v mysql_data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=rootpass \
mysql:5.7
docker run -d --name php --network lnmp-net \
-v $(pwd)/html:/var/www/html \
php:7.4-fpm
mkdir -p nginx/conf.d
cat > nginx/conf.d/default.conf <<EOF
server {
listen 80;
root /var/www/html;
location \~ \.php$ {
fastcgi_pass php:9000;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
}
}
EOF
docker run -d --name nginx --network lnmp-net \
-p 80:80 \
-v $(pwd)/html:/var/www/html \
-v $(pwd)/nginx/conf.d:/etc/nginx/conf.d \
nginx:latest
七、生产环境建议
- 镜像优化
- 使用多阶段构建减少镜像体积
- 定期更新基础镜像安全补丁
- 网络隔离
- 数据安全
- 监控日志
- 集成Prometheus+Grafana监控
- 使用ELK收集容器日志
八、附录:命令速查表
1. Docker 基础命令
命令 |
详细说明 |
示例 |
备注 |
docker --version |
显示Docker客户端版本信息,用于快速检查Docker是否安装及版本 |
docker --version |
输出格式:Docker version 20.10.8 |
docker version |
显示Docker客户端和服务端的详细版本信息,包括API版本、Go版本等 |
docker version |
比–version更详细,包含服务端信息 |
docker info |
显示Docker系统的详细信息,包括容器数量、镜像数量、存储驱动、网络配置等 |
docker info |
用于系统诊断和配置检查 |
docker help |
显示Docker命令的帮助信息,可以查看所有可用命令 |
docker help |
也可以用于特定命令:docker run –help |
docker --help |
与docker help相同,显示帮助信息 |
docker exec --help |
查看特定命令的详细参数说明 |
2. 镜像管理
命令 |
详细说明 |
示例 |
备注 |
docker images |
列出本地存储的所有Docker镜像,显示仓库名、标签、镜像ID、创建时间和大小 |
docker images |
默认只显示顶层镜像 |
docker images -a |
列出所有镜像,包括中间层镜像(构建过程中产生的临时镜像) |
docker images -a |
用于查看完整的镜像层次结构 |
docker images -q |
只显示镜像ID,常用于脚本中批量操作镜像 |
docker images -q |
输出格式简洁,便于管道操作 |
docker images --filter |
根据条件过滤镜像列表,支持多种过滤条件 |
docker images --filter "dangling=true" |
dangling=true显示悬空镜像 |
docker images --format |
自定义输出格式,可以指定显示的字段和格式 |
docker images --format "table {{.Repository}}\t{{.Tag}}\t{{.Size}}" |
支持table、json等格式 |
docker search <镜像名> |
在Docker Hub上搜索公共镜像,显示名称、描述、星级、官方标识等 |
docker search nginx |
默认显示25个结果 |
docker search --limit |
限制搜索结果的数量,避免输出过多信息 |
docker search --limit 5 nginx |
最大值为100 |
docker pull <镜像名> |
从镜像仓库下载镜像到本地,默认从Docker Hub下载latest标签 |
docker pull nginx:latest |
支持指定标签和仓库地址 |
docker pull --all-tags |
下载指定镜像的所有可用标签版本 |
docker pull --all-tags nginx |
会下载大量数据,谨慎使用 |
docker push <镜像名> |
将本地镜像上传到镜像仓库,需要先登录仓库 |
docker push myapp:v1.0 |
镜像名需包含仓库地址 |
docker rmi <镜像ID/名称> |
删除本地镜像,可以使用镜像ID或名称:标签 |
docker rmi nginx:latest |
如果有容器使用该镜像会删除失败 |
docker rmi -f <镜像ID> |
强制删除镜像,即使有容器正在使用 |
docker rmi -f abc123 |
可能导致容器无法正常运行 |
docker rmi $(docker images -q) |
删除所有本地镜像,常用于清理环境 |
docker rmi $(docker images -q) |
危险操作,会删除所有镜像 |
docker build -t <镜像名> <路径> |
根据Dockerfile构建镜像,-t指定镜像名称和标签 |
docker build -t myapp:v1.0 . |
路径是Dockerfile所在目录 |
docker build --no-cache |
构建镜像时不使用缓存,确保获取最新的依赖和更新 |
docker build --no-cache -t myapp . |
构建时间较长但确保最新 |
docker build --build-arg |
向Dockerfile传递构建参数,用于动态配置构建过程 |
docker build --build-arg VERSION=1.0 -t myapp . |
需要Dockerfile中定义ARG |
docker tag <源镜像> <目标镜像> |
为镜像创建新的标签,不会复制镜像数据,只是创建引用 |
docker tag nginx:latest mynginx:v1 |
用于重命名或创建版本标签 |
docker history <镜像名> |
显示镜像的构建历史,包括每一层的命令和大小 |
docker history nginx |
用于分析镜像结构和优化 |
docker inspect <镜像名> |
显示镜像的详细元数据信息,包括配置、环境变量、层信息等 |
docker inspect nginx |
输出JSON格式的详细信息 |
docker save -o <文件名> <镜像> |
将镜像导出为tar文件,用于离线传输或备份 |
docker save -o nginx.tar nginx:latest |
包含所有层数据,文件较大 |
docker load -i <文件名> |
从tar文件导入镜像到本地Docker环境 |
docker load -i nginx.tar |
恢复save命令导出的镜像 |
docker export <容器> > <文件> |
将容器的文件系统导出为tar文件,不包含历史和元数据 |
docker export web > web.tar |
只导出当前状态的文件系统 |
docker import <文件> <镜像名> |
从tar文件创建新的镜像,通常用于导入export的文件 |
docker import web.tar myapp:latest |
创建的镜像只有一层 |
3. 容器生命周期管理
命令 |
详细说明 |
示例 |
备注 |
docker run <镜像名> |
创建并启动一个新容器,这是最基本的容器运行命令 |
docker run nginx |
前台运行,会占用当前终端 |
docker run -d <镜像名> |
在后台(守护进程模式)运行容器,不占用当前终端 |
docker run -d nginx |
返回容器ID,适合服务类应用 |
docker run -it <镜像名> |
以交互模式运行容器,-i保持输入流,-t分配伪终端 |
docker run -it ubuntu /bin/bash |
适合需要交互的应用或调试 |
docker run --rm |
容器停止后自动删除,避免产生大量停止的容器 |
docker run --rm nginx |
适合临时测试或一次性任务 |
docker run --name <容器名> |
为容器指定一个自定义名称,便于后续管理和引用 |
docker run --name web nginx |
名称必须唯一,便于记忆 |
docker run -p <主机端口>:<容器端口> |
将容器端口映射到主机端口,使外部可以访问容器服务 |
docker run -p 8080:80 nginx |
主机8080端口映射到容器80端口 |
docker run -P |
自动将容器的所有暴露端口映射到主机的随机端口 |
docker run -P nginx |
Docker自动选择可用端口 |
docker run -v <主机路径>:<容器路径> |
将主机目录挂载到容器内,实现数据持久化和共享 |
docker run -v /data:/app/data nginx |
绑定挂载,数据在主机上 |
docker run -v <卷名>:<容器路径> |
使用Docker管理的命名卷挂载到容器 |
docker run -v mydata:/data nginx |
Docker管理的卷,更安全 |
docker run --mount |
新的挂载语法,更明确和灵活的挂载选项 |
docker run --mount type=bind,source=/data,target=/app nginx |
推荐使用,语法更清晰 |
docker run -e <变量>=<值> |
设置容器的环境变量,用于配置应用行为 |
docker run -e NODE_ENV=production node |
可以设置多个-e参数 |
docker run --env-file <文件> |
从文件中读取环境变量,适合大量环境变量的场景 |
docker run --env-file .env node |
文件格式:KEY=VALUE |
docker run -w <工作目录> |
设置容器内的工作目录,影响命令执行的默认路径 |
docker run -w /app node |
覆盖Dockerfile中的WORKDIR |
docker run -u <用户> |
指定运行容器的用户ID或用户名,用于权限控制 |
docker run -u 1000:1000 node |
格式:用户ID:组ID |
docker run --privileged |
以特权模式运行容器,获得主机的所有权限 |
docker run --privileged ubuntu |
安全风险高,谨慎使用 |
docker run --read-only |
将容器的根文件系统设为只读,提高安全性 |
docker run --read-only nginx |
需要配合tmpfs使用临时目录 |
docker create <镜像名> |
创建容器但不启动,用于预先配置容器 |
docker create --name web nginx |
需要后续使用start启动 |
docker start <容器ID/名称> |
启动已经创建但停止的容器 |
docker start web |
容器保持原有配置 |
docker start -a <容器> |
启动容器并附加到容器的输出流 |
docker start -a web |
可以看到容器的输出 |
docker start -i <容器> |
启动容器并进入交互模式 |
docker start -i web |
适合交互式容器 |
docker stop <容器ID/名称> |
优雅地停止运行中的容器,发送SIGTERM信号 |
docker stop web |
给应用时间清理资源 |
docker stop -t <秒数> <容器> |
指定停止超时时间,超时后强制杀死 |
docker stop -t 30 web |
默认超时时间是10秒 |
docker restart <容器ID/名称> |
重启容器,相当于stop后再start |
docker restart web |
保持容器配置不变 |
docker pause <容器ID/名称> |
暂停容器中的所有进程,不释放资源 |
docker pause web |
进程状态保持在内存中 |
docker unpause <容器ID/名称> |
恢复暂停的容器,继续执行进程 |
docker unpause web |
从暂停点继续执行 |
docker kill <容器ID/名称> |
强制停止容器,发送SIGKILL信号 |
docker kill web |
立即终止,可能丢失数据 |
docker kill -s <信号> <容器> |
向容器发送指定的信号 |
docker kill -s SIGTERM web |
可以发送各种系统信号 |
docker rm <容器ID/名称> |
删除已停止的容器,释放存储空间 |
docker rm web |
只能删除停止的容器 |
docker rm -f <容器ID/名称> |
强制删除容器,即使正在运行 |
docker rm -f web |
先强制停止再删除 |
docker rm -v <容器> |
删除容器时同时删除关联的匿名卷 |
docker rm -v web |
避免产生孤立的卷 |
4. 容器信息查看
命令 |
详细说明 |
示例 |
备注 |
docker ps |
显示当前正在运行的容器列表,包括ID、镜像、命令、状态、端口等 |
docker ps |
最常用的容器查看命令 |
docker ps -a |
显示所有容器,包括运行中的和已停止的 |
docker ps -a |
查看完整的容器历史 |
docker ps -q |
只显示容器ID,常用于脚本中批量操作容器 |
docker ps -q |
输出简洁,便于管道操作 |
docker ps -l |
显示最近创建的容器,无论是否在运行 |
docker ps -l |
快速查看最新容器 |
docker ps -n <数量> |
显示最近创建的N个容器 |
docker ps -n 5 |
限制显示数量 |
docker ps --filter |
根据条件过滤容器列表,支持多种过滤条件 |
docker ps --filter "status=running" |
支持status、name、label等过滤 |
docker ps --format |
自定义输出格式,可以指定显示的字段 |
docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}" |
自定义表格格式 |
docker ps -s |
显示容器的大小信息,包括虚拟大小和实际大小 |
docker ps -s |
用于分析容器存储使用 |
docker inspect <容器ID/名称> |
显示容器的详细配置信息,包括网络、挂载、环境变量等 |
docker inspect web |
JSON格式的完整信息 |
docker inspect --format |
使用Go模板格式化输出特定信息 |
docker inspect --format='{{.NetworkSettings.IPAddress}}' web |
提取特定字段信息 |
docker logs <容器ID/名称> |
查看容器的日志输出,显示stdout和stderr |
docker logs web |
显示所有历史日志 |
docker logs -f <容器ID/名称> |
实时跟踪容器日志输出,类似tail -f |
docker logs -f web |
持续显示新的日志 |
docker logs --tail <行数> |
只显示最后N行日志,避免输出过多历史日志 |
docker logs --tail 100 web |
快速查看最新日志 |
docker logs --since <时间> |
显示指定时间之后的日志 |
docker logs --since 2023-01-01 web |
支持多种时间格式 |
docker logs --until <时间> |
显示指定时间之前的日志 |
docker logs --until 2023-12-31 web |
查看历史时间段日志 |
docker logs -t |
在日志前显示时间戳,便于分析问题发生时间 |
docker logs -t web |
每行日志前加时间戳 |
docker top <容器ID/名称> |
显示容器内运行的进程信息,类似系统的top命令 |
docker top web |
查看进程状态和资源使用 |
docker stats |
实时显示所有容器的资源使用统计,包括CPU、内存、网络、磁盘IO |
docker stats |
动态更新的资源监控 |
docker stats <容器ID/名称> |
显示指定容器的资源使用统计 |
docker stats web |
监控特定容器性能 |
docker stats --no-stream |
只显示一次统计信息,不持续更新 |
docker stats --no-stream |
获取当前时刻的统计 |
docker port <容器> |
显示容器的端口映射信息 |
docker port web |
查看端口转发配置 |
docker diff <容器> |
显示容器文件系统相对于镜像的变化 |
docker diff web |
A=添加,D=删除,C=修改 |
5. 容器交互操作
命令 |
详细说明 |
示例 |
备注 |
docker exec -it <容器> /bin/bash |
在运行的容器中启动bash shell,进入交互式终端 |
docker exec -it web /bin/bash |
最常用的容器进入方式 |
docker exec -it <容器> /bin/sh |
在容器中启动sh shell,适用于没有bash的轻量级镜像 |
docker exec -it web /bin/sh |
Alpine Linux等使用sh |
docker exec -it <容器> bash |
简化的bash进入方式,省略路径 |
docker exec -it web bash |
前提是bash在PATH中 |
docker exec -it <容器> sh |
简化的sh进入方式 |
docker exec -it web sh |
适用于大多数Linux发行版 |
docker exec -u <用户> -it <容器> bash |
以指定用户身份进入容器,用于权限控制 |
docker exec -u root -it web bash |
可以切换到root或其他用户 |
docker exec -w <目录> -it <容器> bash |
进入容器时直接切换到指定工作目录 |
docker exec -w /app -it web bash |
避免进入后再cd |
docker exec -e <变量>=<值> <容器> <命令> |
在执行命令时设置环境变量 |
docker exec -e DEBUG=1 web node app.js |
临时设置环境变量 |
docker exec -d <容器> <命令> |
在容器中后台执行命令,不占用当前终端 |
docker exec -d web touch /tmp/test |
适合执行不需要交互的命令 |
docker exec <容器> <命令> |
在容器中执行单个命令并返回结果 |
docker exec web ls -la /app |
快速执行命令查看结果 |
docker exec <容器> cat <文件> |
查看容器内文件的内容 |
docker exec web cat /etc/nginx/nginx.conf |
快速查看配置文件 |
docker exec <容器> ps aux |
查看容器内的所有进程 |
docker exec web ps aux |
诊断容器内进程状态 |
docker exec <容器> df -h |
查看容器内的磁盘使用情况 |
docker exec web df -h |
检查存储空间 |
docker exec <容器> netstat -tlnp |
查看容器内的网络连接和监听端口 |
docker exec web netstat -tlnp |
网络诊断工具 |
docker attach <容器ID/名称> |
连接到容器的主进程,查看其输出和交互 |
docker attach web |
连接到容器的主进程 |
docker attach --no-stdin <容器> |
只查看容器输出,不发送输入 |
docker attach --no-stdin web |
避免意外输入影响容器 |
6. 文件操作
命令 |
详细说明 |
示例 |
备注 |
docker cp <容器>:<路径> <主机路径> |
从运行或停止的容器中复制文件或目录到主机 |
docker cp web:/app/log.txt ./ |
容器可以是停止状态 |
docker cp <主机路径> <容器>:<路径> |
从主机复制文件或目录到容器中 |
docker cp ./config.txt web:/app/ |
可以覆盖容器内文件 |
docker cp <容器>:<目录> <主机目录> |
复制整个目录及其内容 |
docker cp web:/app/logs ./logs |
递归复制目录结构 |
docker cp -a <容器>:<路径> <主机路径> |
保持文件的所有属性(权限、所有者等)进行复制 |
docker cp -a web:/app/data ./data |
保持原始文件属性 |
docker cp -L <容器>:<路径> <主机路径> |
跟随符号链接进行复制,复制链接指向的实际文件 |
docker cp -L web:/app/link.txt ./ |
解析符号链接 |
7. 数据卷管理
命令 |
详细说明 |
示例 |
备注 |
docker volume create <卷名> |
创建一个新的数据卷,由Docker管理存储位置 |
docker volume create mydata |
Docker自动选择存储位置 |
docker volume create --driver <驱动> |
使用指定的存储驱动创建数据卷 |
docker volume create --driver local mydata |
支持不同的存储后端 |
docker volume create --opt <选项> |
创建数据卷时指定驱动选项,如NFS、加密等 |
docker volume create --opt type=nfs mydata |
高级存储配置 |
docker volume ls |
列出所有的数据卷及其驱动信息 |
docker volume ls |
查看卷的基本信息 |
docker volume ls -q |
只显示数据卷的名称,便于脚本处理 |
docker volume ls -q |
简洁输出格式 |
docker volume ls --filter |
根据条件过滤数据卷列表 |
docker volume ls --filter "dangling=true" |
查找未使用的卷 |
docker volume inspect <卷名> |
显示数据卷的详细信息,包括挂载点、驱动、选项等 |
docker volume inspect mydata |
JSON格式的详细信息 |
docker volume rm <卷名> |
删除指定的数据卷,卷必须未被任何容器使用 |
docker volume rm mydata |
删除前确保无容器使用 |
docker volume rm -f <卷名> |
强制删除数据卷,即使有容器正在使用 |
docker volume rm -f mydata |
可能导致数据丢失 |
docker volume prune |
删除所有未被容器使用的数据卷,清理孤立卷 |
docker volume prune |
批量清理未使用的卷 |
docker volume prune -f |
强制删除未使用的数据卷,不提示确认 |
docker volume prune -f |
自动化脚本中使用 |
docker run -v <卷名>:<容器路径> |
将命名数据卷挂载到容器的指定路径 |
docker run -v mydata:/data nginx |
数据持久化存储 |
docker run -v <主机路径>:<容器路径> |
将主机目录绑定挂载到容器 |
docker run -v /host/data:/data nginx |
直接访问主机文件 |
docker run -v <路径>:<容器路径>:ro |
以只读模式挂载,容器无法修改挂载的内容 |
docker run -v /data:/app:ro nginx |
保护主机数据安全 |
docker run --tmpfs <路径> |
在容器内创建临时文件系统,数据存储在内存中 |
docker run --tmpfs /tmp nginx |
高性能临时存储 |
8. 网络管理
命令 |
详细说明 |
示例 |
备注 |
docker network ls |
列出所有Docker网络,包括默认网络和自定义网络 |
docker network ls |
显示网络ID、名称、驱动、作用域 |
docker network ls -q |
只显示网络ID,便于脚本批量操作 |
docker network ls -q |
简洁输出格式 |
docker network ls --filter |
根据条件过滤网络列表,如驱动类型、名称等 |
docker network ls --filter "driver=bridge" |
查找特定类型的网络 |
docker network create <网络名> |
创建自定义网络,默认使用bridge驱动 |
docker network create mynet |
容器间通信的独立网络 |
docker network create --driver <驱动> |
使用指定驱动创建网络,如bridge、overlay、macvlan等 |
docker network create --driver bridge mynet |
不同驱动适用不同场景 |
docker network create --subnet <子网> |
创建网络时指定IP子网范围 |
docker network create --subnet 172.20.0.0/16 mynet |
自定义IP地址范围 |
docker network create --gateway <网关> |
指定网络的网关地址 |
docker network create --gateway 172.20.0.1 mynet |
控制网络路由 |
docker network create --ip-range <范围> |
限制容器可分配的IP地址范围 |
docker network create --ip-range 172.20.240.0/20 mynet |
更精细的IP管理 |
docker network inspect <网络名> |
显示网络的详细配置信息,包括连接的容器、IP分配等 |
docker network inspect mynet |
网络诊断和配置查看 |
docker network rm <网络名> |
删除自定义网络,网络必须没有容器连接 |
docker network rm mynet |
清理不需要的网络 |
docker network prune |
删除所有未被容器使用的网络 |
docker network prune |
批量清理孤立网络 |
docker network connect <网络> <容器> |
将运行中的容器连接到指定网络 |
docker network connect mynet web |
动态添加网络连接 |
docker network connect --ip <IP> |
连接容器到网络时指定固定IP地址 |
docker network connect --ip 172.20.0.10 mynet web |
静态IP分配 |
docker network disconnect <网络> <容器> |
断开容器与指定网络的连接 |
docker network disconnect mynet web |
动态移除网络连接 |
docker run --network <网络名> |
创建容器时指定连接的网络 |
docker run --network mynet nginx |
容器启动时加入网络 |
docker run --network=host |
使用主机网络模式,容器直接使用主机的网络栈 |
docker run --network=host nginx |
性能最好但隔离性差 |
docker run --network=none |
无网络模式,容器没有网络连接 |
docker run --network=none nginx |
最高安全性但无网络功能 |
9. Docker Compose 命令
命令 |
详细说明 |
示例 |
备注 |
docker-compose up |
根据docker-compose.yml文件启动所有定义的服务 |
docker-compose up |
前台运行,显示所有服务日志 |
docker-compose up -d |
后台模式启动所有服务,不占用当前终端 |
docker-compose up -d |
生产环境推荐使用 |
docker-compose up --build |
启动服务前重新构建镜像,确保使用最新代码 |
docker-compose up --build |
开发环境常用 |
docker-compose up --force-recreate |
强制重新创建容器,即使配置没有变化 |
docker-compose up --force-recreate |
解决容器状态问题 |
docker-compose up --scale <服务>=<数量> |
扩展指定服务的实例数量,实现水平扩展 |
docker-compose up --scale web=3 |
负载均衡和高可用 |
docker-compose down |
停止并删除所有服务容器、网络,保留数据卷 |
docker-compose down |
清理环境但保留数据 |
docker-compose down -v |
停止服务并删除关联的数据卷 |
docker-compose down -v |
完全清理包括数据 |
docker-compose down --rmi all |
停止服务并删除所有相关镜像 |
docker-compose down --rmi all |
彻底清理环境 |
docker-compose start |
启动已经创建但停止的服务容器 |
docker-compose start |
不重新创建容器 |
docker-compose start <服务名> |
启动指定的服务 |
docker-compose start web |
选择性启动服务 |
docker-compose stop |
停止所有运行中的服务,但不删除容器 |
docker-compose stop |
保留容器状态 |
docker-compose stop <服务名> |
停止指定的服务 |
docker-compose stop web |
选择性停止服务 |
docker-compose restart |
重启所有服务,相当于stop后start |
docker-compose restart |
应用配置变更 |
docker-compose restart <服务名> |
重启指定的服务 |
docker-compose restart web |
单独重启某个服务 |
docker-compose pause |
暂停所有服务的进程,不释放资源 |
docker-compose pause |
临时暂停服务 |
docker-compose unpause |
恢复暂停的服务 |
docker-compose unpause |
继续暂停的服务 |
docker-compose ps |
显示所有服务的容器状态 |
docker-compose ps |
查看服务运行状态 |
docker-compose ps -q |
只显示服务容器的ID |
docker-compose ps -q |
脚本中批量操作 |
docker-compose logs |
查看所有服务的日志输出 |
docker-compose logs |
集中查看日志 |
docker-compose logs -f |
实时跟踪所有服务的日志 |
docker-compose logs -f |
实时监控服务 |
docker-compose logs <服务名> |
查看指定服务的日志 |
docker-compose logs web |
单独查看某服务日志 |
docker-compose exec <服务> <命令> |
在运行的服务容器中执行命令 |
docker-compose exec web bash |
进入服务容器 |
docker-compose exec -T <服务> <命令> |
非交互式执行命令,适合脚本使用 |
docker-compose exec -T web ls |
脚本自动化 |
docker-compose run <服务> <命令> |
创建新容器运行一次性命令 |
docker-compose run web bash |
临时任务执行 |
docker-compose run --rm <服务> <命令> |
运行命令后自动删除容器 |
docker-compose run --rm web npm test |
避免产生临时容器 |
docker-compose build |
构建所有定义了build的服务镜像 |
docker-compose build |
批量构建镜像 |
docker-compose build <服务名> |
构建指定服务的镜像 |
docker-compose build web |
单独构建某服务 |
docker-compose build --no-cache |
不使用缓存重新构建所有镜像 |
docker-compose build --no-cache |
确保最新构建 |
docker-compose pull |
拉取所有服务的最新镜像 |
docker-compose pull |
更新镜像版本 |
docker-compose push |
推送所有服务镜像到仓库 |
docker-compose push |
发布镜像 |
docker-compose config |
验证并显示compose文件的最终配置 |
docker-compose config |
配置文件调试 |
docker-compose config --services |
列出compose文件中定义的所有服务名 |
docker-compose config --services |
查看服务列表 |
docker-compose top |
显示所有服务容器中运行的进程 |
docker-compose top |
进程监控 |
docker-compose port <服务> <端口> |
查看服务端口的映射情况 |
docker-compose port web 80 |
端口映射查询 |
10. 系统清理命令
命令 |
详细说明 |
示例 |
备注 |
docker system df |
显示Docker系统的磁盘使用情况,包括镜像、容器、卷的空间占用 |
docker system df |
系统存储分析 |
docker system df -v |
详细显示每个组件的磁盘使用情况 |
docker system df -v |
详细的存储分析 |
docker system prune |
清理未使用的容器、网络、镜像(悬空)和构建缓存 |
docker system prune |
安全的系统清理 |
docker system prune -a |
清理所有未使用的资源,包括未被任何容器使用的镜像 |
docker system prune -a |
更彻底的清理 |
docker system prune -f |
强制清理,不提示确认信息 |
docker system prune -f |
自动化脚本使用 |
docker system prune --volumes |
清理时包括未使用的数据卷 |
docker system prune --volumes |
包含卷的完整清理 |
docker system events |
实时显示Docker系统事件,用于监控和调试 |
docker system events |
系统活动监控 |
docker system info |
显示Docker系统的详细信息,与docker info相同 |
docker system info |
系统状态查看 |
docker container prune |
删除所有已停止的容器 |
docker container prune |
清理停止的容器 |
docker container prune -f |
强制删除已停止的容器,不提示确认 |
docker container prune -f |
自动化清理 |
docker image prune |
删除所有悬空镜像(没有标签且未被容器使用) |
docker image prune |
清理构建产生的临时镜像 |
docker image prune -a |
删除所有未被容器使用的镜像 |
docker image prune -a |
彻底清理镜像 |
docker image prune -f |
强制删除悬空镜像,不提示确认 |
docker image prune -f |
自动化镜像清理 |
docker volume prune |
删除所有未被容器使用的数据卷 |
docker volume prune |
清理孤立的数据卷 |
docker volume prune -f |
强制删除未使用的数据卷,不提示确认 |
docker volume prune -f |
自动化卷清理 |
docker network prune |
删除所有未被容器使用的网络 |
docker network prune |
清理孤立的网络 |
docker network prune -f |
强制删除未使用的网络,不提示确认 |
docker network prune -f |
自动化网络清理 |
11. 镜像仓库操作
命令 |
详细说明 |
示例 |
备注 |
docker login |
登录到Docker Hub,需要输入用户名和密码 |
docker login |
默认登录Docker Hub |
docker login <仓库地址> |
登录到指定的镜像仓库,如私有仓库 |
docker login registry.example.com |
支持私有仓库 |
docker login -u <用户名> |
指定用户名登录,避免交互式输入 |
docker login -u myuser |
脚本中使用 |
docker login -p <密码> |
指定密码登录,但不安全,不推荐在生产环境使用 |
docker login -p mypass |
安全风险高 |
docker logout |
退出当前Docker Hub的登录状态 |
docker logout |
清除本地认证信息 |
docker logout <仓库地址> |
退出指定仓库的登录状态 |
docker logout registry.example.com |
多仓库管理 |
docker push <镜像名> |
将本地镜像推送到仓库,镜像名需包含仓库地址 |
docker push myapp:v1.0 |
发布镜像到仓库 |
docker pull <镜像名> |
从仓库拉取镜像到本地 |
docker pull myapp:v1.0 |
下载镜像 |
docker pull --all-tags <镜像> |
拉取镜像的所有可用标签 |
docker pull --all-tags nginx |
下载所有版本 |
docker pull --platform <平台> |
拉取指定平台架构的镜像 |
docker pull --platform linux/amd64 nginx |
多架构镜像支持 |
12. 高级运行参数
参数 |
详细说明 |
示例 |
备注 |
--env 或 -e |
设置容器的环境变量,用于配置应用程序行为 |
docker run -e NODE_ENV=production node |
可以设置多个环境变量 |
--env-file |
从文件中批量读取环境变量,文件格式为KEY=VALUE |
docker run --env-file .env node |
适合大量环境变量配置 |
--workdir 或 -w |
设置容器内的工作目录,影响命令执行的默认路径 |
docker run -w /app node |
覆盖Dockerfile中的WORKDIR |
--user 或 -u |
指定运行容器的用户ID或用户名,用于权限控制和安全 |
docker run -u 1000:1000 node |
格式:用户ID:组ID |
--memory 或 -m |
限制容器可使用的最大内存量,防止内存泄漏影响主机 |
docker run -m 512m nginx |
支持b、k、m、g单位 |
--memory-swap |
设置内存+交换空间的总限制 |
docker run --memory=512m --memory-swap=1g nginx |
控制总虚拟内存使用 |
--memory-swappiness |
设置容器使用交换空间的倾向,0-100之间 |
docker run --memory-swappiness=0 nginx |
0表示尽量不使用交换 |
--oom-kill-disable |
禁用OOM(内存不足)杀死机制 |
docker run --oom-kill-disable nginx |
需要同时设置内存限制 |
--cpus |
限制容器可使用的CPU核心数,支持小数 |
docker run --cpus="1.5" nginx |
1.5表示1.5个CPU核心 |
--cpu-shares |
设置CPU使用权重,相对值,默认1024 |
docker run --cpu-shares=512 nginx |
相对其他容器的CPU优先级 |
--cpuset-cpus |
指定容器可以使用的具体CPU核心 |
docker run --cpuset-cpus="0,1" nginx |
绑定到特定CPU核心 |
--cpu-period |
设置CPU调度周期,单位微秒,默认100000 |
docker run --cpu-period=100000 nginx |
CFS调度器参数 |
--cpu-quota |
设置CPU配额,在调度周期内可使用的CPU时间 |
docker run --cpu-quota=50000 nginx |
与cpu-period配合使用 |
--restart |
设置容器的重启策略,控制容器异常退出后的行为 |
docker run --restart=always nginx |
生产环境推荐always |
--restart=no |
不自动重启容器,默认策略 |
docker run --restart=no nginx |
手动控制容器生命周期 |
--restart=on-failure |
只在容器非正常退出时重启,可指定最大重试次数 |
docker run --restart=on-failure:3 nginx |
避免无限重启 |
--restart=unless-stopped |
除非手动停止,否则总是重启 |
docker run --restart=unless-stopped nginx |
系统重启后自动启动 |
--link |
链接到其他容器,创建网络连接(已废弃,推荐使用自定义网络) |
docker run --link db:database web |
旧版本的容器连接方式 |
--hostname |
设置容器的主机名,影响容器内的hostname命令输出 |
docker run --hostname myhost nginx |
自定义容器主机名 |
--add-host |
在容器的/etc/hosts文件中添加主机名映射 |
docker run --add-host db:192.168.1.100 web |
自定义域名解析 |
--dns |
设置容器使用的DNS服务器地址 |
docker run --dns 8.8.8.8 nginx |
自定义DNS解析 |
--dns-search |
设置DNS搜索域,用于短域名解析 |
docker run --dns-search example.com nginx |
域名搜索后缀 |
--mac-address |
为容器设置自定义MAC地址 |
docker run --mac-address 02:42:ac:11:00:02 nginx |
网络身份标识 |
--ip |
在自定义网络中为容器分配固定IP地址 |
docker run --ip 172.20.0.10 nginx |
静态IP分配 |
--privileged |
以特权模式运行容器,获得主机的几乎所有权限 |
docker run --privileged nginx |
安全风险极高,谨慎使用 |
--cap-add |
为容器添加特定的Linux能力(capabilities) |
docker run --cap-add SYS_ADMIN nginx |
精细化权限控制 |
--cap-drop |
移除容器的特定Linux能力 |
docker run --cap-drop ALL nginx |
最小权限原则 |
--security-opt |
设置安全相关选项,如SELinux、AppArmor、seccomp等 |
docker run --security-opt seccomp=unconfined nginx |
安全策略配置 |
--read-only |
将容器的根文件系统设为只读,提高安全性 |
docker run --read-only nginx |
防止文件系统被篡改 |
--tmpfs |
在容器内创建临时文件系统,数据存储在内存中 |
docker run --tmpfs /tmp nginx |
高性能临时存储 |
--ulimit |
设置容器内进程的资源限制 |
docker run --ulimit nofile=1024:1024 nginx |
进程资源控制 |
--device |
将主机设备映射到容器内 |
docker run --device /dev/sda:/dev/xvda nginx |
设备访问权限 |
--device-read-bps |
限制设备的读取速度,单位字节/秒 |
docker run --device-read-bps /dev/sda:1mb nginx |
IO性能控制 |
--device-write-bps |
限制设备的写入速度,单位字节/秒 |
docker run --device-write-bps /dev/sda:1mb nginx |
IO性能控制 |
--health-cmd |
设置健康检查命令,用于监控容器状态 |
docker run --health-cmd="curl -f http://localhost/" nginx |
应用健康监控 |
--health-interval |
设置健康检查的执行间隔时间 |
docker run --health-interval=30s nginx |
检查频率控制 |
--health-timeout |
设置健康检查命令的超时时间 |
docker run --health-timeout=3s nginx |
避免检查阻塞 |
--health-retries |
设置健康检查失败的重试次数 |
docker run --health-retries=3 nginx |
容错机制 |
--no-healthcheck |
禁用镜像中定义的健康检查 |
docker run --no-healthcheck nginx |
跳过健康检查 |
13. 容器状态和信号管理
命令 |
详细说明 |
示例 |
备注 |
docker wait <容器> |
阻塞等待容器停止并返回其退出状态码 |
docker wait web |
脚本中等待容器完成 |
docker kill -s SIGTERM <容器> |
向容器主进程发送SIGTERM信号,请求优雅关闭 |
docker kill -s SIGTERM web |
给应用清理时间 |
docker kill -s SIGKILL <容器> |
向容器主进程发送SIGKILL信号,强制立即终止 |
docker kill -s SIGKILL web |
强制终止,可能丢失数据 |
docker kill -s SIGUSR1 <容器> |
发送用户自定义信号,应用可自定义处理逻辑 |
docker kill -s SIGUSR1 web |
应用特定的信号处理 |
docker update <容器> |
动态更新运行中容器的配置,如资源限制 |
docker update --memory 1g web |
不重启容器更新配置 |
docker update --restart <策略> |
更新容器的重启策略 |
docker update --restart=always web |
动态修改重启行为 |
docker update --cpu-shares <值> |
更新容器的CPU权重 |
docker update --cpu-shares=512 web |
动态调整CPU优先级 |
docker rename <旧名> <新名> |
重命名容器,不影响容器运行状态 |
docker rename web webapp |
更改容器标识 |
14. 实用组合命令
功能 |
命令 |
详细说明 |
停止所有容器 |
docker stop $(docker ps -q) |
获取所有运行容器ID并批量停止,用于快速清理环境 |
删除所有容器 |
docker rm $(docker ps -aq) |
删除所有容器(包括停止的),彻底清理容器环境 |
强制删除所有容器 |
docker rm -f $(docker ps -aq) |
强制删除所有容器,包括正在运行的,用于紧急清理 |
删除所有镜像 |
docker rmi $(docker images -q) |
删除所有本地镜像,完全清理镜像缓存 |
强制删除所有镜像 |
docker rmi -f $(docker images -q) |
强制删除所有镜像,即使有容器依赖 |
删除悬空镜像 |
docker rmi $(docker images -f "dangling=true" -q) |
只删除没有标签的临时镜像,清理构建垃圾 |
进入最新容器 |
docker exec -it $(docker ps -l -q) /bin/bash |
自动进入最后创建的容器,便于快速调试 |
查看容器IP |
docker inspect <容器> | grep IPAddress |
提取容器的IP地址信息,用于网络诊断 |
查看所有容器IP |
docker inspect $(docker ps -q) | grep IPAddress |
批量查看所有运行容器的IP地址 |
批量删除退出容器 |
docker rm $(docker ps -f "status=exited" -q) |
只删除已退出的容器,保留运行中的容器 |
查看容器端口 |
docker port $(docker ps -l -q) |
查看最新容器的端口映射配置 |
进入容器并查看日志 |
docker exec -it <容器> tail -f /var/log/nginx/access.log |
进入容器并实时查看特定日志文件 |
15. Dockerfile 常用指令详解
指令 |
详细说明 |
示例 |
最佳实践 |
FROM |
指定构建镜像的基础镜像,必须是Dockerfile的第一条指令 |
FROM ubuntu:20.04 |
选择官方、安全、最小的基础镜像 |
FROM ... AS |
多阶段构建,为构建阶段命名,便于后续引用 |
FROM node:14 AS builder |
用于优化镜像大小和构建效率 |
RUN |
在镜像构建过程中执行命令,每个RUN创建一个新层 |
RUN apt-get update && apt-get install -y nginx |
合并命令减少层数,清理缓存 |
RUN --mount |
使用构建时挂载,如缓存挂载,提高构建效率 |
RUN --mount=type=cache,target=/var/cache/apt apt-get update |
加速重复构建 |
COPY |
从构建上下文复制文件到镜像中,推荐使用而非ADD |
COPY . /app |
只复制必要文件,使用.dockerignore |
COPY --from |
从多阶段构建的其他阶段复制文件 |
COPY --from=builder /app/dist /usr/share/nginx/html |
实现镜像瘦身 |
COPY --chown |
复制文件时同时设置文件的所有者和组 |
COPY --chown=nginx:nginx . /app |
避免权限问题 |
ADD |
类似COPY但支持URL下载和自动解压tar文件 |
ADD app.tar.gz /app |
仅在需要特殊功能时使用 |
WORKDIR |
设置后续指令的工作目录,如果不存在会自动创建 |
WORKDIR /app |
使用绝对路径,保持一致性 |
EXPOSE |
声明容器运行时监听的端口,仅为文档说明 |
EXPOSE 80 443 |
不实际发布端口,需要-p参数 |
ENV |
设置环境变量,在构建和运行时都可用 |
ENV NODE_ENV=production |
用于配置应用行为 |
ARG |
定义构建时参数,只在构建过程中可用 |
ARG VERSION=latest |
用于构建时的动态配置 |
LABEL |
为镜像添加元数据标签,用于分类和管理 |
LABEL version="1.0" description="My app" |
添加版本、维护者等信息 |
CMD |
指定容器启动时的默认命令,可被docker run覆盖 |
CMD ["nginx", "-g", "daemon off;"] |
使用exec格式,避免shell包装 |
ENTRYPOINT |
设置容器的入口点,不会被docker run覆盖 |
ENTRYPOINT ["./start.sh"] |
与CMD配合使用,提供灵活性 |
VOLUME |
声明挂载点,创建匿名卷 |
VOLUME ["/data"] |
用于数据持久化 |
USER |
指定后续指令和容器运行时的用户 |
USER nginx |
避免使用root用户运行应用 |
SHELL |
指定RUN、CMD、ENTRYPOINT使用的shell |
SHELL ["/bin/bash", "-c"] |
在Windows容器中特别有用 |
STOPSIGNAL |
设置停止容器时发送的系统信号 |
STOPSIGNAL SIGTERM |
确保应用优雅关闭 |
HEALTHCHECK |
定义检查容器健康状态的命令 |
HEALTHCHECK CMD curl -f http://localhost/ || exit 1 |
提供应用级健康监控 |
ONBUILD |
设置触发器,当此镜像作为基础镜像时执行 |
ONBUILD COPY . /app |
创建可重用的基础镜像 |
16. 常用服务部署示例
服务 |
完整部署命令 |
详细说明 |
Nginx |
docker run -d --name nginx -p 80:80 -v /data/html:/usr/share/nginx/html -v /data/nginx.conf:/etc/nginx/nginx.conf nginx |
Web服务器,映射配置文件和网站目录 |
Apache |
docker run -d --name apache -p 8080:80 -v /data/html:/usr/local/apache2/htdocs -v /data/httpd.conf:/usr/local/apache2/conf/httpd.conf httpd |
Apache Web服务器,自定义配置 |
MySQL |
docker run -d --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password -e MYSQL_DATABASE=mydb -v mysql_data:/var/lib/mysql mysql:8.0 |
MySQL数据库,持久化数据存储 |
PostgreSQL |
docker run -d --name postgres -p 5432:5432 -e POSTGRES_PASSWORD=password -e POSTGRES_DB=mydb -v postgres_data:/var/lib/postgresql/data postgres:13 |
PostgreSQL数据库,包含初始数据库 |
Redis |
docker run -d --name redis -p 6379:6379 -v redis_data:/data redis:6.2 redis-server --appendonly yes --requirepass mypassword |
Redis缓存,启用持久化和密码认证 |
MongoDB |
docker run -d --name mongo -p 27017:27017 -e MONGO_INITDB_ROOT_USERNAME=admin -e MONGO_INITDB_ROOT_PASSWORD=password -v mongo_data:/data/db mongo:5.0 |
MongoDB文档数据库,设置管理员账户 |
Elasticsearch |
docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" elasticsearch:7.14.0 |
Elasticsearch搜索引擎,单节点模式 |
RabbitMQ |
docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=password rabbitmq:3.9-management |
RabbitMQ消息队列,包含管理界面 |
Node.js |
docker run -d --name nodeapp -p 3000:3000 -v /app:/usr/src/app -w /usr/src/app -e NODE_ENV=production node:16 npm start |
Node.js应用,开发环境配置 |
Python Flask |
docker run -d --name flaskapp -p 5000:5000 -v /app:/app -w /app -e FLASK_ENV=production python:3.9 python app.py |
Python Flask应用,生产环境 |
17. 调试和故障排除
命令 |
详细说明 |
示例 |
使用场景 |
docker logs --details <容器> |
查看容器的详细日志,包括额外的元数据信息 |
docker logs --details web |
深度日志分析和调试 |
docker events |
实时监控Docker系统事件,包括容器、镜像、网络等操作 |
docker events |
系统活动监控和审计 |
docker events --filter |
过滤特定类型的事件,如特定容器或事件类型 |
docker events --filter container=web |
针对性事件监控 |
docker exec <容器> ps aux |
查看容器内所有运行的进程及其状态 |
docker exec web ps aux |
进程状态诊断 |
docker exec <容器> netstat -tlnp |
查看容器内的网络连接和监听端口 |
docker exec web netstat -tlnp |
网络连接诊断 |
docker exec <容器> df -h |
查看容器内文件系统的磁盘使用情况 |
docker exec web df -h |
存储空间分析 |
docker exec <容器> free -h |
查看容器内的内存使用情况 |
docker exec web free -h |
内存使用分析 |
docker exec <容器> top |
实时查看容器内的进程活动 |
docker exec web top |
实时性能监控 |
docker exec <容器> env |
查看容器内的所有环境变量 |
docker exec web env |
环境配置检查 |
docker run --rm -it <镜像> /bin/bash |
创建临时调试容器,用完自动删除 |
docker run --rm -it ubuntu /bin/bash |
快速环境测试和调试 |
这个详细版的Docker命令速查表提供了每个命令的深入说明、实际应用场景和最佳实践建议,可以作为Docker学习和日常运维工作的完整参考手册。
通过本教程,您已掌握Docker从开发到部署的全流程技能,可灵活选择Compose编排或手动管理方案。建议结合官方文档(Docker Docs)深入探索更多高级特性。