Skip to main content

使用 docker 管理一个小型 OAR 开发集群。

项目描述

使用 docker 构建自己的 OAR 集群

https://img.shields.io/pypi/v/oar-docker.svg CI 状态

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 sshoardocker 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 的首次公开发布

项目详情


下载文件

下载适用