Docker Essentials - Docker 基础命令与容器管理技巧
v1.0.0提供 Docker 容器、镜像、网络、存储等核心操作命令及常用工作流,帮助开发者快速上手容器化部署、调试和清理。
运行时依赖
安装命令
点击复制本土化适配说明
Docker 已预装在多数 Linux 发行版,如未安装请参考官方文档进行安装。
技能文档
容器与镜像管理的关键 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# 获取特定字段(JSONPath) 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:端口映射(host:container)-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/