# Что такое Docker

В Edgegap мы работаем с контейнерами, чтобы равномерно распределять нагрузку по всему миру. Нам нужно, чтобы ваша игра запускалась за миллисекунды, поэтому при создании контейнеров нужно учитывать скорость и соответствующим образом строить архитектуру. Мы проведём вас через создание Docker-образа, также известного как контейнер.

{% hint style="info" %}
Если вы хотите быстро познакомиться с контейнерами, мы настоятельно рекомендуем [это короткое видео](https://www.youtube.com/watch?v=J0NuOlA2xDc\&ab_channel=Coderized).
{% endhint %}

<figure><img src="/files/9ef293a16f291f539a7c6505e9fb01b8ef02d316" alt=""><figcaption></figcaption></figure>

### **Что такое Docker?**

* Docker — это PaaS (платформа как услуга), которая позволяет виртуализацию на уровне ОС.

### **Что такое команда Docker Run?**

* Команда docker run позволяет создать контейнер из образа, чтобы движок Docker Desktop мог запустить контейнер.

### **Попробуйте**

Давайте начнём с добавления инструментов, которые понадобятся вам на компьютере для создания вашего первого контейнера.

Вы можете следовать процедуре установки, как указано в Docker Desktop.

если вы используете [Windows 10 Pro](https://docs.docker.com/docker-for-windows/install/) Если вы используете [Windows 10 Home Edition](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. Вы можете проверить это, открыв веб-браузер и перейдя по адресу [http://localhost](http://localhost/)
6. Вот и всё, вы запустили свой первый контейнер.

Теперь, когда ваш контейнер запущен, вы можете взаимодействовать с ним. В следующем разделе мы перезапустим контейнер, остановим его и посмотрим его сеть. Сначала вам нужно локально увидеть, что запущено на вашем docker-engine; в командной строке введите

```sh
docker ps
```

Вы должны увидеть что-то похожее.

```
CONTAINER ID        IMAGE                    COMMAND                  CREATED             STATUS              PORTS                NAMES
dbf4d3734111        edgegap/speedtest-edge   "docker-php-entrypoi…"   29 минут назад      Работает 29 минут    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
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.edgegap.com/ru/docs/tools-and-integrations/container/docker.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
