Docker训练nnUNet

Docker 命令整理

Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG...]   
   
  -d, --detach=false         指定容器运行于前台还是后台,默认为false    
  -i, --interactive=false    打开STDIN,用于控制台交互   
  -t, --tty=false            分配tty设备,该可以支持终端登录,默认为false   
  -u, --user=""              指定容器的用户   
  -a, --attach=[]            登录容器(必须是以docker run -d启动的容器) 
  -w, --workdir=""           指定容器的工作目录  
  -c, --cpu-shares=0         设置容器CPU权重,在CPU共享场景使用   
  -e, --env=[]               指定环境变量,容器中可以使用该环境变量   
  -m, --memory=""            指定容器的内存上限   
  -P, --publish-all=false    指定容器暴露的端口   
  -p, --publish=[]           指定容器暴露的端口  
  -h, --hostname=""          指定容器的主机名   
  -v, --volume=[]            给容器挂载存储卷,挂载到容器的某个目录   
  --volumes-from=[]          给容器挂载其他容器上的卷,挂载到容器的某个目录 
  --cap-add=[]               添加权限,权限清单详见:http://linux.die.net/man/7/capabilities   
  --cap-drop=[]              删除权限,权限清单详见:http://linux.die.net/man/7/capabilities   
  --cidfile=""               运行容器后,在指定文件中写入容器PID值,一种典型的监控系统用法   
  --cpuset=""                设置容器可以使用哪些CPU,此参数可以用来容器独占CPU   
  --device=[]                添加主机设备给容器,相当于设备直通   
  --dns=[]                   指定容器的dns服务器   
  --dns-search=[]            指定容器的dns搜索域名,写入到容器的/etc/resolv.conf文件   
  --entrypoint=""            覆盖image的入口点   
  --env-file=[]              指定环境变量文件,文件格式为每行一个环境变量   
  --expose=[]                指定容器暴露的端口,即修改镜像的暴露端口   
  --link=[]                  指定容器间的关联,使用其他容器的IP、env等信息   
  --lxc-conf=[]              指定容器的配置文件,只有在指定--exec-driver=lxc时使用   
  --name=""                  指定容器名字,后续可以通过名字进行容器管理,links特性需要使用名字   
  --net="bridge"             容器网络设置: 
                                bridge 使用docker daemon指定的网桥      
                                host    //容器使用主机的网络   
                                container:NAME_or_ID  >//使用其他容器的网路,共享IP和PORT等网络资源   
                                none 容器使用自己的网络(类似--net=bridge),但是不进行配置  
  --privileged=false         指定容器是否为特权容器,特权容器拥有所有的capabilities   
  --restart="no"             指定容器停止后的重启策略: 
                                no:容器退出时不重启   
                                on-failure:容器故障退出(返回值非零)时重启  
                                always:容器退出时总是重启   
  --rm=false                 指定容器停止后自动删除容器(不支持以docker run -d启动的容器)   
  --sig-proxy=true           设置由代理接受并处理信号,但是SIGCHLD、SIGSTOP和SIGKILL不能被代理 

运行Docker镜像

