Ubuntu系统中docker本地镜像的位置

本文详细介绍了在Ubuntu 16.04系统中,Docker本地镜像的存储路径及文件结构。通过查看`/var/lib/docker/image/aufs/`目录下的`repositories.json`、`imagedb/content`和`layerdb`,以及`/var/lib/docker/aufs/diff`目录,揭示了镜像ID与实际镜像文件之间的关联,帮助理解Docker镜像在aufs文件系统中的存储方式。

Ubuntu 16.04

Dockerversion 1.12.6, build 78d1802

 

从官方库pull一个镜像:docker pull ubuntu:14.04

一、在image文件夹中寻找

1.找到镜像库的文件

首先看repositories.json中的数据

root@ubuntu:/var/lib/docker#cat /var/lib/docker/image/aufs/repositories.json | python -mjson.tool

{

    "Repositories": {

        "ubuntu": {

            "ubuntu:14.04":"sha256:4a2820e686c449bc943eab8492df4b4eb7f7e8fabda5258d7bc551fec5790436",

           "ubuntu@sha256:5faf6cb681da2be979a177b60d8c18497f962e3d82268c49db6c74008d0c294d":"sha256:4a2820e686c449bc943eab8492df4b4eb7f7e8fabda5258d7bc551fec5790436"

        }

    }

}

看看,是不是正好和docker images的内容一致呢

root@ubuntu:/var/lib/docker#docker images

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

ubuntu              14.04              4a2820e686c4        3 weeks ago         188 MB

 

 

2.找到镜像描述文件

/var/lib/docker/image/aufs/imagedb/content/sha256/4a2820e686c449bc943eab8492df4b4eb7f7e8fabda5258d7bc551fec5790436

是一个json文件我们只截取了部分:

"rootfs":{

        "type": "layers",

        "diff_ids": [

            "sha256:9669d6b7338336d92ca8e8e5bb90a4a35a934d1c94017322bef35a838615b4ea",

           "sha256:f5cfc06b640d49f4e5b0778531394ed4819d8824c46cbc21481f5531db35d970",

           "sha256:768dcfe5d05fd2355facaacaf64a45e84ac4c6b895f335ee02f322a35e912d80",

           "sha256:d0757a6730d0f8242d131bdb86df046fbd5eb6e3a04328aa10e8881166101a94",

           "sha256:d649a240e4537a905c43c0f9fd7bfa3f3cbe693b963e838eb6e84065b57aae3d"

        ]

    }

 

3.找到镜像文件的layerdb

root@ubuntu:/var/lib/docker#ls /var/lib/docker/image/aufs/layerdb/sha256

76f1e34d1d2f369222db0aababcfe88a86e7773289ee479aa8a37db2dbc1ae78

7bb5a611d10e491eda648224aeb1466d7e7c99b4dc73c30acf01f303159e7405

9669d6b7338336d92ca8e8e5bb90a4a35a934d1c94017322bef35a838615b4ea

c872fbb3ed98d37a6abeebcfa16316bde7adafafabb8c7ff66a1ba53aa29f0bc

ddc772e5acb244ff1a1ddc32c6fbe5687b68c26090ce85e1855022ac6afcefbc

 

查看文件夹中文件

root@ubuntu:/var/lib/docker#ls /var/lib/docker/image/aufs/layerdb/sha256/9669d6b7338336d92ca8e8e5bb90a4a35a934d1c94017322bef35a838615b4ea/

cache-id  diff size  tar-split.json.gz

 

查看cache-id中内容:

b1c8bba6bd247accbc8082a4c46aa129e2b6489bd9bffe08387e50b43a08e1cd

 

二、在aufs文件夹中寻找

cache-id中数据对应aufs/diff文件夹下一个文件

root@ubuntu:/var/lib/docker#ls /var/lib/docker/aufs/diff

045a5f72741ab97228e00f1c8bd7d67b682e12c30def9efec769188e1deb9a56

8444bf1d9f50bf52f649d6e27d94a1fad34e7022e1ae27396b02cafaeb4d37bc

b1c8bba6bd247accbc8082a4c46aa129e2b6489bd9bffe08387e50b43a08e1cd

caba5c4f6a8438d54f4045d06afe9d06ad6c44d7db5bf355d36a18c0fd29d5d3

