
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
https://docs.docker.com/
https://github.com/Chaste/chaste-docker
docker run -it --init --rm -v chaste_data:/home/chaste chaste/releasehttps://docs.docker.com/
https://github.com/Chaste/chaste-docker
docker run -it --init --rm -v chaste_data:/home/chaste chaste/releasehttps://docs.docker.com/是一种轻量级虚拟化技术,允许应用程序及其所有依赖项以平台无关的方式快速轻松地运行。本项目提供包含http://www.cs.ox.ac.uk/chaste/(以及一些便捷脚本)的镜像,可通过单条命令启动,为癌症、心脏和软组织模拟提供跨多个操作系统和无数硬件配置的便携式、同构计算环境。
Docker允许从纯文本Dockerfile构建和运行计算环境。这类似于从源代码编译可执行文件(相当于使用docker build从Dockerfile生成镜像),然后将其作为运行程序执行(类似于使用docker run运行容器)。这种类比的步骤如Nüst等人2020年的下图所示。
Docker容器类比
更广泛地说,Docker还有一个存储预构建镜像的镜像仓库:https://hub.docker.com/。用户可以从自己的计算机上传镜像(使用`docker push)并下载他人的镜像(例如使用docker pull`),包括官方容器化应用(如https://hub.docker.com/_/python和https://hub.docker.com/_/wordpress)以及基础镜像(如https://hub.docker.com/_/ubuntu和https://hub.docker.com/_/alpine),用于构建自己的镜像。Docker架构和更广泛的生态系统如https://docs.docker.com/get-started/overview/#docker-architecture所示。
有关介绍Docker以及如何使用此Chaste镜像的研讨会幻灯片可在https://docs.google.com/presentation/d/1UqpN_9Jwfl-c1I9UpDGaIgm2GVSWffwk9rGkFhaq5_U/edit?usp=sharing找到。
安装https://www.docker.com/products/docker-desktop/并将其配置为至少有4GB内存和尽可能多的核心(超过四个核心需要更多内存)。
| 操作系统 | 说明 |
|---|---|
| Linux | 安装https://docs.docker.com/desktop/install/linux-install/。默认情况下共享所有可用内存和处理核心。 |
| macOS | 1. 安装https://docs.docker.com/desktop/install/mac-install/。 2. https://docs.docker.com/desktop/settings/mac/以增加可用内存并共享硬盘的任何所需区域。 |
| Windows | 0. 在Windows 10或更高版本上,安装WSL2(如果尚未安装),然后从Microsoft商店安装最新的Ubuntu "应用"。这可以通过https://ubuntu.com/tutorials/install-ubuntu-on-wsl2-on-windows-10#2-install-wsl并运行:`wsl --install -d ubuntu来完成。<br>1. 安装https://docs.docker.com/desktop/install/windows-install/。<br>2. https://docs.docker.com/desktop/settings/windows/以在Docker设置中启用WSL扩展集成(特别是对于Ubuntu应用),然后https://gist.github.com/jctosta/a8942ff4f8fbf01e339a0579172cb9fe并选择哪些本地驱动器可用于容器(例如C:驱动器)。<br>3. 启动Ubuntu应用,它将提供一个可输入命令的shell。然后,你可以使用预构建镜像运行容器,或通过在Ubuntu环境中克隆Chaste仓库,然后输入code .`打开VS Code,最后在VS Code弹出窗口中点击"在容器中重新打开"来使用VS Code开发容器。以这种方式将文件保存在Ubuntu文件系统中会大大提高文件I/O性能。4. [可选] https://www.atlassian.com/git/tutorials/install-git#windows以跟踪项目中的更改,并在需要时能够直接从GitHub构建Docker镜像。安装https://git-scm.com/book/uz/v2/Appendix-A%3A-Git-in-Other-Environments-Git-in-Powershell可启用git命令的制表符补全。 |
:warning: 为Docker分配至少4GB内存,否则编译将因奇怪的错误而失败!
如果需要,还可以在镜像名称中指定https://hub.docker.com/repository/docker/chaste/release/tags,格式为`chaste/release:docker run --init -it --rm -v chaste_data:/home/chaste docker.xuanyuan.run/chaste/release
,以拉取特定版本(例如chaste/release:2024.1`),而不是默认的最新版本。develop分支的最新开发代码,使用以下命令拉取并运行最新的chaste/develop镜像:
docker run --init -it --rm -v chaste_data:/home/chaste docker.xuanyuan.run/chaste/develop
容器成功启动后,你应该看到类似于以下的命令提示符:
chaste@301291afbedf:~$
这是隔离的Docker容器(基于https://hub.docker.com/_/ubuntu)中的bash提示符,包含开始构建自己的Chaste项目所需的所有依赖项和预编译代码。在这里,你可以构建和测试项目,而不会干扰系统的其他部分。
:information_source: 要查看运行中容器的系统资源使用情况,请打开另一个终端并运行
docker stats。
如果你还没有项目,只需使用提供的脚本new_project.sh在~/projects中创建项目模板作为起点。可在以下位置找到许多项目教程:https://chaste.cs.ox.ac.uk/trac/wiki/UserTutorials。
准备好构建项目后,使用脚本build_project.sh <TestMyProject> c(将<TestMyProject>替换为你的项目名称),输出将在~/output中找到(仅当创建新文件时才需要c参数)。
:information_source: 要在Docker容器和主机之间轻松共享数据(例如
output目录),可以向命令添加绑定挂载参数:-v /host/path/to/output:/home/chaste/output。有关更多详细信息,请参见绑定挂载说明。
当你使用完容器后,只需输入exit或按Ctrl+D关闭它(如有必要,先按Ctrl+C停止任何运行中的进程)。重新启动容器时,/home/chaste中所做的任何更改都将保留,但是如果容器被删除,其他所有内容(例如已安装的软件包、对系统文件的更改)都将重置为首次使用镜像时的状态。
如果你使用https://code.visualstudio.com/并已安装Docker,只需克隆https://github.com/Chaste/Chaste并在VS Code中打开它(如果提示,安装https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.vscode-remote-extensionpack)。最后,当扩展提示时,点击"在容器中重新打开"。这将无缝地为你拉取、运行和挂载最新的`chaste/develop`镜像。
:information_source: 注意,这会将本地克隆的Chaste代码副本挂载到容器中,覆盖镜像中已包含的副本。虽然预编译的二进制文件是基于镜像的内部代码副本构建的,但它们将相对最新,因此重新编译以与你对本地克隆代码所做的更改同步不会花费太长时间。
启动后,容器将在chaste用户的主目录/home/chaste中启动,结构如下:
bash. |-- build |-- projects -> /home/chaste/src/projects |-- scripts |-- src `-- output
这些文件夹包含以下类型的数据:
build:预编译的Chaste二进制文件和库projects:指向/home/chaste/src/projects的符号链接,用于用户项目scripts:用于创建、构建和测试项目的便捷脚本src:Chaste源代码output:项目测试框架的输出文件夹(由$CHASTE_TEST_OUTPUT设置)还设置了相应的环境变量如下:
CHASTE_DIR="/home/chaste"CHASTE_BUILD_DIR="${CHASTE_DIR}/build"CHASTE_PROJECTS_DIR="${CHASTE_DIR}/src/projects"CHASTE_SOURCE_DIR="${CHASTE_DIR}/src"CHASTE_TEST_OUTPUT="${CHASTE_DIR}/output":information_source: 如果构建自己的镜像,可以在构建时使用构建参数更改
CHASTE_DIR路径,例如--build-arg CHASTE_DIR=/path/to/alternative,然后其他目录将相对于该路径设置。
主文件夹(/home/chaste)中所做的任何更改将在重新启动容器之间保持,因为它被指定为VOLUME。此外,可以将特定文件夹挂载到这些子文件夹中的任何一个上,例如,访问测试输出以在ParaView中可视化,或挂载不同版本的Chaste源代码。通常,数据应保留在(命名的)卷中,因为这样文件I/O性能最佳。但是,绑定挂载主机目录可能很方便(例如访问输出文件),下面将进行说明。
:warning: Docker容器本质上是临时性的,退出后不会保存任何更改(除了卷中或从主机绑定挂载的文件夹中的文件)。容器主目录的内容(包括Chaste源代码和二进制文件)存储在Docker https://docs.docker.com/storage/volumes/中,因此将在容器实例之间保持。但是,如果重置Docker,所有卷及其包含的数据都将丢失,因此请确保定期将项目推送到远程git仓库!
此镜像设置为将Chaste源代码、编译的库和脚本存储在https://docs.docker.com/storage/volumes/中,因为这是https://docs.docker.com/storage/,并在多个平台上提供最佳的文件I/O性能。
这种挂载类型的一个缺点是更难从主机访问内容。但是,要直接访问容器的output等内容,或与容器共享主机上的数据集,可以使用绑定挂载(如果需要,甚至可以覆盖卷中的目录)。
有关Docker挂载选项的更多详细信息和说明,请参见https://docs.docker.com/storage/。
可以挂载任何主机目录(使用绝对路径指定,例如/path/to/output)到容器中(例如output目录)。或者,导航到主机上包含这些目录的文件夹(例如Windows上的C:\Users\$USERNAME\chaste或Linux/macOS上的~/chaste),并如下所示使用$(pwd)/output。在以下示例中,为简单起见,假设镜像名称(最后一个参数)为chaste/release,而不是chaste/develop或chaste/release:2024.1等。
docker run -it --init --rm -v chaste_data:/home/chaste -v "${PWD}"/output:/home/chaste/output docker.xuanyuan.run/chaste/release
在macOS和Windows上(但不是Linux),从主机读取和写入绑定挂载中的文件比Docker卷中的文件有更大的开销。这可能会减慢在这些文件夹(例如output)中有大量文件I/O的模拟,因此在这种情况下应谨慎使用绑定挂载。更快的替代方法是将文件留在卷中,并在模拟结束时使用https://docs.docker.com/engine/reference/commandline/cp/将它们复制出来(或将修改后的文件复制进去)。
例如,使用以下命令复制整个src文件夹,其中容器已使用以docker run --name chaste ...开头的命令标记为chaste:
bashdocker cp chaste:/home/chaste/src . # 复制出来 # 在此处修改源文件 docker cp src/. chaste:/home/chaste/src # 复制进去
我们建议使用https://code.visualstudio.com/download和"https://code.visualstudio.com/docs/remote/remote-overview"扩展,该扩展允许直接访问、编辑和搜索容器内的文件,就像它们在主机系统上一样,同时保持将文件保存在卷中的性能优势。
:information_source: 这些步骤与当前推荐的预构建镜像方法相关。如果你使用新的VS Code开发容器说明,这些步骤会自动完成。
--name <name>来启动它,否则它将有一个随机名称)/home/chaste,你将能够访问上面描述的文件和目录。
虽然最好将代码留在卷中以获得更好的性能,但你可能希望使用另一个https://docs.docker.com/storage/bind-mounts/将卷的`~/src`文件夹与包含Chaste源代码的主机目录覆盖,例如`-v /path/to/chaste_code:/home/chaste/src。然后可能需要在容器内使用build_chaste.sh <branch/tag>重新编译Chaste,或者如果你已在挂载的主机文件夹中有代码,可以在重新编译前跳过克隆,使用build_chaste.sh .。这将使相同的源文件可直接在主机和Docker容器中访问,避免来回复制文件或使用VS Code的需要。这可能导致比存储在Docker卷中时更慢的I/O,但是在https://docs.docker.com/storage/bind-mounts/#configure-mount-consistency-for-macos上,可以使用https://docs.docker.com/docker-for-mac/osxfs-caching/#examples缓解此问题,例如--mount type=bind,source="$(pwd)"/chaste_code,destination=/home/chaste/src,consistency=delegated`。
或者,使用工具docker-sync:[***]。它适用于OSX、Windows、Linux(映射到原生挂载)和FreeBSD。
:information_source: 如需从终端对代码进行小的编辑,镜像中安装了
nano以便使用,同时还安装了git用于推送更改。
如果你想使用镜像中未安装的软件包,可以使用以下命令安装:
sudo apt-get update && sudo apt
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务