基於Docker執行consul

consul的映象已經做好,並提交到docker hub上,Dockerfile如下:

FROM ubuntu
MAINTAINER chen "[email protected]"
ENV REFRESHED_AT 2017-10-10
RUN apt-get -qq update
RUN apt-get -qq install curl unzip
ADD https://releases.hashicorp.com/consul/0.6.4/consul_0.6.4_linux_amd64.zip 
/tmp/consul.zip
RUN cd /usr/sbin && unzip /tmp/consul.zip && chmod  x /usr/sbin/consul && rm /tmp/consul.zip
RUN mkdir -p /webui/
ADD https://releases.hashicorp.com/consul/0.6.4/consul_0.6.4_web_ui.zip 
/webui/webui.zip
RUN cd /webui && unzip webui.zip && rm webui.zip
ADD consul.json /config/
EXPOSE 53/udp 8300 8301 8301/udp 8302 8302/udp 8400 8500
VOLUME ["/data"]
ENTRYPOINT [ "/usr/sbin/consul", "agent", "-config-dir=/config" ]
CMD []

config檔案如下:

{
"data_dir": "/data",
"ui_dir": "/webui",
"client_addr": "0.0.0.0",
"ports": {
"dns": 53
},
"recursor": "8.8.8.8"
}

構建映象後,把映象推到Docker Hub上。

拉取consul映象並執行

現在基礎映象已經構建好,從Docker Hub上拉取consul的映象

docker pull chenpeihai/consul

拉取映象完成後,執行以下命令就可以在外網訪問了。

 docker run -p 8500:8500 -p 53:53/udp -h node1 chenpeihai/consul -server -bootstrap

現在來訪問ECS的公網IP,看看是否執行起來了,這個多說一句,如果用阿里雲ECS,則需要在安全組裡面設定開通8500埠,騰訊雲則不用。
這裡寫圖片描述
這樣一個consul例項就執行起來了。