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 <module>
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 "<frozen importlib._bootstrap>", line 1014, in _gcd_import
File "<frozen importlib._bootstrap>", line 991, in _find_and_load
File "<frozen importlib._bootstrap>", line 975, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 671, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 783, in exec_module
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
File "/workspace/nnunet/training/network_training/nnUNet_variants/data_augmentation/nnUNetTrainerV2_DA5.py", line 22, in <module>
from batchgenerators.transforms.local_transforms import BrightnessGradientAdditiveTransform, LocalGammaTransform
File "/opt/conda/lib/python3.8/site-packages/batchgenerators/transforms/local_transforms.py", line 21, in <module>
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 <module>
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 <genexpr>
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
<none> <none> 22b2e0fabf03 18 minutes ago 13GB
<none> <none> 62c837db5edb 18 minutes ago 13GB
<none> <none> f18cef610392 18 minutes ago 13GB
<none> <none> ea43ffa240c0 21 minutes ago 12.1GB
<none> <none> 95cefb54e0d8 21 minutes ago 12.1GB
<none> <none> 50326d1bd31d 21 minutes ago 12.1GB
harold2022/nnunet_docker v1 3d969a290dd2 7 days ago 26.1GB
<none> <none> 6a2fb0a04897 7 days ago 26.1GB
<none> <none> bdebb6388c26 7 days ago 26.1GB
<none> <none> 54c8f6597ebe 7 days ago 26.1GB
<none> <none> cc735d7f6c7b 7 days ago 25.1GB
<none> <none> 801398be2723 7 days ago 25.1GB
<none> <none> 510fe98c4a00 7 days ago 25.1GB
<none> <none> e70a40183fc7 8 days ago 12.1GB
<none> <none> 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 <cudatools@nvidia.com>"
}
},
"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 <cudatools@nvidia.com>"
}
},
"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"
}
}
]
网友评论