image(镜像)
更新时间:2023-12-13阅读整篇大约5分钟
前言
-
Docker把应用程序及其依赖打包在image文件里面。 只有通过这个文件,才能生成 Docker 容器。image 文件可以看作是容器的模板。Docker 根据 image 文件生成容器的实例。同一个 image 文件,可以生成多个同时运行的容器实例。
-
image 是二进制文件。实际开发中,一个 image 文件往往通过继承另一个 image 文件,加上一些个性化设置而生成。举例来说,你可以在 Ubuntu 的 image 基础上,往里面加入 Apache 服务器,形成你的 image。
-
image 可以理解为一个app store 上的app(模板),提供下载,但只有下载到手机上(容器实例)才能使用
查看image
shell
docker image ls # 查看image
# docker images 和docker image ls 是同一个指令的两种写法
# 可选项
-a # 列出所有镜像
-q # 只显示镜像ID
筛选image
sh
docker images -f reference=xxx # 这里的xxx表示镜像名,
# 如果想模糊搜索,当存在/或小数点符号时,需要单独写出
# 例如想同时筛选到la/ye/im和ds/dc/im,则
docker images -f reference=*/*/im
搜索image
dockerfile
docker search xxx
# 可选项
--filter=STARS=3000 # 搜索出来的镜像的stars大于3000
拉取一个image(docker image pull | docker pull)
docker image pull
是抓取 image 文件的命令,我们可以用该命令拉取一个Docker Hub 的image
sh
docker image pull library/hello-world
# library/hello-world是 image 文件在仓库里面的位置,其中library是 image 文件所在的组,hello-world是 image 文件的名字。
# 由于 Docker 官方提供的 image 文件,都放在library组里面,所以它的是默认组,可以省略。
# docker image pull hello-world[:tag]
拉取完成之后可以执行docker image ls
查看拉取的image
删除image
sh
docker image rm [imageName | id] # 删除image 也可以简写 docker rmi [容器id]
docker rmi -f $(docker image ls -aq) # 配合查询命令 可以将所有镜像都删除
# 可选项
-f # 强制删除
关联镜像
dockerfile
docker tag <image-name:tag>|id <username>/<repository>:<tag>
推送镜像至docker源服务器
在push之前,如果本地的镜像和仓库的镜像并未关联,需要先docker tag进行关联
sh
docker image push [username]/[repository]:[tag]
创建image
commit方式(容器->image)
保存当前容器的状态,可以通过commit来进行提交,获得一个新镜像
sh
docker commit -m="描述" -a="作者" 容器Id 目标镜像名:[tag]
dockerFile(0->image)
通过dockerFile配置文件来创建一个镜像
在默认情况下,如果不额外指定
Dockerfile
的话,会将上下文目录下的名为Dockerfile
的文件作为 Dockerfile
sh
docker build -t name:[tag] -f ./dockerFile . # 最后的.指定的是上下文的目录
docker build github.com/creack/docker-firefox # 使用URL github.com/creack/docker-firefox 的 Dockerfile 创建镜像。
# 可选项
-t # 设置镜像名字和标签
-f # 设置dockerFile文件路径
save
将指定镜像保存成 tar 归档文件
sh
docker save -o my_tar.tar imageName:tag
# -o 输出到的文件
load
导入使用 docker save
命令导出的镜像
不能对载入的镜像重命名
sh
docker load < busybox.tar.gz # docker load --input fedora.tar
# --input , -i : 指定导入的文件,代替 STDIN。
import
从归档文件中创建镜像。
能对载入的镜像重命名
sh
docker import my_ubuntu_v3.tar runoob/ubuntu:v4 # 从镜像归档文件my_ubuntu_v3.tar创建镜像,命名为runoob/ubuntu:v4