[关闭]
@khan-lau 2016-04-07T12:45:59.000000Z 字数 2447 阅读 5107

利用 Docker 搭建 Erlang 开发环境

列表项

Docker Erlang环境


Step 1: 安装或升级Mac OS版本Boot2Docker

  Docker1.3.2版本以上支持加速器,如果您没有安装Docker或者版本较旧,请安装或升级。
参考Boot2Docker安装文档(http://docs.docker.com/installation/mac/)。高速下载Boot2Docker(http://get.daocloud.io/#install-boot2docker)


Step2: 配置Docker加速器

  鉴于国内的网络环境, 要正常使用 docker, 额外配置源.
  去http://daocloud.io 注册账号 (daocloud 是 docker 官方认可的服务商)
  注册完成后进入https://dashboard.daocloud.io/, 点击加速器 按钮, 进入 https://dashboard.daocloud.io/mirror, 获得跟你账户相关的加速 url. http://用户id.m.daocloud.io

  请确认你的Boot2Docker已经启动,并执行

  1. boot2docker ssh
  2. sudo su
  3. echo "EXTRA_ARGS=\"--registry-mirror=http://用户id.m.daocloud.io\"" >> /var/lib/boot2docker/profile && exit
  4. exit
  5. boot2docker restart

  以上为 mac os x 配置, 其他系统配置请看服务提供商的帮助文档


Step3: 获取 Erlang 环境镜像

  打开boot2Docker
  在终端界面输入 :

  1.  docker search erlang

  搜索关键字为 erlang 的镜像. 执行完成后, 终端返回了一堆镜像列表:

  1. NAME DESCRIPTION STARS OFFICIAL AUTOMATED
  2. correl/erlang Erlang/OTP for Docker 9 [OK]
  3. nacyot/erlang-erlang 3 [OK]
  4. eproxus/erlang-base 2 [OK]
  5. zfbp/erlang 1 [OK]
  6. unbalancedparentheses/erlang Docker Image packaging for each erlang ver... 1 [OK]
  7. adie/erlang 1 [OK]
  8. nifty/erlang Base docker image for Erlang projects 0 [OK]

  我挑了其中correl/erlang这个镜像

  如果之前有未下载完成的镜像, 请先删除, 如果没有, 则忽略关于删除的部分. 这条指令是移除所有的容器和镜像

  1. docker kill $(docker ps -q) ; docker rm $(docker ps -a -q) ; docker rmi $(docker images -q -a)

  注:shell 中的 $() 和 `` 类似,会先执行这里面的内容,上面的脚本会出现如下 docker kill "pids" ; docker kill 在 docker 中用于停止容器,docker rm 删除容器, docker rmi 删除镜像
  
  退出时删除容器
  如果你仅仅想在一个容器中快速的运行一个命令,然后退出,并且不用担心容器状态,把 --rm 参数加入 run 命令后面,这将结束很多你保存了的容器,并且清理它们。

  当没有运行的容器或者是根本没有容器的时候,这只会提示一个警告信息。当你想尝试的时候,这就是个非常好的单行命令。如果你仅仅想删除所有的容器,你可以运行如下命令:

  1. docker kill $(docker ps -q) ; docker rm $(docker ps -a -q)

  以上所有内容都准备好之后, 从服务器 pull 下镜像

  1. docker pull correl/erlang

  使用了镜像源之后, 应该下载速度比较快, 下载完成后, 环境就算搭建完成了.
  
  

Step4: 验证环境

  验证镜像, hello world, 首先可以测试在容器中指定用echo指令执行 hello world.

  1. docker run correl/erlang echo "hello word"

  如果镜像没有什么问题的话, 终端会收到对应的反馈.
  
  执行Erlang shell

  1.   docker run --rm -it correl/erlang erl

  --rm 参数 前面有介绍, 设定退出时删除容器
  -i, --interactive=false Keep STDIN open even if not attached
  -t, --tty=false Allocate a pseudo-TTY
  
  如果没有意外的话, 应该收到反馈

  1. Erlang/OTP 17 [erts-6.4] [source] [64-bit] [smp:8:8] [async-threads:10] [kernel-poll:false]
  2. Eshell V6.4 (abort with ^G)
  3. 1> hello world.
  4. * 1: syntax error before: world
  5. 1> hello.
  6. hello
  7. 2>

  如下把宿主机的当前目录映射到容器的/home 目录下:

  1. docker run --rm -it -v $(pwd):/home correl/erlang /bin/bash

  这样就可以在宿主机器上编写代码, 在容器中编译 调试 部署 执行

  1. xxxx@xxxxs-Mac-Pro:~/Project/ErLang/test$ docker run --rm -it -v $(pwd):/home correl/erlang erl
  2. Erlang/OTP 17 [erts-6.4] [source] [64-bit] [smp:8:8] [async-threads:10] [kernel-poll:false]
  3. Eshell V6.4 (abort with ^G)
  4. 1> cd("/home").
  5. /home
  6. ok
  7. 2> ls().
  8. shop.erl
  9. ok
  10. 3>

附录

查看 docker 版本
docker version

查看docker 容器信息
docker info

查看当前本地的镜像
docker images

查看当前本地镜像的 layer
docker images --tree

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注