引言

Docker 作为当下最流行的容器化技术,以其轻量、快速、可移植的特性,极大地简化了应用的构建、分发和部署流程。掌握 Docker 的基本命令是高效使用 Docker 的关键。本文将系统性地梳理 Docker 日常使用中最常用、最核心的命令,涵盖容器生命周期管理、镜像操作、数据管理、网络配置等方面,助你快速上手并提升工作效率。

一、容器生命周期管理(核心操作)

1. docker run:创建并启动新容器

功能:这是最常用的命令之一,用于基于指定镜像创建并启动一个新的容器。

常用参数

  • -d:后台运行容器 (detached mode)。
  • -it:分配一个伪终端并保持 STDIN 打开,通常用于交互式容器 (如 /bin/bash)。
  • --name:为容器指定一个自定义名称。
  • -p:映射端口 (主机端口:容器端口)。
  • -v:挂载卷 (主机目录:容器目录 或 卷名:容器目录)。
  • --rm:容器退出时自动删除。
  • -e:设置环境变量。

示例

docker run -d --name my-nginx -p 8080:80 nginx:latest
docker run -it --rm ubuntu:22.04 /bin/bash

2. docker start:启动已停止的容器

功能:启动一个或多个处于停止 (Exited) 状态的容器。

示例

docker start my-nginx

3. docker stop:停止运行中的容器

功能:优雅地停止一个或多个运行中的容器(发送 SIGTERM,然后 SIGKILL)。

示例

docker stop my-nginx

4. docker restart:重启容器

功能:重启一个或多个容器。

示例

docker restart my-nginx

5. docker kill:强制停止容器

功能:强制立即停止一个或多个运行中的容器(直接发送 SIGKILL)。

示例

docker kill my-nginx

6. docker exec:在运行中的容器内执行命令

功能:在正在运行的容器中启动一个新进程(通常是执行一个命令或进入 shell)。

常用参数-it(用于交互式命令)。

示例

docker exec -it my-nginx /bin/bash # 进入容器的 bash shell
docker exec my-nginx ls /app # 在容器内执行 ls 命令

7. docker pause / docker unpause:暂停/恢复容器进程

功能:暂停容器内所有进程(pause),或恢复已暂停的进程(unpause)。

示例

docker pause my-nginx
docker unpause my-nginx

8. docker rm:删除一个或多个容器

功能:删除已停止的容器。使用 -f 可以强制删除运行中的容器(先 kill)。

示例

docker rm my-nginx # 删除已停止的容器
docker rm -f my-nginx # 强制删除运行中的容器

9. docker ps:列出容器

功能:查看容器列表。

常用参数

  • -a:显示所有容器(包括已停止的)。
  • -q:仅显示容器 ID。
  • -l:显示最近创建的容器。

示例

docker ps # 查看运行中的容器
docker ps -a # 查看所有容器

二、镜像管理

1. docker images:列出本地镜像

功能:查看本地存储的 Docker 镜像列表。

常用参数-a(显示所有镜像,包括中间层), -q(仅显示镜像 ID)。

示例

docker images

2. docker pull:拉取镜像

功能:从镜像仓库(默认 Docker Hub)下载镜像到本地。

示例

docker pull ubuntu:22.04

3. docker search:搜索镜像

功能:在 Docker Hub 等仓库中搜索镜像。

示例

docker search nginx

4. docker build:构建镜像

功能:根据 Dockerfile 构建新的镜像。

常用参数-t(指定镜像名称和标签)。

示例

docker build -t my-custom-image:1.0 . (注意最后的 . 表示当前目录是构建上下文)

5. docker rmi:删除镜像

功能:删除本地一个或多个镜像。使用 -f 强制删除。

示例

docker rmi ubuntu:22.04 # 删除指定镜像
docker rmi $(docker images -q) # 删除所有镜像 (谨慎使用!)

6. docker tag:标记镜像

功能:为本地镜像创建一个新的标签(通常用于准备推送到私有仓库)。

示例

docker tag my-custom-image:1.0 my-registry.com/my-custom-image:1.0

7. docker push:推送镜像

功能:将本地镜像推送到远程仓库(如 Docker Hub、私有仓库)。

示例

docker push my-registry.com/my-custom-image:1.0

三、信息查看与日志

1. docker logs:获取容器日志

功能:查看容器的标准输出 (STDOUT) 和标准错误 (STDERR) 日志。

常用参数-f(跟踪日志输出), -t(显示时间戳), --tail(显示末尾指定行数)。

示例

docker logs my-nginx # 查看全部日志
docker logs -f -t --tail=100 my-nginx # 实时跟踪最后100行日志并带时间戳

2. docker inspect:查看容器/镜像的详细信息

