在 Flynn 上如何部署 Docker 镜像? #如何将 Docker 镜像部署到 Flynn? Flynn 支持从 Docker 注册库运行 Docker 镜像。但是请注意,当前在 Docker 镜像上申明的容量都是暂时的,一旦实例被重启或者缩小,容量就会被清除。 首先给应用程序创建一个配置文件,然后运行命令来指定任务类型、 初始化命令以及开放端口。 创建一个名为 config.json 的文件,并将该文件通过 -f 选项传给 flynn release add 命令。 ``` { "processes": { "server": { "cmd": ["memcached", "-u", "nobody", "-l", "0.0.0.0", "-p", "11211", "-v"], "data": true, "ports": [{ "port": 11211, "proto": "tcp", "service": { "name": "memcached", "create": true, "check": { "type": "tcp" } } }] } } } ``` Flynn 需要得到 Docker 镜像的注册地址。得到该注册地址最简单的方法是从 Docker 注册表中拉出镜像,然后用 Docker CLI 打印镜像ID。 ``` $ docker pull memcached $ docker images --no-trunc|grep memcachedmemcached latest 8937d6d027a4f52b877aacd9faa68b8a89652d858845e1ea2cf7bc6a8306db00 13 days ago 132.4 MB ``` 现在可以通过 Flynn CLI 创建应用程序,并用 Docker 注册地址创建发布,然后通过扩展启动服务。 ``` # 创建应用程序 $ flynn create --remote "" memcached # 使用注册地址创建发布 $ flynn -a memcached release add -f config.json "https://registry.hub.docker.com?name=memcached&id=8937d6d027a4f52b877aacd9faa68b8a89652d858845e1ea2cf7bc6a8306db00" # 通过扩展启动服务。 $ flynn -a memcached scale server=1 ``` 注意,因为 Docker 镜像启动前,Flynn 必须在下载 Docker 镜像,所以最后一个命令也许会超时,但是 Flynn 最终会启动。你可以通过运行 ```flynn -a memcached ps``` 命令,在启动 Docker 镜像的同时,打开进程列表来查看它的启动情况。 现在, Flynn 应用程序可以通过连接到 memcached.discoverd:11211 与新的 memcached 服务器通信。应用程序的主机名基于 service.name 密钥,该密钥在发布提供的配置文件中。