导航菜单

Docker 核心操作

陆兴东 2026-04-09 15 浏览 Docker

镜像管理

镜像操作流程图

image.png

常用命令详解

 

# ============ 搜索镜像 ============          
# 在 Docker Hub 搜索镜像          
docker search nginx          
docker search python --filter=stars=100# 只显示星数超过100的          

# ============ 拉取镜像 ============          
# 拉取最新版镜像          
docker pull nginx          

# 拉取指定版本          
docker pull nginx:1.24          
docker pull nginx:alpine          
docker pull nginx@sha256:abc123...# 拉取特定摘要的镜像          

# ============ 查看镜像 ============          
# 列出本地所有镜像          
docker images          
docker image ls          

# 查看镜像详细信息          
docker inspect nginx:latest          

# 查看镜像历史(分层信息)          
docker history nginx:latest          

# ============ 删除镜像 ============          
# 删除单个镜像          
docker rmi nginx:latest          

# 强制删除(即使有容器在使用)          
docker rmi -f nginx:latest          

# 删除所有悬虚镜像(dangling images)          
docker image prune          

# 删除所有未使用的镜像          
docker image prune -a          

# ============ 构建镜像 ============          
# 从 Dockerfile 构建镜像          
docker build -t myapp:v1.0 .          

# 使用 Dockerfile 并指定构建参数          
docker build \          
--build-arg VERSION=1.0 \          
--build-arg ENV=production \          
-t myapp:v1.0 .          

# ============ 标记和推送镜像 ============          
# 为镜像打标签          
docker tag myapp:v1.0 username/myapp:v1.0          
docker tag myapp:v1.0 registry.example.com/myapp:v1.0          

# 推送到 Docker Hub          
docker push username/myapp:v1.0          

# 推送到私有仓库          
docker push registry.example.com/myapp:v1.0          

# ============ 导出和导入镜像 ============          
# 导出镜像到 tar 文件          
docker save -o nginx.tar nginx:latest          
docker save nginx:latest > nginx.tar          

# 从 tar 文件导入镜像          
docker load -i nginx.tar          
docker load < nginx.tar          

# ============ 镜像历史和清理 ============          
# 查看镜像构建历史          
docker history nginx:latest --no-trunc          

# 清理所有未使用的镜像、容器、网络、构建缓存          
docker system prune -a --volumes

 

3.2 容器管理

 

容器生命周期

image.png

 

 

容器管理命令大全

 

# ============ 创建和运行容器 ============          
# 运行容器(最常用)          
docker run nginx:latest          

# 运行容器(后台模式)          
docker run -d nginx:latest          

# 运行容器(指定端口映射)          
docker run -d -p 8080:80 nginx:latest          

# 运行容器(指定名称)          
docker run -d --name mynginx nginx:latest          

# 运行容器(挂载卷)          
docker run -d -v /host/path:/container/path nginx:latest          

# 运行容器(环境变量)          
docker run -d -e APP_ENV=production -e DB_HOST=mysql nginx:latest          

# 运行容器(交互式)          
docker run -it ubuntu:latest bash          

# 运行容器(自动删除)          
docker run --rm nginx:latest          

# 创建但不启动容器          
docker create --name mynginx nginx:latest          

# ============ 查看容器 ============          
# 列出运行中的容器          
docker ps          

# 列出所有容器(包括停止的)          
docker ps -a          

# 查看容器详细信息          
docker inspect mynginx          

# 查看容器日志          
docker logs mynginx          

# 实时查看日志          
docker logs -f mynginx          

# 查看最后100行日志          
docker logs --tail 100 mynginx          

# 查看带时间戳的日志          
docker logs -t mynginx          

# 查看容器内进程          
docker top mynginx          

# 查看容器资源使用          
docker stats mynginx          

# 查看所有容器的资源使用          
docker stats          

# ============ 容器控制 ============          
# 启动容器          
docker start mynginx          

# 停止容器          
docker stop mynginx          

# 强制停止容器          
docker kill mynginx          

# 重启容器          
docker restart mynginx          

# 暂停容器          
docker pause mynginx          

# 恢复暂停的容器          
docker unpause mynginx          

# ============ 容器操作 ============          
# 进入运行中的容器(推荐方式)          
docker exec -it mynginx bash          
docker exec -it mynginx /bin/sh          

# 在容器中执行命令          
docker exec mynginx nginx -v          

# 从容器复制文件到主机          
docker cp mynginx:/etc/nginx/nginx.conf ./nginx.conf          

# 从主机复制文件到容器          
docker cp ./nginx.conf mynginx:/etc/nginx/nginx.conf          

# 查看容器文件系统变更          
docker diff mynginx          

# ============ 删除容器 ============          
# 删除已停止的容器          
docker rm mynginx          