liuhz@ubuntu-SYS-7049GP-TRTC-RI017:~/Github/Naive2SOTA$ sudo docker run -it --rm --name abdomen --gpus all py38pt17:py17-cuda11 
[sudo] liuhz 的密码: 
root@f18029097471:/workspace# df -h
Filesystem      Size  Used Avail Use% Mounted on
overlay          39T  7.7T   29T  22% /
tmpfs            64M     0   64M   0% /dev
tmpfs            63G     0   63G   0% /sys/fs/cgroup
shm              64M     0   64M   0% /dev/shm
/dev/sda2        39T  7.7T   29T  22% /etc/hosts
tmpfs            63G   12K   63G   1% /proc/driver/nvidia
tmpfs            13G  3.9M   13G   1% /run/nvidia-persistenced/socket
udev             63G     0   63G   0% /dev/nvidia0
tmpfs            63G     0   63G   0% /proc/asound
tmpfs            63G     0   63G   0% /proc/acpi
tmpfs            63G     0   63G   0% /proc/scsi
tmpfs            63G     0   63G   0% /sys/firmware
root@f18029097471:/workspace# nvidia-smi
Thu Apr 28 06:40:10 2022       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 470.103.01   Driver Version: 470.103.01   CUDA Version: 11.4     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  NVIDIA GeForce ...  Off  | 00000000:18:00.0 Off |                  N/A |
| 30%   36C    P8    31W / 350W |  20587MiB / 24268MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
|   1  NVIDIA GeForce ...  Off  | 00000000:3B:00.0 Off |                  N/A |
| 67%   63C    P2   197W / 350W |  23631MiB / 24268MiB |     16%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
|   2  NVIDIA GeForce ...  Off  | 00000000:5E:00.0 Off |                  N/A |
| 30%   33C    P8    20W / 350W |      8MiB / 24268MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
|   3  NVIDIA GeForce ...  Off  | 00000000:86:00.0 Off |                  N/A |
| 30%   41C    P8    25W / 350W |      8MiB / 24268MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
+-----------------------------------------------------------------------------+

以交互式模式启动docker

docker container run --ipc=host -it --rm --gpus "device=0" --name nnunetv0 -v 本地path to/nnUNetData:/workspace/data nnunet_docker:v0 /bin/bash

$ sudo docker run --gpus all -it --rm --ipc=host -v /media/gy501/SSD/nnunet:/workspace/nnunet nvcr.io/nvidia/pytorch:20.09-py3

liuhz@ubuntu-SYS-7049GP-TRTC-RI017:~/Github/Naive2SOTA/nnUNetFrame/nnUNet$ sudo docker run --gpus all -it --rm --ipc=host -v /home/liuhz/Github/Naive2SOTA/nnUNetFrame/DATASET:/workspace/data nnunet_docker:v0 /bin/bash

$ docker run --gpus all -it --rm -v local_dir:container_dir nvcr.io/nvidia/pytorch:xx.xx-py3

参数解释:
-it means run in interactive mode 交互模式
--rm will delete the container when finished 在完成后删除容器
-v is the mounting directory 挂载目录
local_dir 是主机系统中您想要从容器中访问的目录或文件(绝对路径)。
container_dir 是本地目录是主机系统中您想要从容器中访问的目录或文件(绝对路径)。

整理数据集

参考结构树
nnUNet_raw_data_base/nnUNet_raw_data/Task002_Heart
├── dataset.json
├── imagesTr
│ ├── la_003_0000.nii.gz
│ ├── la_004_0000.nii.gz
│ ├── ...
├── imagesTs
│ ├── la_001_0000.nii.gz
│ ├── la_002_0000.nii.gz
│ ├── ...
└── labelsTr
├── la_003.nii.gz
├── la_004.nii.gz
├── ...

liuhz@ubuntu-SYS-7049GP-TRTC-RI017:~/Github/Naive2SOTA/nnUNetFrame/DATASET$ ls
nnUNet_cropped_data  nnUNet_preprocessed  nnUNet_raw_data  RESULTS_FOLDER

在nnUNet根目录下新建Dockerfile文件

FROM nvcr.io/nvidia/pytorch:21.08-py3
RUN apt-get update && apt-get install -y --no-install-recommends \
    python3-pip \
    python3-setuptools \
    build-essential \
    && \
    apt-get clean && \
    python -m pip install --upgrade pip

WORKDIR /workspace
COPY ./   /workspace

RUN pip install pip -U
RUN pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

RUN pip install -e .

ENV nnUNet_raw_data_base="/workspace/data"
ENV nnUNet_preprocessed="/workspace/data/nnUNet_preprocessed"
ENV RESULTS_FOLDER="/workspace/data/RESULTS_FOLDER"

运行docker build命令

docker构建后无法修改trainer等文件,因此需要在代码无误后再在docker中封装成镜像。

