使用 docker 管理一个小型 OAR 开发集群。
项目描述
使用 docker 构建自己的 OAR 集群
oar-docker 是一组 docker 镜像,专门用于部署您自己的 OAR 集群。主要想法是在一台简单的笔记本电脑上创建一个带有前端、服务器和一些节点的迷你开发集群,这些节点只需几秒钟即可启动。
为什么使用 oar-docker ?
- 各种案例场景可能会影响您:
在集群上快速测试 OAR
获得时间:一个十节点(或更多)的集群在几秒钟内启动,不到一秒钟就被清理干净。
节省资源:docker允许用户在各个系统之间共享节点,资源利用率因此大大降低。
同步卷:允许您继续在主机上工作,但使用客户机中的资源来编译或运行您的项目。
安装
- 要求:
蟒蛇> = 2.7
码头 >= 1.3
您可以使用以下命令安装、升级、卸载 oar-docker:
$ pip install [--user] oar-docker $ pip install [--user] --upgrade oar-docker $ pip uninstall oar-docker
或者来自 git(最后一个开发版本):
$ pip install git+https://github.com/oar-team/oar-docker.git
或者,如果您已经提取了来源:
$ pip install path/to/sources
使用 virtualenv 可能有助于克服 python 和您的发行版之间的问题。
用法
Usage: oardocker [OPTIONS] COMMAND1 [ARGS]... [COMMAND2 [ARGS]...]... Manage a small OAR developpement cluster with docker. Options: --workdir DIRECTORY Changes the folder to operate on. --docker-host TEXT The docker socket [default: unix://var/run/docker.sock]. --cgroup-path TEXT The cgroup file system path [default: /sys/fs/cgroup]. --docker-binary TEXT The docker client binary [default: docker]. --verbose Verbose mode. --debug Enable debugging --version Show the version and exit. -h, --help Show this message and exit. Commands: build Build base images clean Remove all stopped containers and untagged... connect Connect to a node. destroy Stop containers and remove all images exec Run a command in an existing node. init Initialize a new environment. install Install and configure OAR from src logs Fetch the logs of all nodes or only one. reset Restart the containers start Create and start the nodes status Output status of the cluster stop Stop and remove all nodes
入门
要开始使用 oar-docker,首先要做的是初始化一个项目:
$ oardocker init
如果你已经有了 OAR 源码,最好直接在 OAR 源码目录下初始化 oardocker 项目:
$ cd 路径/到/oar/src $ oardocker init
您只需执行一次。它允许您导入 Dockerfile 和其他配置文件。
然后我们启动基础镜像构建:
$ oardocker build
现在,我们必须安装 OAR。为此,有几个选项可用。
如果您已经拥有 OAR 资源:
$ oardocker install /path/to/oar_src
或者,如果您想从 tarball 安装:
$ oardocker install http://oar-ftp.imag.fr/oar/2.5/sources/testing/oar-2.5.4+rc4.tar.gz
您还可以从 git 存储库启动安装:
$ oardocker install git+https://github.com/oar-team/oar.git
我们启动一个有 5 个节点的 OAR 集群:
$ oardocker start -n 5
可以使用-v选项在主机和所有容器之间共享目录:
$ oardocker start -v $PWD:/oar_src -v /my/custom/lib:/usr/local/ma_lib
管理集群:
$ oardocker connect frontend|server|nodeXX $ oardocker logs [frontend|server|nodeXX]
清洁:
$ oardocker stop # stops and removes all containers $ oardocker clean # removes all stopped containers (failed) and the untagged images <none:none> $ oardocker destroy # removes all images and containers
使用 oar-docker,可以链接所有命令以更快:
$ oardocker init -f build install oar-2.5.4+rc4.tar.gz start -n 4 connect -l root frontend
例如,要在 OAR 上开发,我们经常需要安装 OAR,启动集群并连接到它:
$ oardocker install $PWD start -n 10 -v $PWD:/home/docker/oar_src connect frontend
最后一件事要知道。每次启动、安装和构建之前都会自动启动停止命令……如果我们多次启动最后一个命令,我们将始终获得相同的结果。更快地进行实验和开发(甚至)可能很有用。
注意 OAR < 2.5.9+g5k5
oardocker ≥ 1.6.0 不会在oardocker install中创建/dev/oar_cgroups_links/和/dev/cpuset,让 OAR 处理它,以便实际测试job_resource_manager_cgroup.pl的相关部分。
这会破坏OAR 2.5.9+g5k5 之前的 job_resource_manager_cgroup.pl 。请参阅.oardocker/init-scripts/prepare_oar_cgroup.sh通过设置恢复到旧的行为:
CREATE_OAR_CGROUPS_LINKS=yes
网络服务
默认情况下,oardocker 将 80 和 6667 TCP 端口转发到前端容器,用于 OAR Web 服务。要将其他 TCP 端口转发到前端,请修改.oardocker/manifest.json文件,在net_services数组中添加额外的行。例如:
"network_services": [ ["Netcat", " (tcp test)", "5000", "TCP: "], ["Secure web service", "/secure", "443", "https://"], ["Python API", "/newoarapi", "6668"], ... ]
这转化为以下转发:
******************** Network Services ********************* Netcat: TCP: localhost:45000 (tcp test) Secure web service: https://localhost:40443/secure Python API: http://localhost:46668/newoarapi ... ***********************************************************
只有数字端口号真正重要,文本仅提供信息。
安全
oar-docker 是一个开发项目,也是一个测试项目。这绝不是安全的。此外,使用的私有 ssh 密钥也是不安全的,因为它是公开的(您可以在源代码中找到它)。
桨码头变更日志
版本 1.6.3
2022 年 1 月 6 日发布 - 添加靶心支持
版本 1.6.2
2021 年 10 月 21 日发布 - 更新 Debian buster 的 docker 镜像配方:使用 buster 而不是 stable 作为发布名称,添加 man 包 - 添加对 oar-node 和 oar-server systemd 本机单元文件的支持 - 修复可调用的 python3 集合
版本 1.6.1
2020 年 3 月 31 日发布 - 设置 drawgantt label_cmp_regex 配置以正确排序节点
版本 1.6.0
2020 年 3 月 31 日发布
将manifest.json文件中的web_services更改为net_services(但保持向后兼容性)
在net_services中添加一个额外的字段用于 http 以外的端口转发(装饰)
在README.rst文件中添加有关 TCP 端口转发的信息
不要在oardocker install中创建/dev/oar_cgroups_links/和/dev/cpuset,而是让 OAR 处理它
这与 OAR 2.5.9+ g5k5之前的 OAR job_resource_manager_cgroup.pl 中断,请参阅README.rst
版本 1.5.0
发布于 2020 年 3 月 6 日
版本 1.4.0
发布于 2018 年 12 月 6 日
提高容器中的 systemd 使用率
使用 Docker API 版本 1.21
提高
更改 Debian8 基础镜像
添加更好的 CiGri 模板
版本 1.3.0
2016 年 6 月 13 日发布
返工 install_oar.sh 脚本(apache2 配置 + chmod 0600 oar.conf)
添加 newapi apache2 配置(用于 Python OAR API)
通过 systemd 修复 apache2 启动
使用清单返工端口绑定
为 OAR API 添加端口绑定到 6668
更改用于转发的默认主机端口号
版本 1.2.0
2016 年 3 月 30 日发布
将前端 http 服务器从 nginx 恢复为 apache
修复了 OAR Rest API 单元测试
配置 COORM 映像以使用新的 oar3 python 包和 kamelot 作为默认调度程序
固定“核心”资源创建
次要的 python3 修复
版本 1.1.0
2016 年 2 月 10 日发布
将基础映像版本更新为 1.3.2
配置 debian 分支以固定来自 sid (nginx, systemd) 的一些最新包
取消屏蔽 systemd-tmpfiles-setup 服务(已修复 #45)
使用最新版本的 docker (>1.9) 再次修复 /etc/hosts 挂载点
添加了基于 jessie one 的新 coorm 环境
使 init-scripts 可执行
如果没有为 manifest.json 设置 install_script,则不支持安装操作
添加了一个 manifest.json 文件来描述环境
如果丢失,请尝试拉取 docker 图像
添加了--rebuild选项以重建图像,即使已经完成
将原始 oar-server 日志发送到 journalctl
在oardocker exec cmd中默认分配 tty
版本 1.0.0
2015 年 11 月 18 日发布
提高稳定性、性能和安全性
使用 systemd 作为容器的默认初始化
使用 systemd 激活套接字改进了资源使用。
使用 tmpfiles.d 创建运行时易失文件(pid、/var/run 等)
使用 /etc/profile 将环境变量传递给容器
不再有不安全的 ssh 密钥
通过将 apache2 替换为 nginx 来修复所有 Web 服务(api、monika…)
通过添加 rsyslog 节点来集中所有日志来改进日志记录
在oardocker logs命令中添加了 --no-tail和--lines/-n选项
手动创建资源,因为它比 oar_resources_ini 快(无 ssh 连接)
删除了未使用的脚本
OAR3 就绪
版本 0.6.0
2015 年 10 月 22 日发布
删除了喘息的环境(固定#39)
默认记录到标准输出
修复了 oar.conf 权限以允许普通用户读取它
单击时禁用_unicode_literals_warning
为 API 添加了 oidentd start 以进行身份验证
启用 mod_cgi(用于 monika)
让 oar makefile 配置 web 工具
cigri 底座的新模板
固定资源初始化
固定字符串格式
默认情况下不分配伪 TTY
修复了 OAR 2.5.3 和更早版本的 oar-node 和 oar-server init.d 脚本
调整新的 oar_resources_init 选项
设置 cosystem 并部署作业并在前端安装 oar-node
版本 0.5.10
2015 年 7 月 3 日发布
将 /etc/oar/job_resource_manager_cgroup.pl 设为符号链接以改进调试(已修复 #34)
通过恢复为 oidentd 来修复 API
版本 0.5.9
2015 年 7 月 1 日发布
设置 OAREXEC_DEBUG_MODE=1 以改善开发环境(已修复 #34)
版本 0.5.8
2015 年 6 月 29 日发布
删除了已编译的 python3 版本
将基础镜像版本提升到 1.2
版本 0.5.7
2015 年 6 月 25 日发布
将基础映像版本提升到 1.1(包括 apache2-suexec 和 pidentd)
修复了 setup_resources 脚本的标记(已修复 #33)
修复 oar-api apache 配置
版本 0.5.6
2015 年 6 月 23 日发布
使用 jessie 作为默认环境
版本 0.5.5
2015 年 6 月 12 日发布
关于持久性 bash 历史的小错误修复
版本 0.5.4
发布于 2015 年 6 月 2 日
将基础映像版本提升至 1.0.4
添加了持久性 .bash_history 和 .pyhistory
为--volume选项添加了 :ro、:rw 和 :cow选项
修复了 jessie 中的 phppgadmin 和 oarapi 403 错误
修复了 jessie 中的 oarapi 403 错误
从 dockerfile 中删除了重复的软件包安装
修复了 debian jessie 中的 rest-client 安装
在基础镜像中安装了 chandle
在 OAR 安装后配置 postgresql
更新 wait_pgsql 脚本:如果没有提供主机,则使用 UNIX 套接字
版本 0.5.3
2015 年 5 月 22 日发布
为 Rest API 单元测试安装了 ruby-rspec librestclient-ruby
固定桨资源初始化
OAR 安装期间初始化的数据库
安装的钱德勒
顺序桨资源初始化(固定 #28)
接收 SIGINT 时运行清理脚本并杀死容器中的所有进程(已修复 #27)
将基础镜像更新到版本 1.0.3
改进了 oardocker cgroup 清理
在 oardocker 停止时清理 oardocker 节点 cgroup(已修复 #27)
配置 oarsh 以从容器中获取当前的 cpuset(已修复 #30)
添加了丑陋的补丁来修复 /etc/hosts 使用 docker >=1.6.0 挂载
版本 0.5.2
2015 年 5 月 5 日发布
在节点中安装 socat
在 oar_resources_init 之前等待节点上的 ssh 守护进程
改进了 colmet 节点上的 ssh 连接
版本 0.5.1
2015 年 4 月 21 日发布
修复了与 docker-py==1.1.0 的兼容性
版本 0.5.0
2015 年 4 月 2 日发布
从图像中删除钱德勒和红宝石
在服务器上安装 libdatatime-perl
丢弃的python环境
基于 jessie one 为 colmet 添加了新环境
基于 oardocker/debian7 和 oardocker/debian8 镜像构建 wit kameleon
版本 0.4.3
2015 年 2 月 23 日发布
添加了–debug选项
将默认 docker API 设置为 1.15 (#25)
解决方法 phpphadmin apache 安装
删除了 drawgantt-svg 权限错误 (#23)
修复了 oardocker init子命令(#22)
在构建期间将工作目录上传到容器
更新 Dockerfiles 以执行 custom_setup.sh 脚本
版本 0.4.2
2015 年 1 月 28 日发布
在安装 OAR 之前从源中清理未版本化的 OAR 文件(git clean)(已修复 #20)
版本 0.4.0
2015 年 1 月 24 日发布
Python3 支持
使用容器主机名前缀所有容器输出(如 oardocker logs 子命令)
在 oardocker build 子命令中添加了--force-rm和--pull选项
允许用户使用位于.oardocker/images/<image_name>/中的 custom_setup.sh 脚本构建自定义图像
添加了关闭容器的正确方法
重置容器时更新 /etc/hosts
从依赖项中删除 dockerpty 包
删除了 oardocker ssh/ssh-config 子命令
添加了 --verbose选项
修复了 oardocker logs 子命令
版本 0.3.2
2014 年 12 月 16 日发布
添加了--enable-x11选项以允许容器显示 x11 应用程序
python启动时自动加载OAR模块
为oardocker start添加了 --env选项以设置自定义环境变量
为oardocker exec添加了 --workdir选项
版本 0.3.1
2014 年 11 月 27 日发布
错误修复: - 修复了 Dockerfiles “FROM” 语句
改进: - 从可用环境中删除了隐式“默认”别名
版本 0.3.0
2014 年 11 月 27 日发布
特点:
添加了 oardocker exec命令
使用oardocker init管理多个环境变体:添加 wheezy|jessie|python 基础图像
错误修复: - 由于破坏了 Jessie 中的 OAR API,将默认环境恢复为 Debian Wheezy - 修复了语言环境问题
改进: - oar-server 和 postgresql 服务之间的更好同步
版本 0.2.0
2014 年 11 月 5 日发布
特点:
将基础镜像更新为 debian jessie
添加了 oardocker connect以连接到没有 ssh 的节点
从现在开始不推荐使用命令oardocker ssh和oardocker ssh-config
改进:
仅使用 my_init.d statup 脚本删除了主管并降低了初始化过程的复杂性
自定义帮助参数以接受-h和--help
将 docker 客户端二进制文件用于某些任务而不是 API
错误修复:
确保 /etc/hosts 文件包含 localhost 条目
版本 0.1.4
2014 年 10 月 28 日发布
如果文件名以“~”结尾,则忽略 my-init 脚本
添加了 wait_pgsql 脚本以等待 postgresql 可用
固定 monika 配置(数据库服务器主机名是服务器)
删除旧代码
使 cgroup 挂载脚本适应 job_resource_manager_cgroup.pl 并删除旧的 cpuset 解决方法
修复了 cpu/core/thread 关联
版本 0.1.3
2014 年 9 月 10 日发布
添加oar reset cmd 来重启容器
使用 git 信息添加了关于 oardocker 图像的更好评论
使用默认的 job_resource_manager 脚本(来自 oar 来源)
在容器中挂载主机 cgroup 路径(默认路径为 /sys/fs/cgroup)
从 ssh_config 中移除已停止的容器
删除 dnsmasq 并为节点挂载自定义 /etc/hosts(需要 docker >= 1.2.0)
版本 0.1.2
2014 年 9 月 16 日发布
与旧版本的 git 保持兼容
不要命名容器
使用 unionfs-fuse 将 OAR src 挂载为 Copy-on-Write 目录
oardocker install期间容器失败时停止安装
添加了打印版本的选项
允许与不同用户的 ssh 连接
版本 0.1.1
2014 年 9 月 11 日发布
修正了一些小错误
0.1版
2014 年 9 月 11 日发布
oar-docker 的首次公开发布
项目详情
下载文件
下载适用