在Docker上连接erlang节点

我有两个docker图片包含一个释放的elixir应用程序。
我在我的本地机器上运行这两个docker。
我试图连接两个节点。
我如何在已命名的节点上运行已发布的应用程序?
或者 – 还有其他方法可以做到吗?

这是你如何做,而不是docker-compose的Erlang节点。

1.创buildnetworking

 docker network create example 

2.启动docker集装箱

1号航站楼

 $ docker run --rm -it --name bar -h bar --net example erlang:19.3 /bin/bash root@bar:/# erl -sname bar -setcookie example Erlang/OTP 19 [erts-8.3.5.1] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:10] [hipe] [kernel-poll:false] Eshell V8.3.5.1 (abort with ^G) (bar@bar)1> 

2号航站楼

 docker run --rm -it --name foo -h foo --net example erlang:19.3 /bin/bash root@foo:/# erl -sname foo -setcookie example Erlang/OTP 19 [erts-8.3.5.1] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:10] [hipe] [kernel-poll:false] Eshell V8.3.5.1 (abort with ^G) (foo@foo)1> 

3.检查连接性

1号航站楼

 (foo@foo)1> net_adm:ping(bar@bar). pong 

2号航站楼

 (bar@bar)1> net_adm:ping(foo@foo). pong 

获取在Docker容器上运行的版本的远程shell

1.在两个Docker容器之一中启动一个bash shell

 docker exec -it foo /bin/bash 

其中foo是docker集装箱的名称。

2.启动远程shell

./rel/your_app/bin/your_app console

我假设你知道容器内释放的path。

使用docker-compose 。

像这样的东西:

泊坞窗,compose.yml:

 version: "3" services: elixir1: image: image-name #(other configs here, like ports, volumes) elixir2: image: image-name #(other configs here, like ports, volumes) 

然后,你可以指出DNS elixir1elixir2中的名字。

docker run命令replace为:

 docker-compose up