docker build -t nnunet_docker:v0 .

liuhz@ubuntu-SYS-7049GP-TRTC-RI017:~/Github/Naive2SOTA/nnUNetFrame/nnUNet$ sudo docker build -t nnunet_docker:v0 .

Successfully built 1810c476249c
Successfully tagged nnunet_docker:v0
liuhz@ubuntu-SYS-7049GP-TRTC-RI017:~/Github/Naive2SOTA/nnUNetFrame/nnUNet$ ls

删除多余的Docker

liuhz@ubuntu-SYS-7049GP-TRTC-RI017:~$ sudo docker rmi c9247429b447
Error response from daemon: conflict: unable to delete c9247429b447 (cannot be forced) - image has dependent child images

liuhz@ubuntu-SYS-7049GP-TRTC-RI017:~$ sudo docker image inspect --format='{{.RepoTags}} {{.Id}} {{.Parent}}' $(docker image ls -q --filter since=c9247429b447)

这里可以将build好的docker保存到本地分享给有需要的小伙伴,命令如下

docker image save nnunet_docker:v0 -o nnunet_dockerv0.tar.gz

liuhz@ubuntu-SYS-7049GP-TRTC-RI017:~/Github/Naive2SOTA/nnUNetFrame/nnUNet$ sudo docker image save nnunet_docker:v0 -o nnunet_dockerv0.tar.gz

数据集转换

nnU-Net希望得到结构化格式的数据集。这种格式遵循[Medical Segmentation Decthlon]的数据结构。

root@49f40e566e82:/workspace# nnUNet_convert_decathlon_task -i /workspace/data/nnUNet_raw_data/Task01_BrainTumour -p 5

报错处理

  1. SimpleITK
RuntimeError: Exception thrown in SimpleITK ImageFileReader_Execute: /tmp/SimpleITK-build/ITK/Modules/IO/NIFTI/src/itkNiftiImageIO.cxx:1980:
ITK ERROR: ITK only supports orthonormal direction cosines.  No orthonormal definition found!

解决方案:

