## 一、Docker 常用命令

Docker 常用命令涵盖镜像管理、容器生命周期、数据卷与网络及系统维护四大核心领域，掌握这些命令可高效完成容器化部署与运维 。
镜像与容器管理

1. 镜像操作：使用 `docker images` 查看本地镜像，`docker pull` 拉取镜像，`docker rmi` 删除镜像，`docker build` 构建新镜像 。
2. 容器运行：`docker run` 创建并启动容器，常用参数包括 `-d` 后台运行、`-p` 端口映射、`-v` 挂载卷 。
3. 状态控制：`docker ps` 查看运行中容器，`docker start/stop/restart` 控制容器启停，`docker rm` 删除容器，`docker kill` 强制终止 。
4. 交互与日志：`docker exec -it` 进入容器交互，`docker logs -f` 实时查看日志，`docker attach` 连接容器主进程 。
数据卷、网络与系统维护

1. 数据卷：`docker volume create/ls/rm` 管理数据卷，`docker run -v` 挂载宿主机目录或卷到容器，实现数据持久化 。
2. 网络管理：`docker network ls/create/inspect` 查看与管理网络，`docker network connect/disconnect` 连接或断开容器网络 。
3. 系统清理：`docker system prune` 清理未使用资源，`docker system df` 查看磁盘占用，`docker version/info` 查看版本与系统信息 。

## 二、构建镜像（Building an Image）
Docker 是一个开源的应用容器引擎，它允许开发者打包、分发和运行应用程序。在 Docker 中，构建镜像是一个核心功能，它允许你将应用程序及其依赖打包在一个轻量级、可移植的容器中。以下是一些最常用的 Docker 命令，用于构建和管理 Docker 镜像：

1. 构建镜像

- docker build

  使用 `docker build` 命令从 Dockerfile 创建一个新的镜像。例如：

  ```bash
  docker build -t my-image-name:tag .
  ```

  这里 `-t` 参数用于指定镜像的名称和标签（例如 `my-image-name:tag`），最后的 `.` 表示 Dockerfile 位于当前目录。

2. 查看本地镜像

- docker images

  使用 `docker images` 命令可以列出所有本地的 Docker 镜像。例如：

  ```bash
  docker images
  ```

3. 运行容器

- docker run

  使用 `docker run` 命令从镜像启动一个新的容器。例如：

  ```bash
  docker run -d -p 80:80 --name my-container my-image-name:tag
  ```

  这里 `-d` 表示后台运行容器，`-p` 用于端口映射，`--name` 指定容器名称。

4. 查看运行中的容器

- docker ps

  使用 `docker ps` 命令可以查看当前正在运行的容器。例如：

  ```bash
  docker ps
  ```

5. 进入容器

- docker exec

  使用 `docker exec` 命令可以在运行的容器中执行命令。例如，进入一个正在运行的容器：

  ```bash
  docker exec -it my-container /bin/bash
  ```

6. 停止容器

- docker stop

  使用 `docker stop` 命令可以停止一个或多个正在运行的容器。例如：

  ```bash
  docker stop my-container
  ```

7. 删除容器和镜像

- docker rm 和 docker rmi

  使用 `docker rm` 删除一个或多个容器，使用 `docker rmi` 删除一个或多个镜像。例如：

  ```bash
  docker rm my-container
  docker rmi my-image-name:tag
  ```
说明：运行中的容器在删除前需要先停止，否则会产生如下错误：
root@myVulter:~# docker rm wordpress-wordpress-1
Error response from daemon: cannot remove container "wordpress-wordpress-1": container is running: stop the container before removing or force remove


8. 查看容器的日志

- docker logs

  使用 `docker logs` 命令可以查看容器的输出日志。例如：

  ```bash
  docker logs my-container
  ```

这些命令覆盖了从构建镜像到运行和管理容器的整个流程。通过熟练使用这些命令，你可以高效地使用 Docker。

## 三、拉取镜像
在Docker中，最常见的命令主要包括镜像（Images）、容器（Containers）、网络（Networks）、卷（Volumes）和守护进程（Daemon）管理等。这里我将重点介绍与镜像操作相关的最常用命令。

1. 拉取镜像（Pulling an Image）

使用`docker pull`命令可以从Docker Hub或其他注册中心拉取镜像到本地。例如，要拉取最新的Ubuntu镜像：

```bash
docker pull ubuntu
```

你也可以指定标签（tag）来拉取特定版本的镜像：

```bash
docker pull ubuntu:18.04
```

2. 查看镜像列表（Listing Images）

