안녕하세요. 오늘은 윈도우 데스크톱에 구축한 WSL2 서버에 elasticsearch 단일 클러스터 노드를 간단하게 동작시켜보겠습니다.
도커 이미지란? 이미지는 컨테이너를 생성할 때 필요한 요소이며, VM을 생성할 때 사용하는 iso 파일이라고 생각하시면 됩니다. 또한, 이미지는 컨테이너를 생성하고 실행할 때 읽기 전용으로 사용된다.
결론적으로, 다양한 이미지를 통해서 컨테이너를 생성하면 해당 이미지의 목적에 맞는 파일이 들어있는 파일 시스템과 격리된 시스템 자원 및 네트워크를 사용할 수 있는 독립된 공간이 생성됩니다.
아래의 명령어들은 서버에서 해당 명령어를 통해서 현재 존재하는 컨테이너 또는 이미지를 확인할 수 있습니다.
#현재 존재하는 전체 컨테이너 확인하기
docker ps -a
#현재 동작하고 있는 컨테이셔
docker ps
#현재 가지고 있는 이미지
#docker image ls
elasticsearch version이 7.12.1인 컨테이너 이미지 도커 저장소로부터 들고 오기.
#아래의 명령어를 통해서 elasticsearch7.12.1 이미지 불러오기
root@:/home/testuser# docker pull elasticsearch:7.12.1
#이미지 확인했을 때 정상적으로 불러온 것을 확인
root@:/home/testuser# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
elasticsearch 7.12.1 41dc8ea0f139 6 months ago 851MB
실행될 컨테이너는 그냥 실행하면 외부와 정상적인 elasticsearch로 통신할 수 없습니다. 그래서 간단하게 docker 컨테이너를 외부와 통신될 수 있게 알아보겠습니다.
컨테이너는 VM과 마찬가지로 가상 IP 주소를 할당받습니다. 그렇기 때문에 외부와 컨테이너를 통신하기 위해서는 포트를 연결시켜줘야 합니다.
그래서 컨테이너를 생성할 때 -p 옵션을 추가하여 포트 정책을 추가해줍니다.
#컨테이너이름이 testElastic으로 세팅된 포트 9200과 9300을 열어둔컨테이너가 생성됩니다.
root@:/home/testuser# docker run -i -t --name testElastic -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.12.1
root@:/home/testuser# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
************* elasticsearch:7.12.1 "/bin/tini -- /usr/l…" 9 seconds ago Up 8 seconds 0.0.0.0:9200->9200/tcp, 0.0.0.0:9300->9300/tcp testElastic
#localhost와 본인 서버의 ip로도 정상작동되는 것을 확인 가능합니다.
root@:/home/testuser# curl -XGET localhost:9200/
{
"name" : "4daf5fafd4bb",
"cluster_name" : "docker-cluster",
"cluster_uuid" : "3********************",
"version" : {
"number" : "7.12.1",
"build_flavor" : "default",
"build_type" : "docker",
"build_hash" : "*****************************",
"build_date" : "2021-04-20T20:56:39.040728659Z",
"build_snapshot" : false,
"lucene_version" : "8.8.0",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
이렇게 단일 노드를 구축할 수 있습니다.
하지만!!! 해당 방법은 백그라운드 동작 방식이 아닙니다. 그래서 본인의 화면에서 ctrl + c 누르거나 ctrl + z를 누르게 된다면 elasticsearch node가 종료됩니다. 그렇기 때문에 다른 옵션을 줘야 합니다.
root@:/home/testuser# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4daf5fafd4bb elasticsearch:7.12.1 "/bin/tini -- /usr/l…" 5 minutes ago Exited (130) 13 seconds ago testElastic
root@:/home/testuser# docker rm testElastic
testElastic
root@:/home/testuser#
#아래와 같은 방식으로 진행하면 컨테이너가 백그라운드 방식으로 진행됩니다.
root@:/home/testuser# docker run -d --name testElastic -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.12.1
#위의 명령어를 실행하면 컨테이너아이디만 나오고 별다른 로그가 없습니다.
#또한, 실행중인 컨테이너를 중지하고 싶을 때는 아래의 명령어를 치면됩니다.
root@:/home/testuser# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
528ac73e0c97 elasticsearch:7.12.1 "/bin/tini -- /usr/l…" 2 minutes ago Up 2 minutes 0.0.0.0:9200->9200/tcp, 0.0.0.0:9300->9300/tcp testElastic
root@:/home/testuser# docker stop testElastic
testElastic
root@:/home/testuser# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
'Infra > Docker' 카테고리의 다른 글
[Docker] Uninstall Docker on Ubuntu (0) | 2021.08.17 |
---|---|
[Docker] Install Docker on Ubuntu (0) | 2021.08.16 |
[Docker] Docker의 기본적인 이론 (0) | 2021.08.15 |