naver / arcus-memcached

ARCUS memory cache server
https://github.com/naver/arcus
Apache License 2.0
70 stars 55 forks source link

INTERNAL: Add `EXPOSE` to Dockerfile #769

Closed namsic closed 4 months ago

namsic commented 4 months ago

Docker image를 실행하기 위해서는 대략 아래와 같은 명령을 사용하는데요,

docker run -p <host-port>:<container-port> <image-name>

arcus-memcached image를 사용하기 위해서는 아래와 같은 명령을 수행할 것입니다.

docker run -p 11211:11211 jam2in/arcus-memcached -v

또는 아래와 같이 원하는 host port를 컨테이너의 11211번 port로 연결할 수도 있습니다.

docker run -p 12345:11211 jam2in/arcus-memcached -v

그런데, arcus-memcached에 익숙하지 않은 사용자는 컨테이너의 11211 포트를 host port와 연결해야 한다는 사실을 알 수가 없습니다.

⌨️ What I did


🤔 기타

  1. 이전에는 arcus-memcached가 11211 port를 사용함을 알리기 위해 CMD-p 11211 option을 지정했습니다. 그 이후 #728 에서 CMD 설정 자체가 제거되었고, 현재는 Docker image에 port 관련 정보가 드러나지 않습니다.
  2. 사실 기존의 -p option을 설정하는 것도 자연스럽지 않은 부분이 있었는데, 컨테이너 내부에서 11211 port는 충돌 걱정 없이 고정으로 사용 가능한 port 입니다.
  3. port를 변경하는 이유는 컨테이너 외부(호스트 장비)에서 원하는 주소로 접근하기 위함인데, jam2in의 블로그 포스팅을 보면 아래와 같이 가이드하고 있습니다.
    docker run -p 12345:12345 jam2in/arcus-memcached -p 12345 -v

    위 명령을 아래와 같이 변경해도 컨테이너 외부에서 동일한 방법으로 접근할 수 있을 것입니다.

    docker run -p 12345:11211 jam2in/arcus-memcached -v

    즉, 일반적인 경우에는 host port를 설정하기 위해 memcached의 -p option을 지정하지 않아도 됩니다. (zookeeper와 연동은 조금 특수한 상황으로, -p option을 함께 설정해야 합니다.)

uhm0311 commented 4 months ago

위 명령을 아래와 같이 변경해도 컨테이너 외부에서 동일한 방법으로 접근할 수 있을 것입니다.

arcus-memcached 프로세스에게 컨테이너 내에서 어떤 포트를 사용하라고 명시하지 않아도 11212 포트를 사용하나요?

namsic commented 4 months ago

@uhm0311 arcus-memcached 프로세스에게 컨테이너 내에서 어떤 포트를 사용하라고 명시하지 않아도 11212 포트를 사용하나요?

잘 이해하지 못했습니다. 아래 명령 기준 컨테이너 내부(프로세스)에서는 11212 포트를 사용하지 않습니다.

docker run -p 11212:11211 jam2in/arcus-memcached -v

위와 같이 구동하면 arcus-memcached process는 별도의 -p option이 없으므로 기본값인 11211 port로 listen할 것이고,

docker run11212:11211 option에 의해, host의 11212 port가 컨테이너 내부의 11211 port로 매핑되는 것 입니다.

namsic commented 4 months ago

commit message 오타 수정했습니다.

old: INTERNAL: Add EXEPOSE to Dockerfile
new: INTERNAL: Add `EXPOSE` to Dockerfile
uhm0311 commented 4 months ago

왼쪽이 호스트 포트였군요.