> [!info] 章节导航
> [[docker学习路径|Docker 学习索引]] · [[02-核心概念与 Docker Objects|上一章]] · [[04-运行与管理容器|下一章]]

## 3. 快速上手：运行第一个容器

### 3.1 Docker Desktop

1. 打开 Docker Desktop 并选择左侧边栏上的**容器**字段。
2. 您可以查看有关容器的信息，包括日志和文件，甚至可以通过选择 **“Exec”** 选项卡来访问 shell。
3. 选择 **“检查”** 字段以获取有关容器的详细信息。您可以执行各种操作，例如暂停、恢复、启动或停止容器，或者浏览 **“日志** ”、 **“绑定挂载”** 、 **“执行”** 、 **“文件”** 和 **“统计信息”** 选项卡。

Docker Desktop 通过简化不同环境中应用程序的设置、配置和兼容性，简化了开发人员的容器管理，从而解决了环境不一致和部署挑战的痛点。

### 3.2 CLI 一般流程

#### 运行第一个容器

**`docker run` 命令示例**

打开 CLI 终端并使用以下方式启动容器 [`docker run`](https://docs.docker.com/reference/cli/docker/container/run/) 命令：



```console
 docker run -d -p 8080:80 docker/welcome-to-docker
```

此命令的输出是完整的容器 ID。

您可以使用以下命令验证容器是否已启动并正在运行 [`docker ps`](https://docs.docker.com/reference/cli/docker/container/ls/) 命令：

```console
docker ps
```

此容器运行一个用于显示简单网站的 Web 服务器。在处理更复杂的项目时，您需要在不同的容器中运行不同的部分。例如， `frontend` 、 `backend` 和 `database` 分别使用不同的容器。启动容器时，您会将容器的一个端口暴露到您的计算机上。您可以将其视为创建配置，以便您能够通过容器的隔离环境进行连接。

-----

有了项目后，使用 Docker Compose 启动开发环境。

要使用 CLI 启动项目，请运行以下命令：

```console
 docker compose watch
```

您将看到一个输出，其中显示了容器镜像被拉取、容器启动等操作。

#### 停止容器

1. 运行 `docker ps` 获取容器的 ID

2. 
   向 [`docker stop`](https://docs.docker.com/reference/cli/docker/container/stop/) 命令：

   ```console
   docker stop <the-container-id>
   ```

通过 ID 引用容器时，无需提供完整 ID。只需提供足够的 ID 信息以使其唯一即可。例如，可以通过运行以下命令来停止上一个容器：

```console
docker stop a1f
```

#### 搜索并拉取镜像

1. 打开终端并使用搜索图像 [`docker search`](https://docs.docker.com/reference/cli/docker/search/) 命令：

   ```console
   docker search docker/welcome-to-docker
   ```
   
   您将看到如下输出：

   ```console
   NAME                       DESCRIPTION                                     STARS     OFFICIAL
   docker/welcome-to-docker   Docker image for new users getting started w…   20
   ```
   
   此输出显示有关 Docker Hub 上可用的相关图像的信息。
   
2. 使用 [`docker pull`](https://docs.docker.com/reference/cli/docker/image/pull/) 命令。

   ```console
   docker pull docker/welcome-to-docker
   ```

每一行代表镜像下载的不同层。请记住，每一层都是一组文件系统更改，并提供镜像的功能。

以下命令运行一个 `ubuntu` 容器，以交互方式连接到本地命令行会话，并运行 `/bin/bash` 。

```console
 docker run -i -t ubuntu /bin/bash
```


运行此命令时，会发生以下情况（假设您使用默认注册表配置）：

1. 
   如果您本地没有 `ubuntu` 镜像，Docker 将从您配置的注册表中提取它，就像您手动运行 `docker pull ubuntu` 一样。
2. Docker 创建一个新容器，就像运行 `docker container create` 手动命令。
3. 
   Docker 为容器分配一个可读写的文件系统，作为其最后一层。这允许正在运行的容器在其本地文件系统中创建或修改文件和目录。
4. 由于您未指定任何网络选项，Docker 会创建一个网络接口，将容器连接到默认网络。这包括为容器分配 IP 地址。默认情况下，容器可以使用主机的网络连接连接到外部网络。
5. Docker 启动容器并执行 `/bin/bash` 。由于容器以交互方式运行并连接到终端（由于 `-i` 和 `-t` 标志），您可以使用键盘提供输入，同时 Docker 将输出记录到 你的终端。
6. 当您运行 `exit` 终止 `/bin/bash` 命令时，容器会停止但不会被移除。您可以重新启动它，也可以将其移除。



#### 查看镜像与分层

1. 使用以下方式列出您下载的图像 [`docker image ls`](https://docs.docker.com/reference/cli/docker/image/ls/) 命令：

​	`docker image ls`

2. 使用以下方式列出图像的图层 [`docker image history`](https://docs.docker.com/reference/cli/docker/image/history/) 命令：

   ```console
   docker image history docker/welcome-to-docker
   ```

此输出显示所有图层、它们的大小以及用于创建图层的命令。

3. 如果您在命令中添加 `--no-trunc` 标志，您将看到完整的命令。请注意，由于输出采用表格格式，较长的命令会导致输出难以导航。



图像和图像索引是存储库中容器图像的基础。

- 图像索引（顶部）：指向多个特定于架构的图像（如 AMD 和 ARM）的图像，允许单个引用跨不同平台工作。
- 
  图像（底部）：包含特定架构和操作系统的实际配置和层的单个容器图像。
