# Docker란 무엇인가

Edgegap에서는 전 세계에 걸쳐 부하를 고르게 분산하기 위해 컨테이너를 사용합니다. 게임이 몇 밀리초 안에 시작되어야 하므로, 컨테이너는 속도를 염두에 두고 그에 맞게 구축되어야 합니다. 이제 도커 이미지, 즉 컨테이너라고도 불리는 것을 만드는 방법을 안내해 드리겠습니다.

{% hint style="info" %}
컨테이너를 빠르게 익히고 싶다면, 우리는 다음을 강력히 추천합니다 [이 짧은 동영상](https://www.youtube.com/watch?v=J0NuOlA2xDc\&ab_channel=Coderized).
{% endhint %}

<figure><img src="/files/b9696a06a90b9b75c719b628fb11388fe16c9d42" alt=""><figcaption></figcaption></figure>

### **Docker란 무엇인가요?**

* Docker는 OS 수준 가상화를 가능하게 하는 PaaS(서비스형 플랫폼)입니다.

### **Docker Run 명령이란 무엇인가요?**

* docker run 명령은 이미지로부터 컨테이너를 생성하여 Docker 데스크톱 엔진이 해당 컨테이너를 실행할 수 있게 해줍니다.

### **해보세요**

먼저 첫 번째 컨테이너를 만들기 위해 컴퓨터에 필요한 도구를 추가하는 것부터 시작하겠습니다.

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 엔진에서 실행 중인 항목을 로컬로 확인하려면 다음을 입력해야 합니다.

```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
```


---

# 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/docs.edgegap.com-ko/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.
