Deis(发音为DAY-iss)是一个开源PaaS(平台即服务),可轻松在自有服务器上部署和管理应用。Deis基于http://docker.io/%E5%92%8CCoreOS%E6%9E%84%E5%BB%BA%EF%BC%8C%E6%8F%90%E4%BE%9B%E8%BD%BB%E9%87%8F%E7%BA%A7PaaS%E5%B9%B6%E5%85%B7%E5%A4%87Heroku%E9%A3%8E%E6%A0%BC%E7%9A%84%E5%B7%A5%E4%BD%9C%E6%B5%81%E3%80%82
!构建状态 !覆盖率状态
!Deis图示
Deis镜像作为开源PaaS的核心组件,提供Docker容器化的应用部署和管理能力。它将应用部署流程标准化,支持在公共云、私有云、裸机或工作站等多种环境中快速搭建PaaS平台,适用于开发、测试和生产环境的应用生命周期管理。
Deis由一组Docker容器组成,可部署在任何环境。选择部署环境后,可参考特定平台文档:Rackspace、EC2或裸机。其他平台文档即将推出,如需支持特定平台可提交https://github.com/deis/deis/issues/new%E3%80%82
如需试用Deis,可按以下说明搭建本地集群,这也是理想的测试/开发环境。
从旧版本升级Deis?参见升级Deis获取详细信息。
安装前提条件
在工作站上需安装:
多节点集群的额外设置
如需创建多个VM测试完整集群,需额外配置:
https://discovery.etcd.io/new生成的唯一discovery URLDEIS_NUM_INSTANCES指定集群规模(通常为3或5):$ export DEIS_NUM_INSTANCES=3DEIS_NUM_ROUTERS:$ export DEIS_NUM_ROUTERS=2local3.deisapp.com或local5.deisapp.com(替代local.deisapp.com)注意:为确保调度正常,集群至少需3个节点且节点数为奇数。更多信息参见https://github.com/coreos/etcd/blob/master/Documentation/optimal-cluster-size.md%E3%80%82%E5%B0%91%E4%BA%8E3%E4%B8%AA%E8%8A%82%E7%82%B9%E7%9A%84Deis%E9%9B%86%E7%BE%A4%E4%BB%85%E6%94%AF%E6%8C%81%E6%9C%AC%E5%9C%B0%E5%BC%80%E5%8F%91%EF%BC%8C%E4%B8%8D%E5%BB%BA%E8%AE%AE%E7%94%A8%E4%BA%8E%E5%85%B6%E4%BB%96%E5%9C%BA%E6%99%AF%E3%80%82
启动CoreOS
首先在VirtualBox上启动CoreOS集群。在命令行中,进入Deis项目代码根目录并执行:
console$ vagrant up
为连接VM,需将Vagrant生成的SSH密钥添加到ssh-agent(fleetctl隧道需要此密钥):
console$ ssh-add ~/.vagrant.d/insecure_private_key
设置环境变量,以便使用工作站上的docker和fleetctl客户端连接VM:
console$ export DOCKER_HOST=tcp://172.17.8.100:4243 $ export FLEETCTL_TUNNEL=172.17.8.100
构建Deis
使用make pull从公共Docker索引下载缓存层,然后使用make build从Dockerfile组装所有Deis组件。构建过程可能需要一段时间,请耐心等待。
console$ make pull $ make build
运行Deis
使用make run启动所有Deis容器并附加日志输出。此过程可能需要时间(注册表服务会拉取并准备Docker镜像):
console$ make run
Vagrant VM可通过local.deisapp.com(或local3.deisapp.com/local5.deisapp.com)访问。其他平台(EC2、Rackspace、裸机等)集群参见配置DNS指南。
测试集群
集成测试及文档位于test/目录下。
安装Deis客户端
如使用最新Deis版本,可通过pip install deis安装最新Deis客户端或下载https://github.com/deis/deis/tree/master/client#get-started%E3%80%82
如基于master分支开发,预编译二进制文件可能过时,建议直接链接Python文件或本地构建客户端:
console$ ln -fs $(pwd)/client/deis.py /usr/local/bin/deis
或
console$ cd client && python setup.py install
注册用户
使用Deis客户端注册新用户:
console$ deis register http://deis.local.deisapp.com $ deis keys:add
使用deis keys:add添加SSH公钥以获得git push访问权限。
初始化集群
使用CoreOS主机列表和CoreOS私钥初始化dev集群:
console$ deis clusters:create dev local.deisapp.com --hosts=local.deisapp.com --auth=~/.vagrant.d/insecure_private_key
deis clusters:create参数说明:
dev)- Deis引用集群的名称local.deisapp.com)- 应用创建的基础主机名,如balancing-giraffe.local.deisapp.com--hosts)- 逗号分隔的集群成员列表(至少一个,EC2和Rackspace环境通常为内部IP列表,如--hosts=10.21.12.1,10.21.12.2,10.21.12.3)--auth)- 用于服务器配置的SSH私钥(EC2和Rackspace环境通常为~/.ssh/deis)dev集群将作为后续deis命令的默认集群。
克隆示例应用或使用现有应用
可从Deis GitHub https://github.com/deis%E5%85%8B%E9%9A%86%E7%A4%BA%E4%BE%8B%E5%BA%94%E7%94%A8%EF%BC%8C%E5%B8%B8%E7%94%A8%E7%A4%BA%E4%BE%8B%E5%8C%85%E6%8B%AChttps://github.com/deis/helloworld%E3%80%81https://github.com/deis/example-go%E5%92%8Chttps://github.com/deis/example-ruby-sinatra%E3%80%82
创建应用
在应用目录中,在默认dev集群上创建应用:
console$ cd example-ruby-sinatra $ deis create
使用deis create --cluster=prod将应用部署到其他集群。如需自定义名称,使用deis create myappname。
推送应用
从本地Git仓库或Docker Registry推送应用构建。每次构建会创建新发布版本,支持回滚。
从Git仓库推送
创建应用时会自动添加Deis的Git远程仓库:
console$ git push deis master
Deis构建器会将应用打包为Docker镜像并部署到集群。
配置应用
通过环境变量配置应用,每次配置更改会创建新发布版本:
console$ deis config:set DATABASE_URL=postgres://
测试应用
运行测试
在临时Docker容器中运行命令测试应用:
console$ deis run make test
可通过返回码集成CI系统。
扩展应用
轻松横向扩展容器:
console$ deis scale web=8
调试应用
聚合日志便于故障排查:
console$ deis logs
使用deis run执行一次性命令并查看部署的容器。即将支持deis attach进入运行中的容器。
执行make操作时 - 'Failed initializing SSH client: ssh: handshake failed: ssh: unable to authenticate'
是否忘记将SSH密钥添加到ssh-agent?ssh-agent -L应列出用于配置服务器的密钥。如未列出,执行ssh-add -K /path/to/your/key。
执行make操作时 - 'All the given peers are not reachable (Tried to connect to each peer twice and failed)'
最常见原因是启动集群前未生成新的discovery URL并更新contrib/coreos/user-data。每个Deis集群需唯一的discovery URL,否则etcd会尝试连接旧主机导致失败。销毁并重新启动集群,确保使用新的discovery URL。
应用扩展失败和/或显示'Welcome to nginx!'
表明控制器未能向fleet提交应用作业。fleetctl status deis-controller可查看详细错误信息,最常见原因是创建集群时--auth参数使用了错误的SSH密钥。--auth参数必须与配置Deis服务器时使用的密钥一致。如确认此问题,需clusters:destroy集群并重新创建,同时重建应用。
Deis组件启动失败
使用fleetctl status deis-<component>.service查看服务输出。最常见原因是Docker索引的偶发问题,特征日志如下:
consoleMay 12 18:24:37 deis-3 systemd[1]: Starting deis-controller... May 12 18:24:37 deis-3 sh[6176]: 2014/05/12 18:24:37 Error: No such id: deis/controller May 12 18:24:37 deis-3 sh[6176]: Pulling repository deis/controller May 12 18:29:47 deis-3 sh[6176]: 2014/05/12 18:29:47 Could not find repository on any of the indexed registries. May 12 18:29:47 deis-3 systemd[1]: deis-controller.service: control process exited, code=exited status=1 May 12 18:29:47 deis-3 systemd[1]: Failed to start deis-controller. May 12 18:29:47 deis-3 systemd[1]: Unit deis-controller.service entered failed state.
可尝试使用fleetctl start deis-<component>.service重新启动服务。
其他问题
如遇到未提及的问题,请https://github.com/deis/deis/issues/new%E6%88%96%E5%8A%A0%E5%85%A5#deis%E9%A2%91%E9%81%93%E8%8E%B7%E5%8F%96%E5%B8%AE%E5%8A%A9%EF%BC%81
Copyright 2014, OpDemand LLC
根据Apache License 2.0许可("许可")授权;除非符合许可,否则不得使用此文件。可在<[***]>获取许可副本。
除非适用***要求或书面同意,否则根据许可分发的软件按"原样"分发,不提供任何明示或暗示的担保或条件。详见许可中有关权限和限制的具体语言。
以下是 deis/registry 相关的常用 Docker 镜像,适用于 不同场景 等不同场景:
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。



探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务