# 强制删除运行中的容器          
docker rm -f mynginx          

# 删除所有已停止的容器          
docker container prune          

# 删除所有容器(包括运行中的)          
docker rm -f $(docker ps -aq)          

# ============ 容器导出和导入 ============          
# 导出容器为镜像          
docker commit mynginx mynginx:new-image          

# 导出容器为 tar 文件          
docker export mynginx > mynginx.tar          

# 从 tar 文件导入为镜像          
docker import mynginx.tar mynginx:imported          

# ============ 容器更新 ============          
# 更新容器重启策略          
docker update --restart=always mynginx          

# 更新容器资源限制          
docker update --memory="512m" --cpus=2 mynginx          

# ============ 重启策略 ============          
# no: 不自动重启(默认)          
docker run --restart=no myapp          

# on-failure: 只有在非正常退出时重启          
docker run --restart=on-failure:5 myapp# 最多重启5次          

# always: 总是重启          
docker run --restart=always myapp          

# unless-stopped: 总是重启,除非手动停止          
docker run --restart=unless-stopped myapp

 

_________________________________

 

3.3 Docker 网络管理

 

网络模式

image.png

网络操作命令

 

# ============ 查看网络 ============          
# 列出所有网络          
docker network ls          

# 查看网络详细信息          
docker network inspect bridge          

# ============ 创建网络 ============          
# 创建 bridge 网络          
docker network create mynetwork          

# 创建指定子网的网络          
docker network create \          
--driver=bridge \          
--subnet=172.20.0.0/16 \          
--gateway=172.20.0.1 \          
mynetwork          

# 创建 overlay 网络(用于 Swarm)          
docker network create --driver=overlay --attachable my-overlay          

# ============ 连接容器到网络 ============          
# 运行容器时指定网络          
docker run --network=mynetwork --name container1 nginx          

# 将已有容器连接到网络          
docker network connect mynetwork existing_container          

# 断开容器连接          
docker network disconnect mynetwork existing_container          

# ============ 端口映射 ============          
# 映射单个端口          
docker run -p 8080:80 nginx          

# 映射多个端口          
docker run -p 8080:80 -p 8443:443 nginx          

# 绑定到特定接口          
docker run -p 127.0.0.1:8080:80 nginx          

# 随机端口映射          
docker run -P nginx          

# ============ 删除网络 ============          
# 删除网络          
docker network rm mynetwork          

# 删除所有未使用的网络          
docker network prune

 

网络模式详解

 

# ============ bridge 模式(默认)============          
docker run --network=bridge nginx          
# 特点:          
# - 容器拥有独立 IP          
# - 通过 NAT 访问外网          
# - 端口映射才能从外部访问          

# ============ host 模式 ============          
docker run --network=host nginx          
# 特点:          
# - 共享主机网络栈          
# - 无端口映射,直接使用主机端口          
# - 网络性能最好          
# 注意:Windows/Mac 不支持此模式          

# ============ container 模式 ============          
docker run --network=container:container1 nginx          
# 特点:          
# - 共享另一个容器的网络命名空间          
# - localhost 可以访问共享容器的服务          

# ============ none 模式 ============          
docker run --network=none nginx          
# 特点:          
# - 完全网络隔离          
# - 只有 lo 接口          
# - 适合高度安全的场景

 

_____________________

 

3.4 数据持久化

 

image.png

 

 

Volume 操作

 

# ============ 创建卷 ============          
# 创建命名卷          
docker volume create mydata          

# 列出所有卷          
docker volume ls          

# 查看卷详细信息          
docker volume inspect mydata          

# ============ 使用卷 ============          
# 运行容器并挂载卷          
docker run -d -v mydata:/data nginx          

# 运行容器并挂载到多个卷          
docker run -d \          
-v mydata1:/data1 \          
-v mydata2:/data2 \          
nginx          

# 只读挂载          
docker run -d -v mydata:/data:ro nginx          

# ============ 清理卷 ============          
# 删除卷          
docker volume rm mydata          

# 删除所有未使用的卷          
docker volume prune          

# 查看卷占用空间          
docker system df -v

 

Bind Mount 操作

 

# ============ 绝对路径挂载 ============          
docker run -d -v /host/path:/container/path nginx          

# ============ 相对路径挂载(不推荐)============          
docker run -d -v ./data:/data nginx          

# ============ 只读挂载 ============          
docker run -d -v /host/path:/container/path:ro nginx          

# ============ 挂载单个文件 ============          
docker run -d -v /host/nginx.conf:/etc/nginx/nginx.conf:ro nginx          

# ============ macOS/Windows 特殊注意事项 ============          
# Docker Desktop 需要在设置中授权目录访问          
# 推荐使用 /Users/username (macOS) 或 C:\Users\username (Windows)