본문 바로가기
개발/백엔드

[백엔드] Docker (3) - 컨테이너 실행

by 헤이즐넛 좋아하는 개발자 2024. 10. 7.

시작하기 전에

이번엔 Docker를 어떻게 사용해야 하는지 정리해보고자 한다. 출처는 저번과 동일하다.

출처: https://docs.docker.com/

 

개념은 아래 링크에서 확인할 수 있다 : Docker란?

 

[백엔드] Docker (1) - Docker란?

시작하기 전에오늘의집 회사에서 파트타임으로 일하면서 Docker를 사용해볼 기회가 생겼다.앞으로도 유용하게 사용할 개념이니 이번에 확실하게 정리해보고자 한다.출처: https://docs.docker.com/Docker

hazel-nut-library.tistory.com


핵심

  • 컨테이너의 포트(CONTAINER_PORT)를 호스트의 포트(HOST_PORT)에 노출하여, 호스트의 특정 포트(HOST_PORT)를 통해 컨테이너 내부의 서비스(예: 웹 서버)를 접근할 수 있게 만들 수 있다.

Publishing Ports

포트를 활용하면 각 component의 네트워크적 독립성을 부여할 수 있다. docker run과 같이 -p(--publish) 태그를 사용해 포트를 지정해줄 수 있다. 형식은 아래와 같다.

docker run -d -p HOST_PORT:CONTAINER_PORT my_image_name

 

  • HOST_PORT
    호스트의 포트로, 우리가 이 포트넘버를 통해 컨테이너 내부의 서비스에 접근할 수 있다.
  • CONTAINER_PORT
    컨테이너의 포트로, 컨테이너에서 어떤 포트의 서비스를 받아올 건지를 결정한다.
  • image_name
    실행하고 싶은 이미지의 이름 또는 nginx 같은 게 들어갈 수 있다.

예를 들면, 아래와 같이 되겠다.

docker run -d -p 8080:80 nginx

 

컨테이너의 포트 80에 해당하는 서비스 nginx를 호스트에서 포트 8080으로 접근할 수 있다.


Publishing to Ephemeral Ports

호스트 머신에서 어떤 포트로 발행할지 설정해주기 귀찮다면, 일시적인 포트를 설정할 수 있다.

docker run -p 80 nginx

컨테이너의 포트 80의 서비스 nginx가 호스트의 일시적인 포트로 연결된다.


실행 중인 컨테이너 확인

또한 실행 중인 컨테이너들의 정보를 확인할 수도 있다.

docker ps

이 명령어를 실행하면, 컨테이너의 정보와 함께 포트 정보가 나온다.

예를 들면, 위의 경우 컨테이너 안의 포트 80의 서비스가 호스트 머신의 54772 포트로 발행된 것이다.


Publishing All Ports

컨테이너의 모든 서비스를 각각 임의의 호스트의 포트로 연결해서 발행할 수도 있다.

docker run -P nginx