在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 elixir1
和elixir2
中的名字。
将docker run
命令replace为:
docker-compose up