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
报错处理
- 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"
}
}
]