Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- Kubernetes
- 비구조화 할당
- AWS
- 온프레미스
- Await
- grafana
- vgw
- 단축 평가
- null 병합 연산자
- transit gateway
- api gateway
- Proxy Resource
- 자바스크립트
- Service
- cognito
- DynamoDB
- prometheus
- docker
- Custom Resource
- JavaScript
- 구조분해 할당
- docker swarm
- elasticsearch
- Site-to-Site VPN
- optional chaining
- CloudFormation
- 옵셔널 체이닝
- On-Premise
- VPC
- Endpoints
Archives
- Today
- Total
만자의 개발일지
[Docker] 컨테이너 내부에서 Host로 접근하기 본문
다음과 같은 상황이라고 가정해봅시다.
현재 서버에 두개의 컨테이너가 실행되고 있습니다. 하나는 Node.js로 만들어진 웹 어플리케이션 컨테이너, 하나는 MySQL이 돌아가고있는 컨테이너입니다. 각각 다른 컨테이너에서 돌아가고 있고, Host는 동일한 상황입니다. 만약 Node.js 에서 내 서버에 MySQL 컨테이너로 요청을 보낼려고 할때 localhost를 통해 요청을 보낼려하면 당연히 요청이 보내지지 않을 것입니다. 이유는 Node.js 기준 localhost는 Host가 아닌 Node.js 가 실행되고 있는 컨테이너가 기준이 되기 때문입니다. 때문에 MySQL로 요청을 보내기 위해서는 다른 방법으로 Host에 접근해야합니다.
스택오버플로우 글에서 해답을 얻을 수 있었습니다.
윈도우나 맥의 경우 기본적으로 host.docker.internal 명령어로 컨테이너 내부에서 Host에 접근이 가능하다고 합니다.
Linux의 경우 컨테이너를 실행할 때 --add-host host.docker.internal:host-gateway 옵션을 지정해주면 컨테이너 내부에서 host.docker.internal 명령어를 사용할 수 있다고 합니다.
Host로 접근하기
예시를 위해 각자 다른 내용을 담은 Node.js 웹 어플리케이션 컨테이너를 두 개 띄워놨습니다.
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7d8fd10954dd node-app-v2 "docker-entrypoint.s…" 28 minutes ago Up 28 minutes 0.0.0.0:3001->3000/tcp node-web-app-v2
1d58dde99867 node-app "docker-entrypoint.s…" 30 minutes ago Up 30 minutes 0.0.0.0:3000->3000/tcp node-web-app
먼저 node-web-app 컨테이너로 접속해줍니다.
$ docker exec -it node-web-app /bin/bash
root@1d58dde99867:/app#
그 다음 현재 node-web-app 컨테이너 내부에서 node-web-app-v2 요청을 보내지는지 확인하기 위해 다음과 같이 명령어를 입력해주었습니다. Host로 요청이 잘 가는것을 확인할 수 있습니다.
$ curl host.docker.internal:3001
<h1>Hello Docker v2</h1>
공식 문서를 참고하시면 도움이 됩니다.
https://docs.docker.com/desktop/mac/networking/#i-cannot-ping-my-containers
'Docker' 카테고리의 다른 글
[Docker] 댕글링(dangling) 이미지란? (0) | 2022.02.24 |
---|---|
[Docker] 컨테이너로 이미지 만들기 (1) | 2022.02.24 |
[Docker] Docker Compose 사용하기 (1) | 2022.02.23 |
[Docker] Docker 이미지 ECR에 푸쉬하기 (0) | 2021.12.28 |
[Docker] 이미지 태그에 timestamp 찍기 (1) | 2021.12.28 |
Comments