ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

erlang的一次docker部署尝试

2022-08-31 15:00:54  阅读:175  来源: 互联网

标签:尝试 容器 md ## erl docker erlang


背景

最近需要在arm64和x86平台上,多个系统版本上部署,被环境问题折磨的焦头烂额。因为erlang本身是基于C语言的,基于不同的gcc环境编译的包不能很好的运行。docker用于解决开发生产环境一致性的问题,所有萌发用docker来解决erlang部署环境问题。

docker基础命令

## 获取镜像 erlang
docker pull erlang:20.3

## 查看所有镜像
docker images

## 创建docker容器
docker run -it -p 8124:8124 erlang:20.3 bash

## 退出容器
exit

## 查看容器列表
docker ps -a  或者 docker container ls

## 宿主到容器复制
docker cp /host/path  <containerId>:/file/path/within/container

## 容器到宿主复制
docker cp <containerId>:/file/path/within/container  /host/path

## 启动容器
docker start <containerId> 或者 docker container start <containerId>

## 停止容器
docker stop <containerId> 或者 docker container stop <containerId>

## 重启容器
docker restart <containerId> 或者 docker container restart <containerId>

## attach容器
docker attach <containerId>

## attach容器后退出
ctrl+p,ctrl+q

## 删除容器
docker rm -f <containerId>

## 容器内执行
docker exec -it [name] /bin/bash

容器内运行erlang

  • 存在问题

    • 只使用docker容器内的环境,运行程序及数据都在宿主机器,因此需要容器和宿主机器进行目录映射;

    • erlang节点间通讯,除4369端口外,其他为动态端口,docker容器与宿主默认网络隔离,需要使用宿主网络

    • docker容器启动后关闭问题,需运行不停止的命令

  • docker run参数调整

## 名称参数,设置容器名称为erl_test
--name erl_test

## 网络参数,需共享宿主网络
--net=host

## 目录挂载
--mount type=bind,source=/host/path/erl/release,target=/container/path/erl/release

## 后台执行
-d

## 重启规则
--restart=always

docker 运行erlang

  • erlang服务说明
## 服务名称
erl_md

## 打包工具
rebar3

## 服务后台启动 无返回结果,随即命令结束
bin/erl_md start

## 后台服务停止
bin/erl_md stop

## 服务console模式启动
bin/erl_md console

## 服务console模式停止
Ctrl+c
  • 启动erlang容器
## erlang服务宿主目录  /root/erl_server/erl_md
## erlang服务容器目录 /erl_server/erl_md
## erlang服务名称 erl_test
## 镜像 erlang:20.3
docker run --name erl_test --restart=always --net=host --mount type=bind,source=/root/erl_server/erl_md,target=/erl_server/erl_md -itd erlang:20.3 /erl_server/erl_md/bin/erl_md console

  • 实现效果

    • 多个erlang节点可正常交互

    • erlang服务端口可正常访问

    • 可实现开机自启

标签:尝试,容器,md,##,erl,docker,erlang
来源: https://www.cnblogs.com/dacode/p/16643109.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有