d04b500544d2efcb8e7e5feb8d37c405360fc9807f272c93eb3fd8cd735a13c5

 

我们看一下b1c8bba6bd247accbc8082a4c46aa129e2b6489bd9bffe08387e50b43a08e1cd中内容

root@ubuntu:/var/lib/docker#ls/var/lib/docker/aufs/diff/b1c8bba6bd247accbc8082a4c46aa129e2b6489bd9bffe08387e50b43a08e1cd/

bin   dev home  lib64  mnt proc  run   srv tmp  var boot  etc lib   media  opt root  sbin  sys usr

 

docker镜像的存储路径为/var/lib/docker/aufs/

上面的逻辑不严谨,仅仅记录自己寻找daocker镜像存储的位置的过程。旨在寻找镜像idaufs文件夹下的镜像文件之间的联系。

ubuntu16.04中的docker使用的是aufs文件系统,可以通过了解aufs文件系统来了解镜像描述文件和真正的镜像存储位置的关联。

<think>好的,用户想在Ubuntu中学习如何将镜像载入Docker,需要提供一个教程。首先,我需要回忆Docker中加载镜像的常用命令和相关步骤。根据之前的引用内容,用户可能已经了解了一些Docker的基本操作,比如构建镜像和运行容器。但加载镜像可能涉及保存和导入的操作。 首先,用户可能需要知道如何将现有的镜像保存为文件,然后再加载到另一个系统中。根据Docker的常用命令,`docker save`和`docker load`是用于处理镜像的导出和导入的。而`docker export`和`docker import`则是针对容器的,但用户的问题是关于镜像的,所以重点应该在save和load上。 接下来,我需要确保步骤正确。首先,保存镜像为tar文件,使用`docker save -o`命令。然后,在目标机器上使用`docker load -i`来加载。需要提醒用户注意镜像名称和标签的问题,因为保存和加载可能会影响这些信息。此外,用户可能需要知道如何验证镜像是否正确加载,使用`docker images`来查看。 另外,用户提到的是Ubuntu系统,所以命令前可能需要sudo,但这也取决于用户的Docker安装方式。引用3中提到了使用sudo和nvidia-docker的例子,所以可能需要提醒用户根据权限情况添加sudo。 还需要考虑用户可能的其他需求,比如从其他来源加载镜像,或者加载后如何运行容器。例如,引用3中的运行命令包括挂载目录和GPU支持,用户可能在加载镜像后需要运行容器,这部分可以作为补充说明。 最后,生成相关问题,帮助用户深入理解。例如,导出和导入容器的区别,如何保存特定版本的镜像,或者如何处理加载后的镜像运行问题。这些问题可以引导用户进一步探索Docker的使用。</think>### Ubuntu系统Docker镜像载入完整教程 #### 一、镜像载入方法 通过`docker load`命令可加载预先保存的镜像包,具体操作步骤如下: 1. **定位镜像文件**(支持.tar/.tar.gz格式) ```bash ls -lh /path/to/image_file.tar # 查看镜像文件信息 ``` 2. **执行镜像加载** ```bash sudo docker load -i /path/to/image_file.tar # 需要管理员权限[^3] ``` 3. **验证载入结果** ```bash sudo docker images # 查看已载入的镜像列表 ``` #### 二、镜像打包与传输 若需在不同主机间迁移镜像,建议使用以下工作流: ``` 源主机:docker save > 镜像文件 > 目标主机:docker load ``` 1. **打包镜像**(在源主机执行) ```bash sudo docker save -o ubuntu_custom.tar <镜像名>:<标签> # 支持多标签打包[^4] ``` 2. **传输文件** ```bash scp ubuntu_custom.tar user@target_host:/target_path # 使用SCP跨主机传输 ``` #### 三、镜像运行示例 加载后可创建容器进行测试(支持GPU挂载): ```bash sudo docker run -it --gpus all ubuntu_custom:latest # 启动交互式容器[^3] ``` #### 四、常见问题排查 | 现象 | 解决方案 | |------|----------| | "permission denied" | 在命令前添加`sudo`或配置docker用户组[^3] | | 镜像标签丢失 | 使用`docker tag`命令重建标签关联 | | 加载速度慢 | 检查文件完整性:`du -sh image_file.tar` |
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值