docker 镜像常用操作详解

401 阅读2分钟

这是我参与8月更文挑战的第5天,活动详情查看:8月更文挑战

镜像的导入和导出在实际使用中主要为了解决无法访问外网的情况下,安装部署 docker 镜像的目的。 Docker 提供了 docker savedocker load 命令,用以将镜像保存为一个文件,然后传输到另一个位置上,再加载进来。 离线安装 docker 可以参考另一篇文章 :https://juejin.cn/post/6992341941656485924

1. 列举镜像

列举镜像

$ docker image ls

查看镜像、容器、数据卷所占用的空间

$ docker system df
TYPE                TOTAL               ACTIVE              SIZE                RECLAIMABLEImages              24                  0                   1.992GB             1.992GB (100%)Containers          1                   0                   62.82MB             62.82MB (100%)Local Volumes       9                   0                   652.2MB             652.2MB (100%)Build Cache                                                 0B                  0B

2. 导出镜像

比如保存这个 srs 镜像:

$ docker image ls srs
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
srs                latest              baa5d63471ea        5 weeks ago         4.803 MB

保存镜像:

$ docker save srs -o filename.xxx
$ file filename.xxx
filename: POSIX tar archive

这里的 filename.xxx 可以为任意名称+任意后缀名,如 srs-latest.tar ,但文件的本质都是归档文件

若使用 gzip 压缩:

$ docker save srs | gzip > srs-latest.tar.gz

如果同名则会覆盖(没有警告)

3. 导入镜像

然后我们将 srs-latest.tar.gz 文件复制到了到了另一台机器上,再导入镜像:

$ docker load -i srs-latest.tar.gz
======================================>
Loaded image: srs:latest

这种方式主要为了实现离线加载镜像的需求,但并不推荐使用。镜像迁移更推荐使用仓库 Docker Registry

4. 删除镜像

删除本地的镜像,可以使用 docker image rm 命令,其格式为:

$ docker image rm [选项] <镜像1> [<镜像2> ...]

批量清理临时镜像文件

$ docker image prune

5、镜像仓库

如果构建好的镜像每次都需要重新构建肯定会发现很麻烦,这时候可以使用 镜像仓库

仓库是集中存放镜像的地方。一个容易混淆的概念是注册服务器(Registry),实际上注册服务器是管理仓库的具体服务器,每个服务器上可以有多个仓库,而每个仓库下面有多个镜像。从这方面来说,仓库可以被认为是一个具体的项目或目录。

例如对于仓库地址 registry.cn-hangzhou.aliyuncs.com/d-cloud/srs 来说

  • registry.cn-hangzhou.aliyuncs.com 是注册服务器地址
  • d-cloud 是仓库名
  • srs 是镜像

大部分时候,并不需要严格区分这两者的概念。

每次构建镜像时,需要花费大量的时间,有了仓库后,就不需要再次构建,直接下载镜像就行了。可以通过 docker pull 命令来将它下载到本地直接部署即可。