# 什么是 Docker

在 Edgegap，我们使用容器将负载均匀分布到全球。我们需要在毫秒级别内让你的游戏启动，因此容器需要以速度为设计目标并据此构建。我们将带你一步步创建一个 Docker 镜像（也称为容器）。

{% hint style="info" %}
如果你想快速熟悉容器，我们强烈推荐 [这个快速视频](https://www.youtube.com/watch?v=J0NuOlA2xDc\&ab_channel=Coderized).
{% endhint %}

<figure><img src="https://3334189208-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FsR0dHSFv9ymoC0DO5G8J%2Fuploads%2Fgit-blob-e6111f686dccc8bebc29f2f10fe2ce093f9c2b9c%2Fdocker.png?alt=media" alt=""><figcaption></figcaption></figure>

### **如果您不熟悉 Docker 或容器，可以通过查看了解更多**

* Docker 是一种 PaaS（平台即服务），它允许操作系统级别的虚拟化。

### **什么是 Docker run 命令？**

* docker run 命令允许从镜像创建容器，以便 Docker 桌面引擎能够运行该容器。

### **试一试**

让我们先在你的电脑上添加创建第一个容器所需的工具。

你可以按照 Docker 桌面上说明的安装流程进行。

如果你正在运行 [Windows 10 专业版](https://docs.docker.com/docker-for-windows/install/) 如果你正在运行 [Windows 10 家庭版](https://docs.docker.com/docker-for-windows/install-windows-home/) 如果你正在运行 [macOS](https://docs.docker.com/docker-for-mac/install/)

现在你已经在本地机器上运行了 Docker，我们可以从一个简单的 hello world 开始。

```sh
docker run -d -p 80:80 --name speedtest edgegap/speedtest-edge
```

你可以打开命令提示符并输入上面的命令。

这些步骤将自动进行。

1. 从 Edgegap 仓库下载容器（仅第一次）
2. 启动容器
3. 名称将是 speedtest（--name）
4. 要公开你的容器，需要在 docker run 命令中指定。在此示例中，我们将在外部公开端口 80，并指向容器中公开的 80（-p）
5. 你可以通过在 Web 浏览器中访问来尝试 [http://localhost](http://localhost/)
6. 好了，你已经运行了你的第一个容器。

现在容器正在运行，你可以与之交互。我们将在下一节重启容器、停止容器并查看其网络。首先，你需要在本地查看 docker 引擎中正在运行的内容，在命令行输入。

```sh
docker ps
```

你应该会看到类似的内容。

```
CONTAINER ID        IMAGE                    COMMAND                  CREATED             STATUS              PORTS                NAMES
dbf4d3734111        edgegap/speedtest-edge   "docker-php-entrypoi…"   29 minutes ago      Up 29 minutes       0.0.0.0:80->80/tcp   speedtest
```

你可以直观地看到在你电脑上运行的容器信息；在此列表中可以同时运行多个容器。

`docker ps` 是一个简单的命令；你会大量使用它。

假设你需要了解正在运行的容器的更多信息。你可以通过运行以下命令请求 docker 引擎提供关于容器的所有详细信息：

```sh
docker container inspect speedtest
```

如果你希望查看 docker 引擎创建的内部网络，可以运行以下命令。

```sh
docker network ls
```

你会得到类似如下的结果：

```
NETWORK ID          NAME                DRIVER              SCOPE
67b24038b9ca        bridge              bridge              local
6f7fe43a489d        host                host                local
3d80cdb86a7e        none                null                local
```

如果你想深入了解网络配置，可以运行以下命令：

```sh
docker network inspect 67b24038b9ca
# 其中 678b24038b9ca 是连接到你容器的网络
```

停止 Docker

现在你已启动容器，可以使用以下命令将其停止：

```sh
docker container stop speedtest
```
