如何将 Docker 镜像部署到 Flynn?

Flynn 支持从 Docker 注册库运行 Docker 镜像。但是请注意,当前在 Docker 镜像上申明的容量都是暂时的,一旦实例被重启或者缩小,容量就会被清除。

首先给应用程序创建一个配置文件,然后运行命令来指定任务类型、 初始化命令以及开放端口。

创建一个名为 config.json 的文件,并将该文件通过 -f 选项传给 flynn release add 命令。

  1. {
  2. "processes": {
  3. "server": {
  4. "cmd": ["memcached", "-u", "nobody", "-l", "0.0.0.0", "-p", "11211", "-v"],
  5. "data": true,
  6. "ports": [{
  7. "port": 11211,
  8. "proto": "tcp",
  9. "service": {
  10. "name": "memcached",
  11. "create": true,
  12. "check": { "type": "tcp" }
  13. }
  14. }]
  15. }
  16. }
  17. }

Flynn 需要得到 Docker 镜像的注册地址。得到该注册地址最简单的方法是从 Docker 注册表中拉出镜像,然后用 Docker CLI 打印镜像ID。

  1. $ docker pull memcached
  2. $ docker images --no-trunc|grep memcachedmemcached latest 8937d6d027a4f52b877aacd9faa68b8a89652d858845e1ea2cf7bc6a8306db00 13 days ago 132.4 MB

现在可以通过 Flynn CLI 创建应用程序,并用 Docker 注册地址创建发布,然后通过扩展启动服务。

  1. # 创建应用程序
  2. $ flynn create --remote "" memcached
  3. # 使用注册地址创建发布
  4. $ flynn -a memcached release add -f config.json "https://registry.hub.docker.com?name=memcached&id=8937d6d027a4f52b877aacd9faa68b8a89652d858845e1ea2cf7bc6a8306db00"
  5. # 通过扩展启动服务。
  6. $ flynn -a memcached scale server=1

注意,因为 Docker 镜像启动前,Flynn 必须在下载 Docker 镜像,所以最后一个命令也许会超时,但是 Flynn 最终会启动。你可以通过运行 flynn -a memcached ps 命令,在启动 Docker 镜像的同时,打开进程列表来查看它的启动情况。现在, Flynn 应用程序可以通过连接到 memcached.discoverd:11211 与新的 memcached 服务器通信。应用程序的主机名基于 service.name 密钥,该密钥在发布提供的配置文件中。

原文: http://doc.oschina.net/flynn?t=54121