root@046f5dac3535:/workspace# pip install SimpleITK==2.0
Traceback (most recent call last):
  File "/opt/conda/bin/nnUNet_train", line 11, in 
    load_entry_point('nnunet', 'console_scripts', 'nnUNet_train')()
  File "/workspace/nnunet/run/run_training.py", line 137, in main
    trainer_class = get_default_configuration(network, task, network_trainer, plans_identifier)
  File "/workspace/nnunet/run/default_configuration.py", line 59, in get_default_configuration
    trainer_class = recursive_find_python_class([join(*search_in)], network_trainer,
  File "/workspace/nnunet/training/model_restore.py", line 37, in recursive_find_python_class
    tr = recursive_find_python_class([join(folder[0], modname)], trainer_name, current_module=next_current_module)
  File "/workspace/nnunet/training/model_restore.py", line 37, in recursive_find_python_class
    tr = recursive_find_python_class([join(folder[0], modname)], trainer_name, current_module=next_current_module)
  File "/workspace/nnunet/training/model_restore.py", line 28, in recursive_find_python_class
    m = importlib.import_module(current_module + "." + modname)
  File "/opt/conda/lib/python3.8/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "", line 1014, in _gcd_import
  File "", line 991, in _find_and_load
  File "", line 975, in _find_and_load_unlocked
  File "", line 671, in _load_unlocked
  File "", line 783, in exec_module
  File "", line 219, in _call_with_frames_removed
  File "/workspace/nnunet/training/network_training/nnUNet_variants/data_augmentation/nnUNetTrainerV2_DA5.py", line 22, in 
    from batchgenerators.transforms.local_transforms import BrightnessGradientAdditiveTransform, LocalGammaTransform
  File "/opt/conda/lib/python3.8/site-packages/batchgenerators/transforms/local_transforms.py", line 21, in 
    from batchgenerators.utilities.custom_types import ScalarType, sample_scalar
  File "/opt/conda/lib/python3.8/site-packages/batchgenerators/utilities/custom_types.py", line 19, in 
    ScalarType = Union[Union[int, float], Tuple[float, float], Callable[[Any, ...], Union[float, int]]]
  File "/opt/conda/lib/python3.8/typing.py", line 816, in __getitem__
    return self.__getitem_inner__(params)
  File "/opt/conda/lib/python3.8/typing.py", line 261, in inner
    return func(*args, **kwds)
  File "/opt/conda/lib/python3.8/typing.py", line 839, in __getitem_inner__
    args = tuple(_type_check(arg, msg) for arg in args)
  File "/opt/conda/lib/python3.8/typing.py", line 839, in 
    args = tuple(_type_check(arg, msg) for arg in args)
  File "/opt/conda/lib/python3.8/typing.py", line 149, in _type_check
    raise TypeError(f"{msg} Got {arg!r:.100}.")
TypeError: Callable[[arg, ...], result]: each arg must be a type. Got Ellipsis.

Docker镜像上传

使用 docker login 命令登录账号

liuhz@ubuntu-SYS-7049GP-TRTC-RI017:~/Github/Naive2SOTA/nnUNetFrame/nnUNet$ sudo docker login -u harold2022
Password: 
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded

修改镜像 repository
上传镜像前我们必须通过 docker tag 命令修改镜像的 repository,使之与 Docker Hub 账号匹配。
Docker Hub 为了区分不同用户的同名镜像,镜像的 registry 中要包含用户名,完整格式为:[username]/xxx:tag

liuhz@ubuntu-SYS-7049GP-TRTC-RI017:~/Github/Naive2SOTA/nnUNetFrame/nnUNet$ docker tag nnunet_docker:v1 harold2022/nnunet_docker:v1
liuhz@ubuntu-SYS-7049GP-TRTC-RI017:~/Github/Naive2SOTA/nnUNetFrame/nnUNet$ sudo docker images -a
REPOSITORY                 TAG                               IMAGE ID       CREATED         SIZE
harold2022/nnunet_docker   v1                                3d969a290dd2   13 hours ago    26.1GB
nnunet_docker              v1                                3d969a290dd2   13 hours ago    26.1GB
nnunet_docker              v0                                e6e7950952e1   25 hours ago    13GB
newubuntu                  cuda10-ubuntu18                   0dd9ea953585   3 weeks ago     4.46GB
nvidia/cuda                10.2-cudnn8-devel-ubuntu18.04     0dd9ea953585   3 weeks ago     4.46GB
pytorch/pytorch            1.11.0-cuda11.3-cudnn8-devel      730572d0c0dd   7 weeks ago     13.7GB
hello-world                latest                            feb5d9fea6a5   7 months ago    13.3kB
nvidia/cuda                11.4.0-cudnn8-devel-ubuntu20.04   1885dcefbe89   7 months ago    9.01GB
py38pt17                   py17-cuda11                       f20d42e5d606   18 months ago   12GB
pytorch/pytorch            1.7.0-cuda11.0-cudnn8-devel       f20d42e5d606   18 months ago   12GB
nvidia/cuda                11.0-base                         2ec708416bb8   20 months ago   122MB
pytorch/pytorch            1.6.0-cuda10.1-cudnn7-devel       bb833e4d631f   21 months ago   7.04GB
liuhz@ubuntu-SYS-7049GP-TRTC-RI017:~/Github/Naive2SOTA/nnUNetFrame/nnUNet$ 

上传镜像
我们使用 docker push 命令将镜像上传到 Docker Hub:

liuhz@ubuntu-SYS-7049GP-TRTC-RI017:~/Github/Naive2SOTA/nnUNetFrame/nnUNet$ sudo docker push harold2022/nnunet_docker:v1
[sudo] liuhz 的密码: 
The push refers to repository [docker.io/harold2022/nnunet_docker]
643276880307: Layer already exists 
ebd73e86c645: Layer already exists 
0e00fb7958ca: Layer already exists 
271642b69e95: Layer already exists 
070cabc2eaa3: Layer already exists 
7ef887ba4a3f: Layer already exists 
36cd314e6807: Layer already exists 
3095ea55b1c9: Layer already exists 
626800c31be3: Layer already exists 
eca318b890fc: Layer already exists 
03aea7c9e3d1: Layer already exists 
53194dce1444: Layer already exists 
ef8330bcc944: Layer already exists 
964ee116c0c0: Layer already exists 
7a694df0ad6c: Layer already exists 
3fd9df553184: Layer already exists 
805802706667: Layer already exists 
v1: digest: sha256:a85255cc0ca5054cadc3a61a4ca8bd349c00c46586e5068776e07b8c99455b25 size: 3903

liuhz@ubuntu-SYS-7049GP-TRTC-RI017:~$ sudo docker tag 0b4ade9938b3 harold2022/upupup:latest
liuhz@ubuntu-SYS-7049GP-TRTC-RI017:~$ docker images -a
REPOSITORY                 TAG                               IMAGE ID       CREATED          SIZE
harold2022/upupup          latest                            0b4ade9938b3   18 minutes ago   13GB
upupup                     latest                            0b4ade9938b3   18 minutes ago   13GB
                                                 22b2e0fabf03   18 minutes ago   13GB
                                                 62c837db5edb   18 minutes ago   13GB
                                                 f18cef610392   18 minutes ago   13GB
                                                 ea43ffa240c0   21 minutes ago   12.1GB
                                                 95cefb54e0d8   21 minutes ago   12.1GB
                                                 50326d1bd31d   21 minutes ago   12.1GB
harold2022/nnunet_docker   v1                                3d969a290dd2   7 days ago       26.1GB
                                                 6a2fb0a04897   7 days ago       26.1GB
                                                 bdebb6388c26   7 days ago       26.1GB
                                                 54c8f6597ebe   7 days ago       26.1GB
                                                 cc735d7f6c7b   7 days ago       25.1GB
                                                 801398be2723   7 days ago       25.1GB
                                                 510fe98c4a00   7 days ago       25.1GB
                                                 e70a40183fc7   8 days ago       12.1GB
                                                 5efc50a43b80   8 days ago       12.1GB
nvidia/cuda                10.2-cudnn8-devel-ubuntu18.04     0dd9ea953585   4 weeks ago      4.46GB
pytorch/pytorch            1.11.0-cuda11.3-cudnn8-devel      730572d0c0dd   8 weeks ago      13.7GB
hello-world                latest                            feb5d9fea6a5   7 months ago     13.3kB
nvidia/cuda                11.4.0-cudnn8-devel-ubuntu20.04   1885dcefbe89   7 months ago     9.01GB
py38pt17                   py17-cuda11                       f20d42e5d606   18 months ago    12GB
pytorch/pytorch            1.7.0-cuda11.0-cudnn8-devel       f20d42e5d606   18 months ago    12GB
nvidia/cuda                11.0-base                         2ec708416bb8   20 months ago    122MB
pytorch/pytorch            1.6.0-cuda10.1-cudnn7-devel       bb833e4d631f   21 months ago    7.04GB

使用docker inspect查看获取容器/镜像的元数据。

liuhz@ubuntu-SYS-7049GP-TRTC-RI017:~/Github/Naive2SOTA/nnUNetFrame/nnUNet$ docker inspect harold2022/nnunet_docker:v1

                "RESULTS_FOLDER=/workspace/data/RESULTS_FOLDER"
            ],
            "Cmd": [
                "/bin/sh",
                "-c",
                "#(nop) ",
                "ENV RESULTS_FOLDER=/workspace/data/RESULTS_FOLDER"
            ],
            "ArgsEscaped": true,
            "Image": "sha256:6a2fb0a048974dba4e73dc573376489141e4a8c5fdce321417c0876130f97878",
            "Volumes": null,
            "WorkingDir": "/workspace",
            "Entrypoint": null,
            "OnBuild": null,
            "Labels": {
                "com.nvidia.cudnn.version": "8.0.4.30",
                "com.nvidia.volumes.needed": "nvidia_driver",
                "maintainer": "NVIDIA CORPORATION "
            }
        },
        "DockerVersion": "20.10.14",
        "Author": "",
        "Config": {
            "Hostname": "",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "PATH=/opt/conda/bin:/usr/local/nvidia/bin:/usr/local/cuda/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
                "CUDA_VERSION=11.0.3",
                "LD_LIBRARY_PATH=/usr/local/nvidia/lib:/usr/local/nvidia/lib64",
                "NVIDIA_VISIBLE_DEVICES=all",
                "NVIDIA_DRIVER_CAPABILITIES=compute,utility",
                "NVIDIA_REQUIRE_CUDA=cuda>=11.0 brand=tesla,driver>=418,driver<419 brand=tesla,driver>=440,driver<441 brand=tesla,driver>=450,driver<451",
                "NCCL_VERSION=2.7.8",
                "LIBRARY_PATH=/usr/local/cuda/lib64/stubs",
                "CUDNN_VERSION=8.0.4.30",
                "nnUNet_raw_data_base=/workspace/data",
                "nnUNet_preprocessed=/workspace/data/nnUNet_preprocessed",
                "RESULTS_FOLDER=/workspace/data/RESULTS_FOLDER"
            ],
            "Cmd": [
                "/bin/bash"
            ],
            "ArgsEscaped": true,
            "Image": "sha256:6a2fb0a048974dba4e73dc573376489141e4a8c5fdce321417c0876130f97878",
            "Volumes": null,
            "WorkingDir": "/work
            "OnBuild": null,
            "Labels": {
                "com.nvidia.cudnn.version": "8.0.4.30",
                "com.nvidia.volumes.needed": "nvidia_driver",
                "maintainer": "NVIDIA CORPORATION "
            }
        },
        "Architecture": "amd64",
        "Os": "linux",
        "Size": 26078928961,
        "VirtualSize": 26078928961,
        "GraphDriver": {
            "Data": {
                "LowerDir": "/home/liuhz/Docker/docker/overlay2/28186cee9d33535607cfeb6460abe79815e0aaa5dc87a61019d8eb8979f1ac65/diff:/home/liuhz/Docker/docker/overlay2/e9f8958fa885a660b3810090561dbc9f8d770ae93569fbbc646d13792ca25f84/diff:/home/liuhz/Docker/docker/overlay2/0552dab98d60a7ff100ea98cbcd0d58c7cef63eb0a16cd0a2408b7b3805c33c6/diff:/home/liuhz/Docker/docker/overlay2/8659fa72951cae20fe2428d901fe62f31ea3cb00758d4c53bf0384fb4ac499cb/diff:/home/liuhz/Docker/docker/overlay2/78a26bf9a42f4d7d7d4de8d071a7c6d47a279515a1ed8e38f1174e47e0c4e20c/diff:/home/liuhz/Docker/docker/overlay2/2ae3477c80524bcf3c4e861e06c0dc7faa708117fee5c8f7038a109ff5c31728/diff:/home/liuhz/Docker/docker/overlay2/620c6d7600b0736a6127c6e934139318eb755ff0c378cc9b29c037ddd764fb6d/diff:/home/liuhz/Docker/docker/overlay2/2c9c66a127e9a9681f97e0aa2df49cedd027a095b54d7b4c08fa46de443ebfde/diff:/home/liuhz/Docker/docker/overlay2/3fe47706f787822b6cb9e2f9562a5290b30d12e2614c99b5508aca1fd5a7a333/diff:/home/liuhz/Docker/docker/overlay2/11b2792517edb821cb67613e9fa78f356ee23343f65d530ec55eb4a465b8a31c/diff:/home/liuhz/Docker/docker/overlay2/b04163a448a30b4c5d4b651738a15e1afb507999293af14cd241c643b9efc010/diff:/home/liuhz/Docker/docker/overlay2/1ffcf4b75a3e1795d0d21954b8d83e77ee7b2bb7ab22509ab5f8fa0998e8a0bb/diff:/home/liuhz/Docker/docker/overlay2/866db32fdda605d08096ca4507874efcf4ba96fdbc6ac55fb1608fc4a55e055b/diff:/home/liuhz/Docker/docker/overlay2/f951c45ae456995f58a3a5913a26491648aba4850ef4102aac2056876154c764/diff:/home/liuhz/Docker/docker/overlay2/067882aa81a605b0cca989105319c6f7a951fd73fa8037210093aca18d09e344/diff:/home/liuhz/Docker/docker/overlay2/bed16741e4f4c4134a759a3ad76b6a658b2bf5f7a4fdaedb7e862ead5855ead7/diff",
                "MergedDir": "/home/liuhz/Docker/docker/overlay2/8c853d82ff068200c6ae208fb3697f144937330db9c10bf3bcf02d7c16d50622/merged",
                "UpperDir": "/home/liuhz/Docker/docker/overlay2/8c853d82ff068200c6ae208fb3697f144937330db9c10bf3bcf02d7c16d50622/diff",
                "WorkDir": "/home/liuhz/Docker/docker/overlay2/8c853d82ff068200c6ae208fb3697f144937330db9c10bf3bcf02d7c16d50622/work"
            },
            "Name": "overlay2"
        },
        "RootFS": {
            "Type": "layers",
            "Layers": [
                "sha256:80580270666742c625aecc56607a806ba343a66a8f5a7fd708e6c4e4c07a3e9b",
                "sha256:3fd9df55318470e88a15f423a7d2b532856eb2b481236504bf08669013875de1",
                "sha256:7a694df0ad6cc5789a937ccd727ac1cda528a1993387bf7cd4f3c375994c54b6",
                "sha256:964ee116c0c06f2be7ceb6566e485b7472872b539d4b9ecea731b67966fb7191",
                "sha256:ef8330bcc94457526bfc5b5bf658cc70f80c4ea82d6e1d93e28526885efff564",
                "sha256:53194dce14446627b1f9915d27c925d43d52e84660ea0f19a858de28de4b89cb",
                "sha256:03aea7c9e3d145201f821a5f386d3f1dc425d91c7c5ef60d94f1f7fd06a848aa",
                "sha256:eca318b890fc4b51d716a54873f818d1211c7c19b0bd8c8e83c56972fa5dd717",
                "sha256:626800c31be3fd6f5141b96023332dfbf8e2884e6bdd61644470710dc90c8b58",
                "sha256:3095ea55b1c97e8ba399be67974e17cadc11b502693ea44cb0cb81455b61cdc2",
                "sha256:36cd314e68078461474e2ac400e52ff8d868ec9abc3accd0d84fe446924d67e4",
                "sha256:7ef887ba4a3ff2d8e75b3ea8478a7c34e7322b3e180bc69c7bc8e5734d6f904b",
                "sha256:070cabc2eaa36d1ed3e8dd41ba970e17f84f3ca008c1828e14d07900d8fb3d22",
                "sha256:271642b69e955b22563a1029957184495f5e06c9e0494eec22685ce76a051b91",
                "sha256:0e00fb7958ca784b4ec5ebb9cefdc87372d3824e4fc5bf7a92ed1b79322d41e9",
                "sha256:ebd73e86c6451e75575b28ab14298435455692d673fc5da24acb5fdbcf2754ca",
                "sha256:643276880307e2d04f41e0d687e36154c95301b2aefb4be3bf9fbb6a777aa030"
            ]
        },
        "Metadata": {
            "LastTagTime": "2022-04-29T16:21:11.642126059+08:00"
        }
    }
]

你可能感兴趣的:(Docker训练nnUNet)