简介
Docker CLI 是一个强大的工具,它使开发者能够通过命令行界面与 Docker 容器、镜像和网络进行交互。本全面教程将指导你学习基本的 Docker CLI 技术,帮助你了解如何高效地管理和操作容器、构建强大的开发环境以及优化你的容器化工作流程。
Docker CLI 基础
什么是 Docker CLI?
Docker 命令行界面(CLI)是一个强大的工具,它允许用户与 Docker 守护进程进行交互,并管理容器、镜像、网络和卷。它提供了一个基于文本的界面来执行 Docker 命令并执行各种操作。
安装与设置
在使用 Docker CLI 之前,请确保已在你的 Ubuntu 22.04 系统上安装了 Docker:
## 更新软件包索引
sudo apt update
## 安装 Docker
sudo apt install docker.io
## 验证安装
docker --version
Docker CLI 基本结构
Docker CLI 命令遵循标准语法:
docker <对象> <命令> <选项>
命令类别
| 类别 | 用途 |
|---|---|
| 管理命令 | 管理 Docker 对象 |
| 镜像命令 | 拉取、构建和管理镜像 |
| 容器命令 | 创建、运行和控制容器 |
| 网络命令 | 配置 Docker 网络 |
| 卷命令 | 管理持久数据存储 |
认证与权限
graph TD
A[用户] --> B{Docker CLI}
B --> |需要 Sudo| C[根权限]
B --> |用户组| D[Docker 组访问权限]
为了避免对每个命令都使用 sudo,请将你的用户添加到 docker 组:
## 将当前用户添加到 docker 组
sudo usermod -aG docker $USER
## 重启会话
newgrp docker
Docker CLI 配置
配置文件通常位于:
/etc/docker/daemon.json(系统范围)~/.docker/config.json(用户特定)
关键概念
- Docker 守护进程:管理 Docker 对象的后台服务
- Docker 客户端:用于与守护进程交互的 CLI 工具
- Docker 对象:镜像、容器、网络、卷
通过理解这些基础知识,用户可以有效地利用 Docker CLI 来完成容器化任务。LabEx 建议练习这些基本命令,以在 Docker 管理方面打下坚实的基础。
常用 Docker 命令
镜像管理命令
拉取镜像
## 从 Docker Hub 拉取镜像
docker pull ubuntu:latest
docker pull nginx:1.21
列出镜像
## 列出所有本地镜像
docker images
docker image ls
构建镜像
## 从 Dockerfile 构建镜像
docker build -t myapp:v1.
容器操作
运行容器
## 运行一个新容器
docker run -d --name web-server nginx
docker run -it ubuntu:latest /bin/bash
容器管理命令
| 命令 | 描述 | 示例 |
|---|---|---|
docker ps |
列出正在运行的容器 | docker ps |
docker ps -a |
列出所有容器 | docker ps -a |
docker start |
启动已停止的容器 | docker start web-server |
docker stop |
停止正在运行的容器 | docker stop web-server |
docker rm |
删除容器 | docker rm web-server |
网络命令
graph TD
A[Docker 网络命令]
A --> B[创建网络]
A --> C[列出网络]
A --> D[检查网络]
网络操作
## 创建一个自定义网络
docker network create mynetwork
## 列出网络
docker network ls
## 将容器连接到网络
docker network connect mynetwork web-server
卷管理
## 创建一个卷
docker volume create mydata
## 列出卷
docker volume ls
## 将卷挂载到容器
docker run -v mydata:/app nginx
调试与检查
## 查看容器日志
docker logs web-server
## 在正在运行的容器中执行命令
docker exec -it web-server bash
## 检查容器详细信息
docker inspect web-server
高级命令
清理
## 删除未使用的镜像
docker image prune
## 删除所有已停止的容器
docker container prune
最佳实践
- 始终使用特定的镜像标签
- 删除不必要的容器和镜像
- 使用卷来存储持久数据
- 利用网络隔离
LabEx 建议掌握这些常用的 Docker CLI 命令,以便高效地管理容器化环境。
CLI 工作流模式
开发工作流
graph TD
A[代码开发] --> B[构建 Docker 镜像]
B --> C[测试容器]
C --> D[推送到镜像仓库]
D --> E[部署容器]
典型的开发周期
## 克隆项目
git clone https://github.com/example/project
## 创建 Dockerfile
touch Dockerfile
## 构建镜像
docker build -t myapp:dev.
## 运行容器进行测试
docker run -d --name test-container myapp:dev
持续集成工作流
构建与测试
## 使用构建参数构建镜像
docker build --build-arg ENV=development -t myapp:ci.
## 运行自动化测试
docker run --rm myapp:ci npm test
容器生命周期管理
工作流阶段
| 阶段 | Docker 命令 | 目的 |
|---|---|---|
| 构建 | docker build |
创建镜像 |
| 测试 | docker run |
验证容器 |
| 推送 | docker push |
共享镜像 |
| 部署 | docker run |
在生产环境中运行 |
多容器部署
Docker Compose 工作流
## 在 docker-compose.yml 中定义服务
version: '3'
services:
web:
build:.
ports:
- "8000:80"
database:
image: postgres:latest
## 启动多容器环境
docker-compose up -d
微服务模式
graph TD
A[API 服务] --> B[数据库服务]
A --> C[缓存服务]
A --> D[认证服务]
服务管理
## 为微服务创建网络
docker network create microservices-net
## 运行带有网络连接的服务
docker run -d --name api --network microservices-net myapi
docker run -d --name database --network microservices-net mydb
调试工作流
故障排除步骤
## 检查容器日志
docker logs api-service
## 执行交互式 shell
docker exec -it api-service /bin/bash
## 检查容器资源使用情况
docker stats api-service
生产部署工作流
镜像标记策略
## 为生产环境标记镜像
docker tag myapp:latest myregistry.com/myapp:v1.0
## 推送到私有镜像仓库
docker push myregistry.com/myapp:v1.0
## 在生产环境中拉取并运行
docker pull myregistry.com/myapp:v1.0
docker run -d myregistry.com/myapp:v1.0
最佳实践
- 使用特定的镜像标签
- 实现多阶段构建
- 最小化镜像大小
- 对于复杂设置使用 Docker Compose
LabEx 建议实践这些工作流模式,以简化 Docker 容器管理和部署流程。
总结
通过掌握 Docker CLI 命令和工作流模式,开发者可以显著提升他们的容器管理技能。本教程为你提供了基本的技术,用于操作、创建、管理和优化 Docker 容器,使你能够在现代软件开发和部署场景中充分发挥 Docker 的潜力。