功能:获取容器或镜像的底层详细信息(配置、网络设置、挂载点等),输出为 JSON 格式。

示例

docker inspect my-nginx # 查看容器详细信息
docker inspect ubuntu:22.04 # 查看镜像详细信息

3. docker stats:实时监控容器资源使用

功能:实时显示一个或多个容器的资源使用统计(CPU、内存、网络 I/O、磁盘 I/O)。

示例

docker stats my-nginx

4. docker top:查看容器进程

功能:查看容器内正在运行的进程信息。

示例

docker top my-nginx

四、数据管理(卷与绑定挂载)

1. docker volume create:创建数据卷

功能:创建一个新的、命名的数据卷(由 Docker 管理)。

示例

docker volume create my-data

2. docker volume ls:列出数据卷

功能:列出所有本地数据卷。

示例

docker volume ls

3. docker volume inspect:查看卷详细信息

功能:查看指定数据卷的详细信息(如挂载点)。

示例

docker volume inspect my-data

4. docker volume rm:删除数据卷

功能:删除一个或多个数据卷。

示例

docker volume rm my-data

5. docker volume prune:删除未使用的数据卷

功能:删除所有未被任何容器引用的本地数据卷。

示例

docker volume prune (谨慎使用!)

6. 挂载卷 (-v--mount)

如前所述,在 docker run 时使用 -v volume_name:/path/in/container-v /host/path:/path/in/container 来分别挂载命名卷或绑定宿主机目录。

五、网络管理

1. docker network ls:列出网络

功能:列出 Docker 引擎管理的所有网络。

示例

docker network ls

2. docker network create:创建网络

功能:创建一个新的用户自定义网络(支持 bridge, overlay 等驱动)。

示例

docker network create my-network

3. docker network inspect:查看网络详细信息

功能:查看指定网络的详细信息(连接容器、IPAM 配置等)。

示例

docker network inspect bridge

4. docker network connect:将容器连接到网络

功能:将运行中的容器连接到指定网络。

示例

docker network connect my-network my-nginx

5. docker network disconnect:断开容器与网络的连接

功能:将容器从指定网络中断开。

示例

docker network disconnect my-network my-nginx

6. docker network rm:删除网络

功能:删除一个或多个未使用的网络。

示例

docker network rm my-network

六、Docker Compose (简化多容器应用)

虽然 docker-compose 是一个单独的工具,但在管理多容器应用时不可或缺,通常与 docker-compose.yml 文件配合使用。

1. docker-compose up:启动/构建服务

功能:根据 docker-compose.yml 文件创建并启动所有定义的服务。-d 参数用于后台运行。

示例

docker-compose up -d

2. docker-compose down:停止并移除服务

功能:停止并移除由 up 创建的所有容器、网络、卷。

示例

docker-compose down

3. docker-compose ps:列出服务

功能:列出项目中正在运行的容器。

示例

docker-compose ps

4. docker-compose logs:查看服务日志

功能:查看项目中所有服务的日志。常用 -f 跟踪。

示例

docker-compose logs -f

5. docker-compose build:构建服务镜像

功能:构建或重新构建服务所需的镜像。

示例

docker-compose build

七、Docker Swarm (集群管理)

对于生产环境集群,Docker Swarm 提供了原生的集群和编排能力。

1. docker swarm init:初始化 Swarm 集群

功能:将当前节点设置为 Swarm 管理节点。

示例

docker swarm init --advertise-addr <MANAGER-IP>

2. docker swarm join:加入 Swarm 集群

功能:将节点作为工作者或管理节点加入现有 Swarm 集群。

示例

docker swarm join --token <TOKEN> <MANAGER-IP>:<PORT>

3. docker node ls:列出集群节点

功能:列出 Swarm 集群中的所有节点。

示例

docker node ls

4. docker service create:创建服务

功能:在 Swarm 集群中创建一个新的服务(多副本容器)。

示例

docker service create --name web -p 8080:80 --replicas 3 nginx:latest

5. docker service ls:列出服务

功能:列出 Swarm 集群中运行的服务。

示例

docker service ls

6. docker service scale:扩缩容服务

功能:调整服务副本数量。

示例

docker service scale web=5

7. docker service update:更新服务

功能:更新服务的配置(如镜像版本、环境变量等)。

示例

docker service update --image nginx:alpine web

结语

熟练掌握这些 Docker 常用命令是高效管理和运维容器化应用的基础。本文涵盖了从基础容器操作、镜像管理到高级的网络、数据卷以及 Docker Compose 和 Swarm 集群命令,希望能成为你日常工作中的实用参考手册。建议在实际操作中多加练习,并结合 --help 参数查看每个命令的详细用法和选项。

更多推荐