如何将 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 密钥,该密钥在发布提供的配置文件中。