docker 镜像使用

获取镜像:

docker pull

使用 docker pull <image_name:tag> 从 “仓库” 中获取镜像

# tag为空的话默认为 latest
比如 docker pull ubuntu,默认拉取的镜像版本为 ubuntu:latest

root@chenjx12:~/dc# docker pull ubuntu
Using default tag: latest
latest: Pulling from library/ubuntu
eda6120e237e: Pull complete 
Digest: sha256:b359f1067efa76f37863778f7b6d0e8d911e3ee8efa807ad01fbf5dc1ef9006b
Status: Downloaded newer image for ubuntu:latest
docker.io/library/ubuntu:latest

这里就是从仓库中拉取到了官方的镜像 ubuntu:latest

# 批量拉取 docker pull -a/--all-tags ubuntu
批量拉取会拉取所有标签的ubuntu

# 怎么拉取别人的镜像
docker pull user/repo:tag
拉取用户名为user标签为tag的repo镜像

那么要怎么知道我们拉取的镜像仓库里有没有我们要的那个版本的镜像呢

docker search

使用  docker search images  可以在仓库中搜索名为images的镜像

常用的一些选项:
-f/--filter 添加条件搜索
--limit 限制搜索出的结果数量,默认为25条
--no-trunc 不截断输出,显示完整的镜像描述

eg:
docker search --limit 5 ubuntu  只显示前5个搜索结果

docker search -f "is-offical=true" ubuntu  只显示官方镜像
docker search --filter "is-automated=true" ubuntu 只显示自动化构建的镜像
docker search -f "stars=100" ubuntu  只显示拥有超过100星标的镜像

使用docker search得到搜寻结果之后就能够知道哪些镜像有,哪些没有

一般推荐下载星标最多的官方镜像,因为你也不知道别人上传的乱七八糟的镜像里有什么东西

列出镜像

可以在终端输入 docker images 来列出本地的镜像

root@chenjx12:~/dc# docker images
REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
ubuntu        latest    61b2756d6fa9   2 weeks ago     78.1MB
nginx         latest    9527c0f683c3   6 weeks ago     188MB
ubuntu        20.04     9df6d6105df2   7 weeks ago     72.8MB
hello-world   latest    d2c94e258dcb   17 months ago   13.3kB
ubuntu        15.10     9b9cb95443b5   8 years ago     137MB

# 各项属性说明
REPOSITORY:表示镜像的仓库源
TAG:镜像的标签
IMAGE ID:镜像ID
CREATED:镜像创建时间
SIZE:镜像大小

用镜像跑个容器

见容器使用–启动容器

镜像导入/导出

docker save/load

docker save 命令用于将一个或多个镜像保存为一个 tarball 文件。与 docker export 不同的是,docker save 保存的是镜像而不是容器,并且会保存镜像的所有历史记录和层信息

docker save -o myimage.tar myimage 保存单个镜像

docker save -o myimages.tar myimage1 myimage2 将 myimage 或 myimage1 和 myimage2 镜像保存到 myimage.tar 文件中

docker load 命令用于从 tarball 文件中加载一个或多个镜像。与 docker import 不同的是,docker load 会恢复镜像的所有历史记录和层信息

docker load < myimage.tar

docker load -i myimage.tar

注意:

  • docker save 和 docker load 保存和加载的是镜像,包括所有层和历史信息。
  • docker export 和 docker import 保存和加载的是容器快照,不包括历史信息,只有一个压缩的文件系统。

因此,如果你需要保存一个镜像及其所有层,以便在其他 Docker 主机上使用,你应该使用 docker save 和 docker load。如果你只是需要从一个容器创建一个新的镜像,而不需要保存层信息,那么可以使用 docker export 和 docker import

删除镜像

docker rmi

即 docker rm (image)

docker rmi [image_id]
docker rmi [image_name]:[tag]

# 强行删除,比如有容器正在使用该镜像
docker rmi -f [image_id]
# 删除所有未标记的镜像,有时候,你会有一些未标记或未使用的镜像,可以使用以下命令清理:
docker image prune
# 删除所有
docker rmi -f $(docker images -q)