Closed namsic closed 4 months ago
위 명령을 아래와 같이 변경해도 컨테이너 외부에서 동일한 방법으로 접근할 수 있을 것입니다.
arcus-memcached 프로세스에게 컨테이너 내에서 어떤 포트를 사용하라고 명시하지 않아도 11212 포트를 사용하나요?
@uhm0311 arcus-memcached 프로세스에게 컨테이너 내에서 어떤 포트를 사용하라고 명시하지 않아도 11212 포트를 사용하나요?
잘 이해하지 못했습니다. 아래 명령 기준 컨테이너 내부(프로세스)에서는 11212 포트를 사용하지 않습니다.
docker run -p 11212:11211 jam2in/arcus-memcached -v
위와 같이 구동하면 arcus-memcached process는 별도의 -p
option이 없으므로 기본값인 11211 port로 listen할 것이고,
docker run
의 11212:11211
option에 의해, host의 11212 port가 컨테이너 내부의 11211 port로 매핑되는 것 입니다.
commit message 오타 수정했습니다.
old: INTERNAL: Add EXEPOSE to Dockerfile
new: INTERNAL: Add `EXPOSE` to Dockerfile
왼쪽이 호스트 포트였군요.
Docker image를 실행하기 위해서는 대략 아래와 같은 명령을 사용하는데요,
arcus-memcached image를 사용하기 위해서는 아래와 같은 명령을 수행할 것입니다.
또는 아래와 같이 원하는 host port를 컨테이너의 11211번 port로 연결할 수도 있습니다.
그런데, arcus-memcached에 익숙하지 않은 사용자는 컨테이너의 11211 포트를 host port와 연결해야 한다는 사실을 알 수가 없습니다.
⌨️ What I did
EXPOSE
port를 추가하여 일종의 hint 역할을 하도록 합니다.EXPOSE
는 그 자체로 아무런 동작도 하지 않으며, 11211 port를 사용하고 있음을 알리는 역할을 합니다.-P
option을 사용하면 사용자가 port를 명시적으로 연결하지 않아도 아래와 같이 host의 임의 port로 exepose port를 매핑하는 형태로 구동할 수 있습니다.🤔 기타
CMD
에-p 11211
option을 지정했습니다. 그 이후 #728 에서CMD
설정 자체가 제거되었고, 현재는 Docker image에 port 관련 정보가 드러나지 않습니다.-p
option을 설정하는 것도 자연스럽지 않은 부분이 있었는데, 컨테이너 내부에서 11211 port는 충돌 걱정 없이 고정으로 사용 가능한 port 입니다.위 명령을 아래와 같이 변경해도 컨테이너 외부에서 동일한 방법으로 접근할 수 있을 것입니다.
즉, 일반적인 경우에는 host port를 설정하기 위해 memcached의
-p
option을 지정하지 않아도 됩니다. (zookeeper와 연동은 조금 특수한 상황으로,-p
option을 함께 설정해야 합니다.)