OA0
OA0 是一个探索 AI 的社区
现在注册
已注册用户请  登录
OA0  ›  技能包  ›  docker-essentials:容器化的核心Docker命令与工作流

docker-essentials:容器化的核心Docker命令与工作流

 
  shell ·  2026-02-02 01:44:21 · 24 次点击  · 0 条评论  

名称: docker-essentials
描述: 容器管理、镜像操作和调试的核心 Docker 命令与工作流。
主页: https://docs.docker.com/
元数据: {"clawdbot":{"emoji":"🐳","requires":{"bins":["docker"]}}}


Docker 核心命令

用于容器和镜像管理的基本 Docker 命令。

容器生命周期

运行容器

# 从镜像运行容器
docker run nginx

# 在后台运行(分离模式)
docker run -d nginx

# 指定容器名称运行
docker run --name my-nginx -d nginx

# 运行并映射端口
docker run -p 8080:80 -d nginx

# 运行并设置环境变量
docker run -e MY_VAR=value -d app

# 运行并挂载卷
docker run -v /host/path:/container/path -d app

# 运行并在退出后自动删除容器
docker run --rm alpine echo "Hello"

# 交互式终端运行
docker run -it ubuntu bash

管理容器

# 列出正在运行的容器
docker ps

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

# 停止容器
docker stop container_name

# 启动已停止的容器
docker start container_name

# 重启容器
docker restart container_name

# 删除容器
docker rm container_name

# 强制删除正在运行的容器
docker rm -f container_name

# 清理所有已停止的容器
docker container prune

容器检查与调试

查看日志

# 显示日志
docker logs container_name

# 实时跟踪日志(类似 tail -f)
docker logs -f container_name

# 显示最后 100 行日志
docker logs --tail 100 container_name

# 显示带时间戳的日志
docker logs -t container_name

执行命令

# 在运行中的容器内执行命令
docker exec container_name ls -la

# 进入交互式 Shell
docker exec -it container_name bash

# 以特定用户身份执行
docker exec -u root -it container_name bash

# 设置环境变量并执行
docker exec -e VAR=value container_name env

检查信息

# 检查容器详细信息
docker inspect container_name

# 获取特定字段(JSON 路径)
docker inspect -f '{{.NetworkSettings.IPAddress}}' container_name

# 查看容器资源统计
docker stats

# 查看特定容器的统计
docker stats container_name

# 查看容器内进程
docker top container_name

镜像管理

构建镜像

# 从 Dockerfile 构建
docker build -t myapp:1.0 .

# 使用自定义 Dockerfile 构建
docker build -f Dockerfile.dev -t myapp:dev .

# 使用构建参数构建
docker build --build-arg VERSION=1.0 -t myapp .

# 不使用缓存构建
docker build --no-cache -t myapp .

管理镜像

# 列出镜像
docker images

# 从注册表拉取镜像
docker pull nginx:latest

# 为镜像打标签
docker tag myapp:1.0 myapp:latest

# 推送到注册表
docker push myrepo/myapp:1.0

# 删除镜像
docker rmi image_name

# 清理未使用的镜像
docker image prune

# 清理所有未使用的镜像
docker image prune -a

Docker Compose

基本操作

# 启动服务
docker-compose up

# 在后台启动服务
docker-compose up -d

# 停止服务
docker-compose down

# 停止服务并删除卷
docker-compose down -v

# 查看日志
docker-compose logs

# 实时跟踪特定服务的日志
docker-compose logs -f web

# 扩展服务实例数量
docker-compose up -d --scale web=3

服务管理

# 列出服务
docker-compose ps

# 在服务中执行命令
docker-compose exec web bash

# 重启服务
docker-compose restart web

# 重新构建服务
docker-compose build web

# 重新构建并重启
docker-compose up -d --build

网络

# 列出网络
docker network ls

# 创建网络
docker network create mynetwork

# 将容器连接到网络
docker network connect mynetwork container_name

# 从网络断开容器
docker network disconnect mynetwork container_name

# 检查网络详情
docker network inspect mynetwork

# 删除网络
docker network rm mynetwork

# 列出卷
docker volume ls

# 创建卷
docker volume create myvolume

# 检查卷详情
docker volume inspect myvolume

# 删除卷
docker volume rm myvolume

# 清理未使用的卷
docker volume prune

# 运行容器并使用卷
docker run -v myvolume:/data -d app

系统管理

# 查看磁盘使用情况
docker system df

# 清理所有未使用的资源
docker system prune

# 清理所有未使用的资源(包括镜像)
docker system prune -a

# 清理所有未使用的资源(包括卷)
docker system prune --volumes

# 显示 Docker 信息
docker info

# 显示 Docker 版本
docker version

常用工作流

开发容器:

docker run -it --rm \
  -v $(pwd):/app \
  -w /app \
  -p 3000:3000 \
  node:18 \
  npm run dev

数据库容器:

docker run -d \
  --name postgres \
  -e POSTGRES_PASSWORD=secret \
  -e POSTGRES_DB=mydb \
  -v postgres-data:/var/lib/postgresql/data \
  -p 5432:5432 \
  postgres:15

快速调试:

# 进入运行中容器的 Shell
docker exec -it container_name sh

# 从容器复制文件到本地
docker cp container_name:/path/to/file ./local/path

# 从本地复制文件到容器
docker cp ./local/file container_name:/path/in/container

多阶段构建:

# Dockerfile
FROM node:18 AS builder
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build

FROM nginx:alpine
COPY --from=builder /app/dist /usr/share/nginx/html

常用参数

docker run 参数:
- -d: 分离模式(后台运行)
- -it: 交互式终端
- -p: 端口映射(主机:容器)
- -v: 卷挂载
- -e: 环境变量
- --name: 容器名称
- --rm: 退出后自动删除
- --network: 连接到网络

docker exec 参数:
- -it: 交互式终端
- -u: 用户
- -w: 工作目录

实用技巧

  • 使用 .dockerignore 文件排除构建上下文中的文件
  • 在 Dockerfile 中合并 RUN 命令以减少层数
  • 使用多阶段构建来减小镜像体积
  • 始终为镜像打上版本标签
  • 对一次性容器使用 --rm 参数
  • 多容器应用推荐使用 docker-compose
  • 定期使用 docker system prune 进行清理

文档

官方文档:https://docs.docker.com/
Dockerfile 参考:https://docs.docker.com/engine/reference/builder/
Compose 文件参考:https://docs.docker.com/compose/compose-file/

24 次点击  ∙  0 人收藏  
登录后收藏  
0 条回复
关于 ·  帮助 ·  PING ·  隐私 ·  条款   
OA0 - Omni AI 0 一个探索 AI 的社区
沪ICP备2024103595号-2
耗时 23 ms
Developed with Cursor