
Docker是一种轻量级虚拟化技术,允许应用程序及其所有依赖项以平台无关的方式快速轻松地运行。本项目提供包含Chaste(以及一些便捷脚本)的镜像,可通过单条命令启动,为癌症、心脏和软组织模拟提供跨多个操作系统和无数硬件配置的便携式、同构计算环境。
Docker允许从纯文本Dockerfile构建和运行计算环境。这类似于从源代码编译可执行文件(相当于使用docker build从Dockerfile生成镜像),然后将其作为运行程序执行(类似于使用docker run运行容器)。这种类比的步骤如Nüst等人2020年的下图所示。
Docker容器类比
更广泛地说,Docker还有一个存储预构建镜像的镜像仓库:[]docker push)并下载他人的镜像(例如使用docker pull),包括容器化应用(如Python和WordPress)以及基础镜像(如Ubuntu和Alpine),用于构建自己的镜像。Docker架构和更广泛的生态系统如此处所示。
有关介绍Docker以及如何使用此Chaste镜像的研讨会幻灯片可在此处找到。
安装Docker并将其配置为至少有4GB内存和尽可能多的核心(超过四个核心需要更多内存)。
| 操作系统 | 说明 |
|---|---|
| Linux | 安装Docker for Linux。默认情况下共享所有可用内存和处理核心。 |
| macOS | 1. 安装Docker for mac。 2. 配置偏好设置以增加可用内存并共享硬盘的任何所需区域。 |
| Windows | 0. 在Windows 10或更高版本上,安装WSL2(如果尚未安装),然后从Microsoft商店安装最新的Ubuntu "应用"。这可以通过以管理员身份打开PowerShell并运行:wsl --install -d ubuntu来完成。1. 安装Docker for Windows。 2. 配置偏好设置以在Docker设置中启用WSL扩展集成(特别是对于Ubuntu应用),然后增加可用内存并选择哪些本地驱动器可用于容器(例如 C:驱动器)。3. 启动Ubuntu应用,它将提供一个可输入命令的shell。然后,你可以使用预构建镜像运行容器,或通过在Ubuntu环境中克隆Chaste仓库,然后输入 code .打开VS Code,最后在VS Code弹出窗口中点击"在容器中重新打开"来使用VS Code开发容器。以这种方式将文件保存在Ubuntu文件系统中会大大提高文件I/O性能。4. [可选] 在主机上安装git以跟踪项目中的更改,并在需要时能够直接从GitHub构建Docker镜像。安装 posh-git可启用git命令的制表符补全。 |
:warning: 为Docker分配至少4GB内存,否则编译将因奇怪的错误而失败!
如果需要,还可以在镜像名称中指定可用标签,格式为docker run --init -it --rm -v chaste_data:/home/chaste chaste/release
chaste/release:<tag>,以拉取特定版本(例如chaste/release:2024.1),而不是默认的最新版本。develop分支的最新开发代码,使用以下命令拉取并运行最新的chaste/develop镜像:
docker run --init -it --rm -v chaste_data:/home/chaste chaste/develop
容器成功启动后,你应该看到类似于以下的命令提示符:
chaste@301291afbedf:~$
这是隔离的Docker容器(基于ubuntu)中的bash提示符,包含开始构建自己的Chaste项目所需的所有依赖项和预编译代码。在这里,你可以构建和测试项目,而不会干扰系统的其他部分。
:information_source: 要查看运行中容器的系统资源使用情况,请打开另一个终端并运行
docker stats。
如果你还没有项目,只需使用提供的脚本new_project.sh在~/projects中创建项目模板作为起点。可在以下位置找到许多项目教程:[***]
准备好构建项目后,使用脚本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中所做的任何更改都将保留,但是如果容器被删除,其他所有内容(例如已安装的软件包、对系统文件的更改)都将重置为首次使用镜像时的状态。
如果你使用VS Code并已安装Docker,只需克隆Chaste代码仓库并在VS Code中打开它(如果提示,安装Remote Development扩展包)。最后,当扩展提示时,点击"在容器中重新打开"。这将无缝地为你拉取、运行和挂载最新的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
VOLUME中,因此将在容器实例之间保持。但是,如果重置Docker,所有卷及其包含的数据都将丢失,因此请确保定期将项目推送到远程git仓库!
此镜像设置为将Chaste源代码、编译的库和脚本存储在Docker卷中,因为这是推荐的数据持久化机制,并在多个平台上提供最佳的文件I/O性能。
这种挂载类型的一个缺点是更难从主机访问内容。但是,要直接访问容器的output等内容,或与容器共享主机上的数据集,可以使用绑定挂载(如果需要,甚至可以覆盖卷中的目录)。
有关Docker挂载选项的更多详细信息和说明,请参见存储文档。
可以挂载任何主机目录(使用绝对路径指定,例如/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 chaste/release
在macOS和Windows上(但不是Linux),从主机读取和写入绑定挂载中的文件比Docker卷中的文件有更大的开销。这可能会减慢在这些文件夹(例如output)中有大量文件I/O的模拟,因此在这种情况下应谨慎使用绑定挂载。更快的替代方法是将文件留在卷中,并在模拟结束时使用docker cp将它们复制出来(或将修改后的文件复制进去)。
例如,使用以下命令复制整个src文件夹,其中容器已使用以docker run --name chaste ...开头的命令标记为chaste:
bashdocker cp chaste:/home/chaste/src . # 复制出来 # 在此处修改源文件 docker cp src/. chaste:/home/chaste/src # 复制进去
我们建议使用VS Code和"Remote Development"扩展,该扩展允许直接访问、编辑和搜索容器内的文件,就像它们在主机系统上一样,同时保持将文件保存在卷中的性能优势。
:information_source: 这些步骤与当前推荐的预构建镜像方法相关。如果你使用新的VS Code开发容器说明,这些步骤会自动完成。
--name <name>来启动它,否则它将有一个随机名称)/home/chaste,你将能够访问上面描述的文件和目录。
虽然最好将代码留在卷中以获得更好的性能,但你可能希望使用另一个绑定挂载将卷的~/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,但是在macOS上,可以使用delegated选项缓解此问题,例如--mount type=bind,source="$(pwd)"/chaste_code,destination=/home/chaste/src,consistency=delegated。
或者,使用工具docker-sync:[***]
:information_source: 如需从终端对代码进行小的编辑,镜像中安装了
nano以便使用,同时还安装了git用于推送更改。
如果你想使用镜像中未安装的软件包,可以使用以下命令安装:
sudo apt-get update && sudo apt
来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429