Skip to content

Commit 386fb0f

Browse files
committed
[task/75] Part 3 : Share the applicatio 번역
1 parent c325501 commit 386fb0f

1 file changed

Lines changed: 109 additions & 0 deletions

File tree

Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
# Share the application
2+
3+
이제 이미지를 만들었으니 이미지를 공유할 수 있습니다. Docker 이미지를 공유하려면 Docker 레지스트리를 사용해야 합니다. 기본 레지스트리는 Docker Hub이며, 지금까지 사용한 모든 이미지는 여기에서 가져옵니다.
4+
5+
> **Docker ID**
6+
>
7+
> Docker ID를 사용하면 컨테이너 이미지를 위한 세계 최대의 라이브러리이자 커뮤니티인 Docker Hub에 접근할 수 있습니다. 아직 Docker ID가 없다면 무료로 [Docker ID](https://hub.docker.com/signup)를 만드세요.
8+
9+
## Create a repository
10+
11+
이미지를 푸시하려면 먼저 Docker Hub에 레포지토리를 생성해야 합니다.
12+
13+
1. [Docker Hub](https://hub.docker.com)[가입](https://hub.docker.com/signup) 또는 로그인하세요.
14+
2. **Create Repository** 버튼을 선택하세요.
15+
3. 레포지토리 이름으로 `getting-started`를 사용하세요. **Visibility****Public**으로 설정되어 있는지 확인하세요.
16+
4. **Create**를 선택하세요.
17+
18+
다음 이미지에서 Docker Hub의 Docker 명령어 예시를 볼 수 있습니다. 이 명령어는 해당 레포지토리에 푸시합니다.
19+
20+
![Docker command with push example](https://docs.docker.com/get-started/workshop/images/push-command.webp)
21+
22+
## Push the image
23+
24+
1. 명령줄에서 Docker Hub에서 보이는 `docker push` 명령어를 실행하세요. 참고로 명령어에는 "docker"가 아닌 여러분의 Docker ID가 포함되어 있을 것입니다. 예를 들어, `docker push YOUR-USER-NAME/getting-started` 형식입니다.
25+
26+
```bash
27+
$ docker push docker/getting-started
28+
The push refers to repository [docker.io/docker/getting-started]
29+
An image does not exist locally with the tag: docker/getting-started
30+
```
31+
32+
왜 실패했을까요? 푸시 명령어가 `docker/getting-started`라는 이름의 이미지를 찾았지만 찾지 못했습니다. `docker image ls`를 실행해도 해당 이미지가 나타나지 않을 것입니다.
33+
34+
이 문제를 해결하려면 이미 빌드한 기존 이미지에 다른 이름을 부여하기 위해 태그를 지정해야 합니다.
35+
36+
2. 다음 명령어를 사용하여 Docker Hub에 로그인하세요:
37+
38+
```
39+
docker login -u YOUR-USER-NAME
40+
```
41+
42+
3. `docker tag` 명령어를 사용하여 `getting-started` 이미지에 새 이름을 부여하세요. `YOUR-USER-NAME`을 여러분의 Docker ID로 바꾸세요.
43+
44+
```
45+
docker tag getting-started YOUR-USER-NAME/getting-started
46+
```
47+
48+
4. 이제 `docker push` 명령어를 다시 실행하세요. Docker Hub에서 값을 복사하는 경우 `tagname` 부분은 생략할 수 있습니다. 이미지 이름에 태그를 추가하지 않았기 때문입니다. 태그를 지정하지 않으면 Docker는 `latest`라는 태그를 사용합니다.
49+
```
50+
docker push YOUR-USER-NAME/getting-started
51+
```
52+
53+
## Run the image on a new instance
54+
55+
이제 이미지가 빌드되어 레지스트리에 푸시되었으므로, 이 컨테이너 이미지를 전혀 본 적이 없는 새로운 인스턴스에서 앱을 실행해 보세요. 이를 위해 Play with Docker를 사용할 것입니다.
56+
57+
> #### Note
58+
>
59+
> Play with Docker는 amd64 플랫폼을 사용합니다. Apple 실리콘이 탑재된 ARM 기반 Mac을 사용하는 경우, Play with Docker와 호환되도록 이미지를 다시 빌드하고 새 이미지를 레포지토리에 푸시해야 합니다.
60+
>
61+
> amd64 플랫폼용 이미지를 빌드하려면 `--platform` 플래그를 사용하세요.
62+
>
63+
> ```
64+
> docker build --platform linux/amd64 -t YOUR-USER-NAME/getting-started .
65+
> ```
66+
>
67+
> Docker buildx는 또한 다중 플랫폼 이미지 빌드를 지원합니다. 자세한 내용은 [다중 플랫폼 이미지](https://docs.docker.com/build/building/multi-platform/)를 참조하세요.
68+
69+
1. 브라우저에서 [Play with Docker](https://labs.play-with-docker.com/)를 엽니다.
70+
2. **Login**을 선택한 다음 드롭다운 목록에서 **docker**를 선택합니다.
71+
3. Docker Hub 계정으로 로그인한 다음 **Start**를 선택합니다.
72+
4. 왼쪽 사이드바에서 **ADD NEW INSTANCE** 옵션을 선택합니다. 보이지 않으면 브라우저를 조금 넓게 만드세요. 몇 초 후 브라우저에 터미널 창이 열립니다.
73+
74+
![Play with Docker add new instance](https://docs.docker.com/get-started/workshop/images/pwd-add-new-instance.webp)
75+
76+
5. 터미널에서 방금 푸시한 앱을 시작하세요.
77+
78+
```bash
79+
$ docker run -dp 0.0.0.0:3000:3000 YOUR-USER-NAME/getting-started
80+
```
81+
82+
이미지가 다운로드되고 결국 시작되는 것이 보일 것입니다.
83+
84+
> #### Tip
85+
>
86+
> 이 명령은 포트 매핑을 다른 IP 주소에 바인딩한다는 것을 알아차렸을 것입니다. 이전 `docker run` 명령은 호스트에서 `127.0.0.1:3000`에 게시합니다. 이번에는, `0.0.0.0`을 사용하고 있습니다.
87+
>
88+
> `127.0.0.1`에 바인딩하면 컨테이너의 포트가 루프백 인터페이스에만 노출됩니다. 그러나 `0.0.0.0`에 바인딩하면 호스트의 모든 인터페이스에서 컨테이너의 포트가 노출되어 외부 세계에서 접근할 수 있게 됩니다.
89+
>
90+
> 포트 매핑이 작동하는 방식에 대한 자세한 내용은 [네트워킹](https://docs.docker.com/engine/network/#published-ports)을 참조하세요.
91+
92+
6. 나타나면 3000 배지를 선택합니다.
93+
3000 배지가 나타나지 않으면 **Open Port**를 선택하고 `3000`을 지정할 수 있습니다.
94+
95+
## Summary
96+
97+
이 섹션에서는 레지스트리에 이미지를 푸시하여 공유하는 방법을 배웠습니다. 그런 다음 완전히 새로운 인스턴스로 이동하여 방금 푸시한 이미지를 실행할 수 있었습니다. 이는 CI 파이프라인에서 매우 일반적인 패턴입니다. 파이프라인이 이미지를 생성하고 레지스트리에 푸시한 다음 프로덕션 환경에서 최신 버전의 이미지를 사용할 수 있습니다.
98+
99+
관련 정보 :
100+
101+
- [docker CLI reference](https://docs.docker.com/reference/cli/docker/)
102+
- [Multi-platform images](https://docs.docker.com/build/building/multi-platform/)
103+
- [Docker Hub overview](https://docs.docker.com/docker-hub/)
104+
105+
## Next steps
106+
107+
다음 섹션에서는 컨테이너화된 애플리케이션에서 데이터를 유지하는 방법을 배우게 됩니다.
108+
109+
[Persist the DB](/#/get-started/workshop/05_persisting_data)

0 commit comments

Comments
 (0)