如何高效使用 Docker CLI

DockerBeginner
立即练习

简介

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(用户特定)

关键概念

  1. Docker 守护进程:管理 Docker 对象的后台服务
  2. Docker 客户端:用于与守护进程交互的 CLI 工具
  3. 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

最佳实践

  1. 始终使用特定的镜像标签
  2. 删除不必要的容器和镜像
  3. 使用卷来存储持久数据
  4. 利用网络隔离

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

最佳实践

  1. 使用特定的镜像标签
  2. 实现多阶段构建
  3. 最小化镜像大小
  4. 对于复杂设置使用 Docker Compose

LabEx 建议实践这些工作流模式,以简化 Docker 容器管理和部署流程。

总结

通过掌握 Docker CLI 命令和工作流模式,开发者可以显著提升他们的容器管理技能。本教程为你提供了基本的技术,用于操作、创建、管理和优化 Docker 容器,使你能够在现代软件开发和部署场景中充分发挥 Docker 的潜力。