
本仓库包含可用于在本地设置https://github.com/DDMAL/rodan%E8%BF%9B%E8%A1%8C%E5%BC%80%E5%8F%91%E7%9A%84Docker%E9%95%9C%E5%83%8F%E3%80%82%E8%BF%99%E4%BA%9B%E9%95%9C%E5%83%8F%E6%9C%AA%E6%9D%A5%E7%A8%8D%E4%BD%9C%E4%BF%AE%E6%94%B9%E5%90%8E%E4%B9%9F%E5%8F%AF%E7%94%A8%E4%BA%8E%E7%94%9F%E4%BA%A7%E7%8E%AF%E5%A2%83%E9%83%A8%E7%BD%B2%E3%80%82
首先,为您的平台下载并安装Docker。如果您的平台不支持Docker(例如macOS低于10.10.3、Windows低于10 Pro或硬件不支持),请改用Docker Toolbox。如果使用Docker Toolbox,请参见下方特定说明。
安装Docker后,在您的计算机上克隆此仓库并运行以下命令:
shelldocker login
输入Docker Hub的DDMAL凭据(如不知道,请联系实验室管理员)以将其保存在您的计算机上。此步骤只需执行一次。
要运行Rodan,请在仓库主目录中运行以下命令:
shelldocker-compose up
就是这样!Docker将自动生成运行Rodan、rodan-client及其依赖项所需的所有容器。在浏览器中访问https://localhost:9002即可查看Rodan Web界面。用户名为rodan,密码为rodan。Rodan REST API可通过https://localhost:8000访问。如有需要,您可以在运行`docker-compose`的终端窗口中观察Rodan容器的日志输出。完成后,使用`Ctrl+C`退出`docker-compose`。
Docker Toolbox不会在localhost上公开容器端口,而是在Docker主机的IP地址上公开,您可以使用以下命令获取该IP:
shelldocker-machine ip default
为了让Rodan Web界面能够找到Rodan服务器,请在hosts文件中添加一条将localhost重定向到Docker主机IP地址的条目。macOS上的hosts文件位于/etc/hosts,Windows上位于c:\Windows\System32\Drivers\etc\hosts。添加以下条目,将IP地址替换为上述命令的输出:
192.168.xxx.xxx localhost
Docker容器镜像是一种轻量级、独立的可执行软件包,包含运行所需的一切:代码、运行时、系统工具、系统库和设置。容器与虚拟机不同:它更轻量级且可移植,因为它虚拟化操作系统而非硬件。
Rodan的Docker设置由5个容器镜像组成:
rodan - 提供REST API的Rodan服务器rodan-client - Rodan的Web界面postgres-plpython - Rodan服务器使用的PostgreSQL数据库,已安装Python扩展redis - Rodan服务器用于管理WebSocket连接的键值数据库。TODO:我们真的使用这个吗?(matangover)rabbitmq - 用作celery后端的消息队列,celery是Rodan用于作业管理的Python库rodan、rodan-client和postgres-plpython在本仓库中各有一个Dockerfile。对于redis和rabbitmq,我们使用Docker Hub上现有的公共镜像。docker-compose.yml文件指定了容器镜像之间的依赖关系,并将它们组合以设置完整的Rodan安装。
rodan-client和postgres-plpython是GitHub和Docker Hub上的公共仓库,但GitHub上的rodan-docker和Docker Hub上的rodan是私有的。它们必须是私有的,因为包含Kakadu(一种授权给DDMAL的专有软件包)。未来我们可能会创建一个不含Kakadu的rodan镜像的单独公共版本。
如果您希望开发Rodan或rodan-client并在本地测试更改,有几种选择。docker-compose设置是模块化的,因此您可以选择保留哪些部分,以及用本地更改覆盖哪些部分。
如果您希望开发rodan-client而不修改Rodan,可以在本地运行rodan-client并让其连接到docker-compose运行的Rodan服务器。rodan-client依赖项较少,因此设置简单。
rodan-docker/rodan-client/config中的configuration.json复制到您自己的rodan-client克隆中。如果要使用自己的配置,请确保它连接到docker-compose启动的Rodan服务器:json{ "SERVER_HOST": "localhost", "SERVER_PORT": 8000 }
docker-compose up rodan(而非docker-compose up)以运行Rodan及其依赖项,但不运行rodan-client。您可以在本地设置Rodan及其依赖项(如上述rodan-client的描述),但由于Rodan有许多依赖项,安装可能比较麻烦,更好的选择是本地克隆Rodan代码并将其挂载到已安装所有依赖项的Docker容器中。要使用本地开发版本的Rodan运行Rodan堆栈:
确保Rodan已克隆到rodan-docker/rodan/code/rodan - 参见下面的Git子模块设置。(您也可以使用不同路径的Rodan克隆,只需对以下步骤稍作调整。)
将rodan-docker/rodan/code/settings.py.development复制到rodan-docker/rodan/code/rodan/rodan/settings.py。请注意,此设置文件除默认作业类型外不包含其他作业类型。要启用更多作业类型,必须将作业安装到rodan-docker/rodan/code/rodan/rodan/jobs并将它们添加到settings.py中的RODAN_JOB_PACKAGES。
运行docker-compose -f docker-compose.yml -f docker-compose.rodan-dev.yml up
运行docker-compose时,Docker会将您的本地代码版本挂载到容器中,覆盖镜像中包含的Rodan版本。
有关Docker中卷的更多信息,请参见Docker文档中的使用卷。另请参见docker-compose.yml文件的volumes部分文档。
有时检查容器内运行的文件或进程会很有用。要获取正在运行的容器列表,请运行docker ps。要在容器和主机之间复制文件,请使用docker cp。
要在运行中的容器上运行任何命令,请使用docker exec。例如,要在docker-compose启动的Rodan容器上运行bash:
shelldocker exec -it rodandocker_rodan_1 bash
有关其他信息,请查阅Docker命令行文档。
本仓库使用Git子模块机制包含设置Rodan所需的所有库。Git子模块本质上是指向其他Git仓库的指针,在.gitmodules文件中指定。
仅当您希望重建Docker镜像时才需要克隆子模块。使用GitHub Desktop或SourceTree等图形化Git客户端时,子模块通常会自动克隆。在命令行克隆时,在git clone后运行以下命令以同时克隆子模块:
shellgit submodule update --init
当您更新上游仓库(例如Rodan或rodan-client)时,更改不会反映在此仓库中(因此也不会反映在Docker镜像中),直到您拉取更改。例如,要拉取Rodan的新版本,请运行以下命令:
shell# 拉取子模块更改。必须显式指定分支名称。 cd rodan/code/rodan git pull origin master # 提交并将更改推送到父仓库(docker-rodan)。 cd ../.. git add rodan/code/rodan git commit -m "Update the rodan submodule" git push
如果您更改了Rodan或rodan-client,或希望更改它们的安装方式,可以构建新版本的Docker镜像,在本地使用并最终发布。例如,要从仓库主目录构建rodan镜像的新版本,请运行以下命令:
shelldocker build -t ddmal/rodan rodan
构建操作将考虑您对rodan/Dockerfile或其依赖的任何文件所做的更改。根据您的更改,构建可能需要很长时间才能完成。
构建镜像后,您可以使用docker run rodan创建使用该镜像的容器。有关更完整的指南,请参阅Docker的入门文档。
当您对镜像满意并希望将其发布到Docker Hub时,运行docker push,例如docker push ddmal/rodan。
Docker Cloud可以在新提交推送到Git仓库时自动构建新的Docker镜像。不幸的是,由于身份验证问题,我们无法将GitHub上的rodan-docker仓库连接到Docker Cloud,因此我们在Bitbucket上设置了一个私有仓库。
每次将新提交推送到Bitbucket仓库的master分支时,Docker Cloud将自动构建Rodan Docker镜像。要推送到Bitbucket仓库,首先将其添加为本地克隆的远程:
git remote add bitbucket https://ddmaldocker@bitbucket.org/ddmaldocker/rodan-docker.git
(Bitbucket上ddmaldocker的密码与Docker Hub上ddmal的密码相同。)
完成将更改提交到master分支后,像往常一样推送到GitHub远程(origin),然后也推送到bitbucket远程:
git push bitbucket master
这将触发Docker Cloud服务器上rodan、rodan-client和postgres-plpython镜像的自动构建。您可以使用ddmal账户凭据在Docker Cloud上监控构建结果。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。




探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 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 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务