도커는 리모트 API가 잘되어 있습니다. 이를 이용하면 원격에서 도커 호스트를 관리할수 있는데요. 컨테이너를 만들때 포트를 호스트 포트와 바인딩하는게 좀 헷갈려서 정리해봤습니다.


3306포트를 기본으로 하는 MySQL을 컨테이너로 실행한다고 했을때

컨테이너에서 실행되는 MySQL의 3306포트를 호스트의 49153 포트로 바인딩해보겠습니다.


컨테이너를 생성할때 ExposedPorts에 아래와 같이 오픈할 포트를 명시합니다.

POST /containers/create
{
"Image": mysql,
"ExposedPorts": {
"3306/tcp": {}
}
}

컨테이너가 생성되었다면 이제 컨테이너를 실행할 차례입니다.

만들어진 컨테이어 ID와 바인딩 시킬 호스트의 포트를 아래처럼 PortBindings 키값으로 명시해줍니다.

POST /containers/(id)/start
{
"id": id,
"PortBindings": {
"container_port/tcp": [
{
"HostIp": "127.0.0.1", // Strings, not numbers here
"HostPort": "49153"
}
]
}
}

그러면 아래처럼 3306포트와 49153 포트가 바인딩된 컨테이너가 만들어집니다.
043d2366695c mysql:latest "/entrypoint.sh mysq 12 seconds ago

Up 11 seconds 0.0.0.0:49153->3306/tcp mysql_myhome

간단하지만 Docker Remote API 스펙에 자세하게 나오지 않은 부분이라 정리해봤습니다.


참고자료

https://medium.com/@kevanahlquist/docker-remote-api-port-bindings-example-b55bc5194e20

https://docs.docker.com/reference/api/docker_remote_api/



저작자 표시 비영리 변경 금지
신고

'Work & Study > TechTalk' 카테고리의 다른 글

사이드킥 모델(Sidekick model)  (0) 2015.03.31
VirtualBox 네트워크 이해  (0) 2015.03.29
Docker 리모트 API로 포트 바인딩  (0) 2015.03.17
Docke 발표자료  (0) 2015.03.14
Panamax 설치  (0) 2015.03.03
도커 이미지 크기를 줄이는 방법  (0) 2015.02.12