티스토리 뷰

Docker

Docker Port Forwarding

이주성 2018. 10. 15. 15:52
docker_elasticsearch

docker port-forwarding

Dockerfile을 만들어서, elasticsearch를 설치하려고 한다. 그런데, 이상해게, 브라우저에서 http://localhost:9200을 호출하면 접속이 안된다. 왜 그럴까? Dockerfile은 아래와 같다.

docker 이미지 만들기

#vesrion  0.0.1
FROM ubuntu:16.04
MAINTAINER Gaurav Srivastava
#some_ important _library
RUN apt-get update && apt-get install wget build-essential gcc make -y
RUN apt-get install common-software-properties  -y
#Install_JAVA
RUN apt-get install default-jdk -y
RUN apt-get install openjdk-8-jre -y
RUN apt-get update
RUN wget -O - https://packages.elastic.co/GPG-KEY-elasticsearch | apt-key add -
RUN echo  "deb  http://packages.elastic.co/elasticsearch/2.x/debian stable main" | tee -a /etc/apt/sources.list.d/elasticsearch-2.x.list
RUN apt-get update &&  apt-get install elasticsearch -y
RUN apt-get install git -y
RUN apt-get install python2.7 -y
RUN apt-get install vim  -y
EXPOSE 9200

아래와 같이 docker image를 만들었다. run후 ps를 하면, 아래와 같이 9200포트가 port-forwarding을 잘되었다고 표시된다. 근데, 왜 안될까?

docker 이미지 빌드

# docker build –t  ubuntu-elasticsearch   .
# docker run -it -p 9200:9200 ubuntu-elasticsearch /bin/bash
# docker ps
ONTAINER ID        IMAGE                  COMMAND             CREATED             STATUS              PORTS                    NAMES
ff3f51cc45f1        ubuntu-elasticsearch   "/bin/bash"         40 seconds ago      Up 40 seconds       0.0.0.0:9200->9200/tcp   lucid_ritchie

Elasticsearch 실행

elasticsearch서버를 성공적으로 실행하고, host에서 http://localhost:9200해도 반응이 없다. 근데.. docker안에서는 curl이 잘 작동한다.

root# service elasticsearch start
* Starting Elasticsearch Server
root# curl http://localhost:9200
{
 "name" : "Tech-Blog",
 "cluster_name" : "linux-point- development ",
  "cluster_uuid" : "huIY_z9fQnWhdUiQrqfyLA",
   "version" : {
     "number" : "2.4.5",
     "build_hash" : "19c13d0",
     "build_date" : "2017-07-18T20:44:24.823Z",
     "build_snapshot" : false,
     "lucene_version" : "6.6.0"
 },
  "tagline" : "You Know, for Search"
}

해결법

원인은 0.0.0.0에 있었다. ㅎㅎ docker ps를 다시 해보면, port가 0.0.0.0:9200->9200이라는 표시가 있다. 이 표시는 docker안에서 0.0.0.0주소로 실행된 녀석만 port-forwarding해준다는 말이다. 지금 elaticsearch는 localhost(127.0.0.1) IP주소로 실행중이라서 안되는 것이다.

# docker ps
ONTAINER ID        IMAGE                  COMMAND             CREATED             STATUS              PORTS                    NAMES
ff3f51cc45f1        ubuntu-elasticsearch   "/bin/bash"         40 seconds ago      Up 40 seconds       0.0.0.0:9200->9200/tcp   lucid_ritchie

그럼 elasticsearch를 0.0.0.0주소로 실행해 보자. 환경설정파일의 bind_host=0.0.0.0으로 수정해보자. 그럼 잘될것 이다.

root# vi /etc/elasticsearch/elasticsearch.yml
# -------------- Network -------------------
# Set the bind address to a specific IP (IPv4 or IPv6):
network.bind_host: 0.0.0.0

docker_elasticsearch.md


댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함