1

문건희·2025년 8월 30일

## docker run 명령어 상세 설명

우선 전체 명령어는 다음과 같습니다.

docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e "xpack.security.enabled=false" docker.elastic.co/elasticsearch/elasticsearch:8.10.2

이 명령어를 구성 요소별로 나누어 보면 이렇습니다.

  • docker run

    • 가장 기본이 되는 명령어로, Docker에게 "새로운 컨테이너를 하나 만들고 실행해 줘"라고 지시하는 역할을 합니다.
  • -d 또는 --detach

    • **"Detached mode"**의 약자입니다. 이 옵션을 사용하면 컨테이너가 백그라운드에서 실행됩니다. 만약 이 옵션을 빼면, 현재 사용 중인 터미널 창이 컨테이너의 로그를 계속 출력하게 되고, 터미널을 닫으면 컨테이너도 함께 종료됩니다. 개발 서버처럼 계속 켜둬야 하는 경우 필수적인 옵션입니다.
  • --name elasticsearch

    • 실행되는 컨테이너에 "elasticsearch"라는 고유한 이름을 붙여줍니다. 이름을 지정해두면 나중에 docker stop elasticsearchdocker logs elasticsearch처럼 이름으로 컨테이너를 제어하기가 매우 편리해집니다.
  • -p 9200:9200

    • "Port forwarding" (포트 포워딩) 설정입니다. 콜론(:)을 기준으로 **[내 컴퓨터의 포트]:[컨테이너 내부의 포트]**를 의미합니다.
    • Elasticsearch 컨테이너는 기본적으로 내부 9200번 포트를 사용해 외부와 통신(REST API)합니다. 이 옵션은 내 컴퓨터(호스트 PC)의 9200번 포트로 들어오는 요청을 컨테이너 내부의 9200번 포트로 전달하라는 의미입니다. 그래서 우리가 http://localhost:9200으로 접속할 수 있는 것입니다.
  • -p 9300:9300

    • 위와 같은 포트 포워딩 설정입니다. 9300번 포트는 Elasticsearch 노드(컴퓨터)들끼리 서로 통신할 때 사용하는 내부 통신용 포트입니다. 지금은 노드가 하나뿐이라 사용하지는 않지만, 표준 설정에 포함되어 있습니다.
  • -e "..." 또는 --env "..."

    • **"Environment variable" (환경 변수)**를 설정하는 옵션입니다. 컨테이너 내부에서 실행되는 애플리케이션(여기서는 Elasticsearch)의 설정을 Docker 명령어로 직접 지정할 수 있게 해줍니다.
    • "discovery.type=single-node": Elasticsearch에게 "너는 다른 노드를 찾을 필요 없이 혼자(단일 노드) 실행될 거야"라고 알려주는 설정입니다. 이걸 설정하지 않으면 Elasticsearch가 클러스터를 구성하기 위해 다른 노드를 찾으려고 시도하다가 오류를 낼 수 있습니다.
    • "xpack.security.enabled=false": Elasticsearch 8.x 버전부터 기본으로 활성화된 보안 기능(사용자 인증 등)을 비활성화하는 설정입니다. 개발 환경에서는 보안 기능이 없어야 번거로운 인증 절차 없이 바로 접속하고 테스트할 수 있어 편리합니다.
  • docker.elastic.co/elasticsearch/elasticsearch:8.10.2

    • 실행할 Docker 이미지의 전체 이름입니다.
    • docker.elastic.co/elasticsearch/elasticsearch는 이미지의 이름이고, :8.10.2는 **버전 태그(tag)**입니다. 버전을 명시해주면 항상 동일한 환경에서 컨테이너를 실행할 수 있어 안정적인 개발이 가능합니다.

0개의 댓글