使用`docker images`命令可以列出本地所有的镜像。

```bash
docker images
```

你也可以使用`docker image ls`作为别名。

3. 删除镜像（Removing an Image）

使用`docker rmi`或`docker image rm`命令可以删除一个或多个镜像。例如，删除一个名为`ubuntu`的镜像：

```bash
docker rmi ubuntu
```
或者使用别名：
```bash
docker image rm ubuntu
```

如果要删除所有未被容器使用的镜像，可以使用：

```bash
docker image prune
```

4. 查找镜像（Searching for Images）

使用`docker search`命令可以在Docker Hub上搜索镜像。例如，搜索包含“nginx”的镜像：

```bash
docker search nginx
```

5. 标记本地镜像（Tagging an Image）

使用`docker tag`命令可以给本地镜像添加标签，这在将镜像推送到远程仓库时非常有用。例如，给本地`ubuntu`镜像添加一个新标签：

```bash
docker tag ubuntu myusername/ubuntu:latest
```

## 四、创建并启动容器
运行 Docker 镜像最常用的方法是通过 `docker run` 命令，这是创建并启动容器的标准且唯一的官方方式。不过，根据使用场景和参数组合的不同，其用法可灵活变化，主要体现在以下几种常见形式：

1. 基础运行（前台交互）
```bash
docker run -it 镜像名:tag /bin/bash
```
- `-i`：保持标准输入打开（交互模式）  
- `-t`：分配伪终端（TTY）  
- 适用于调试或进入容器内部操作，如测试、排错。

2. 后台守护式运行
```bash
docker run -d --name 容器名 -p 宿主机端口:容器端口 镜像名:tag
```
- `-d`：后台运行（detached mode）  
- `--name`：自定义容器名称  
- `-p`：端口映射，暴露服务到宿主机  
- 适用于部署服务（如 Nginx、MySQL、Redis 等）。

3. 一次性执行命令后退出
```bash
docker run 镜像名:tag 命令 [参数]
```
- 不加 `-it` 或 `-d`，容器执行完命令即退出  
- 适用于运行脚本、构建任务、测试等一次性任务，例如：
  ```bash
  docker run ubuntu /bin/echo "Hello Docker!"
  ```

---

补充说明
- `docker run` 是唯一用于“运行镜像”的命令，其他如 `docker start` 只能启动已存在但已停止的容器，不能直接运行镜像 。
- 若本地无指定镜像，`docker run` 会自动拉取（pull）该镜像（默认从 Docker Hub）。
- 常用附加参数包括：
  - `-v`：挂载数据卷（宿主机 ↔ 容器）
  - `-e`：设置环境变量
  - `--restart`：设置容器重启策略

> ✅ 总结：运行镜像只有一种方法 —— `docker run`，但通过不同参数组合可实现交互式、后台化、一次性等多种运行模式。

## 五、停止容器并删除镜像

在使用Docker时，经常需要停止正在运行的容器并删除不再需要的镜像。以下是一些常用的Docker命令来实现这些操作：

停止正在运行的容器

要停止一个或多个正在运行的容器，可以使用`docker stop`命令。例如：

```bash
docker stop [容器ID或名称]
```

如果你想停止所有正在运行的容器，可以使用：

```bash
docker stop $(docker ps -q)
```

删除停止的容器

一旦容器被停止，你可以使用`docker rm`命令来删除它。例如：

```bash
docker rm [容器ID或名称]
```

如果你想删除所有已停止的容器，可以使用：

```bash
docker container prune
```

或者使用更老的命令（在一些Docker版本中可能仍然有效）：

```bash
docker rm $(docker ps -a -q)
```

删除镜像

首先，确保没有容器正在使用该镜像。如果需要，可以先停止并删除相关的容器。然后，使用`docker rmi`命令来删除镜像：

```bash
docker rmi [镜像ID或名称]
```

如果你想删除所有未被任何容器使用的镜像（即孤立的镜像），可以使用：

```bash
docker image prune -a
```

或者使用更老的命令（在一些Docker版本中可能仍然有效）：

```bash
docker rmi $(docker images -q -f dangling=true)
```

组合命令：停止并删除容器和镜像

如果你想一次性完成停止容器并删除镜像的操作，可以结合使用上述命令。例如，首先停止所有容器，然后删除所有未被使用的镜像：

```bash
docker stop $(docker ps -q) && docker container prune && docker image prune -a
```

这个命令序列首先停止所有容器，然后删除所有已停止的容器，最后删除所有未被使用的镜像。这可以帮助你清理不再需要的资源。