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)