Docker 集中化 web 界面管理平台 shipyard 的示例分析,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面丸趣 TV 小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
Shipyard(github)是建立在 docker 集群管理工具 Citadel 之上的可以管理容器、主机等资源的 web 图形化工具。包括 core 和 extension 两个版本,core 即 shipyard 主要是把多个 Docker host 上的 containers 统一管理(支持跨越多个 host),extension 即 shipyard-extensions 添加了应用路由和负载均衡、集中化日志、部署等。
1. 几个概念 engine
一个 shipyard 管理的 docker 集群可以包含一个或多个 engine(引擎),一个 engine 就是监听 tcp 端口的 docker daemon。shipyard 管理 docker daemon、images、containers 完全基于 Docker API,不需要做其他的修改。另外,shipyard 可以对每个 engine 做资源限制,包括 CPU 和内存;因为 TCP 监听相比 Unix socket 方式会有一定的安全隐患,所以 shipyard 还支持通过 SSL 证书与 docker 后台进程安全通信。
rethinkdb
RethinkDB 是一个 shipyard 项目的一个 docker 镜像,用来存放账号(account)、引擎(engine)、服务密钥(service key)、扩展元数据(extension metadata)等信息,但不会存储任何有关容器或镜像的内容。一般会启动一个 shipyard/rethinkdb 容器 shipyard-rethinkdb-data 来使用它的 /data 作为数据卷供另外 rethinkdb 一个挂载,专门用于数据存储。
2. 搭建过程修改 tcp 监听
Shipyard 要管理和控制 Docker host 的话需要先修改 Docker host 上的默认配置使其监听 tcp 端口 (可以继续保持 Unix socket)。有以下 2 种方式
sudo docker -H tcp://0.0.0.0:4243 -H unix:///var/run/docker.sock - d 启动 docker daemon。如果为了避免每次启动都写这么长的命令,可以直接在 /etc/init/docker.conf 中修改。
修改 /etc/default/docker 的 DOCKER_OPTS
DOCKER_OPTS= -H tcp://127.0.0.1:4243 -H unix:///var/run/docker.sock。这种方式在我 docker version 1.4.1 in ubuntu 14.04 上并没有生效。
重启服务
$ sudo docker -H tcp://0.0.0.0:4243 -H unix:///var/run/docker.sock -d
$ netstat -ant |grep 4243
tcp6 0 0 :::4243
启动 rethinkdb
shipyard(基于 Python/Django)在 v1 版本时安装过程比较复杂,既可以通过在 host 上安装,也可以部署 shipyard 镜像(包括 shipyard-agent、shipyard-deploy 等组件)。v2 版本简化了安装过程,启动两个镜像就完成:
获取一个 /data 的数据卷
$sudo docker run -it -d --name shipyard-rethinkdb-data \
--entrypoint /bin/bash shipyard/rethinkdb -l
使用数据卷 /data 启动 RethinkDB
docker run -it -P -d --name shipyard-rethinkdb \
--volumes-from shipyard-rethinkdb-data shipyard/rethinkdb
部署 shipyard 镜像
启动 shipyard 控制器:
sudo docker run -it -p 8080:8080 -d --name shipyard \
--link shipyard-rethinkdb:rethinkdb shipyard/shipyard
至此已经可以通过浏览器访问 http://host:8080 来访问 shipyard UI 界面了。
第一次 run 后,关闭再次启动时直接使用:
sudo docker stop shipyard shipyard-rethinkdb shipyard-rethinkdb-data
sudo docker start shipyard-rethinkdb-data shipyard-rethinkdb shipyard
图示
登录:
默认用户名 / 密码为 admin/shipyard
主界面:
Dashboard 展示在添加 engine 时指定的 CPU 以及内存的使用情况。
容器:
shipyard 管理的所有 docker 主机的所有容器,包括 stop 和 running 状态的。可以直接点击 DEPLOY 按钮来从镜像运行出其他容器,与 docker run 的选项几乎相同,可以限制 CPU 和内存的使用,详见 shipyard 的 containers 文档。
容器操作:
可以 stop、start、restart 容器,通过 LOGS 可以看到容器日志输出,SCALE 可 以批量(规模化)部署该容器,这个操作与容器的 Type 属性息息相关。因为 shipyard 可以管理多个 host 的 docker 容器,所以启动一个容器的 type 可以是:service——可以在具有相同 label 的 engine 上运行;unique——一个 host 上只允许某个镜像的一个实例运 行;host——在指定的 host 上运行容器,启动的时候通过 –label host: host-id 语法指定 docker host。
engine 管理:
一 个 engine 就是一个 docker daemon,docker daemon 下启动着多个 containers,可以对 engine 限制一个整体的 CPU 和内存限制,shipyard 通过 TCP 端口连接 daemon。需要注意的是 docker client 与 server 的版本问题:(因为 shipyard 目前还在快速的完善过程,不同版本的 docker 应该是向下兼容的)
curl -X GET http://172.29.88.223:4243/v1.15/containers/json
client and server don t have same version (client : 1.15, server: 1.13)
3. shipyard-cli
目前图形化界面能做的操作其实很少,正在强大的是通过 shipyard 提供的命令行窗口(称作 Shipyard CLI)进行管理,参考 http://shipyard-project.com/docs/usage/cli/
启动命令行交互模式:
sudo docker run --rm -it shipyard/shipyard-cli
使用它甚至可以替代 docker 客户端。
sean@seanubt:~$ sudo docker run -it shipyard/shipyard-cli
shipyard cli shipyard help
NAME:
shipyard - manage a shipyard cluster
USAGE:
shipyard [global options] command [command options] [arguments...]
VERSION:
2.0.8
COMMANDS:
login login to a shipyard cluster
change-password update your password
accounts show accounts
add-account add account
delete-account delete account
containers list containers
inspect inspect container
run run a container
stop stop a container
restart restart a container
scale scale a container
logs show container logs
destroy destroy a container
engines list engines
add-engine add shipyard engine
remove-engine removes an engine
inspect-engine inspect an engine
service-keys list service keys
add-service-key adds a service key
remove-service-key removes a service key
extensions show extensions
add-extension add extension
remove-extension remove an extension
webhook-keys list webhook keys
add-webhook-key adds a webhook key
remove-webhook-key removes a webhook key
info show cluster info
events show cluster events
help, h Shows a list of commands or help for one command
GLOBAL OPTIONS:
--help, -h show help
--generate-bash-completion
--version, -v print the version
登录 shipyard
shipyard cli shipyard login
URL: http://172.29.88.205:8080
Username: admin
Password:
查看 containers
shipyard cli shipyard containers
启动一个容器
shipyard cli shipyard run --name nginx:1.7.6 --container-name web_test \
--cpus 0.2 \
--memory 64 \
--type service \
--hostname nginx-test \
--domain example.com \
--link redis:db \
--port tcp/172.29.88.205:81:8081 \
--port tcp/::8000 \
--restart on-failure:5 \
--env FOO=bar \
--label dev \
查看容器日志(只能接容器 ID,暂不能使用容器名)shipyard cli shipyard logs ff2761d
关闭并移除容器
shipyard cli shipyard destroy container_id
试用后觉得 shipyard 的 web 只实现了最基本的功能,如果需要方便的从 web 管理 docker 集群的话,还需要做很多定制工作。
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注丸趣 TV 行业资讯频道,感谢您对丸趣 TV 的支持。