镜像简介
镜像是一个Docker的可执行文件,其中包括运行应用程序所需的所有代码内容、依赖库、环境变量和配置文件等;也可以通过镜像创建一个或多个容器。
(可以类比Ubuntu系统镜像、软件镜像之类)
镜像管理
镜像下载
命令格式
docker pull [OPTIONS] NAME[:TAG|@DIGEST]
作用
下载远程仓库中的镜像
使用演示
1.下载ubuntu镜像,发现默认使用的latest标签的镜像
xiaoran@cjdll:~$ docker pull ubuntu
Using default tag: latest
latest: Pulling from library/ubuntu
76769433fd8a: Pull complete
Digest: sha256:2adf22367284330af9f832ffefb717c78239f6251d9d0f58de50b86229ed1427
Status: Downloaded newer image for ubuntu:latest
docker.io/library/ubuntu:latest
2下载Ubuntu 22.04镜像
xiaoran@cjdll:~$ docker pull ubuntu:22.04
22.04: Pulling from library/ubuntu
Digest: sha256:2adf22367284330af9f832ffefb717c78239f6251d9d0f58de50b86229ed1427
Status: Downloaded newer image for ubuntu:22.04
docker.io/library/ubuntu:22.04
镜像查看
命令格式
docker images [OPTIONS] [REPOSITORY[:TAG]]
作用
列出本地镜像
使用演示
1.查看本地所有镜像
xiaoran@cjdll:~$ docker images -a
镜像名称 镜像标签 镜像id 创建时间 镜像大小
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu 22.04 74f2314a03de 2 days ago 77.8MB
ubuntu latest 74f2314a03de 2 days ago 77.8MB
debian latest 72b624312240 2 days ago 124MB
2.docker images命令支持通配符
xiaoran@cjdll:~$ docker images deb*
REPOSITORY TAG IMAGE ID CREATED SIZE
debian latest 72b624312240 2 days ago 124MB
xiaoran@cjdll:~$ docker images ubu*
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu 22.04 74f2314a03de 2 days ago 77.8MB
ubuntu latest 74f2314a03de 2 days ago 77.8MB
3.查看指定版本,指定tag
xiaoran@cjdll:~$ docker images ubuntu:22.04
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu 22.04 74f2314a03de 2 days ago 77.8MB
镜像搜索
命令格式
docker search [OPTIONS] TERM
作用
搜索Docker Hub(镜像仓库)上的镜像
使用示例
xiaoran@cjdll:~$ docker search ubuntu
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
ubuntu Ubuntu is a Debian-based Linux operating sys… 15667 [OK]
websphere-liberty WebSphere Liberty multi-architecture images … 292 [OK]
open-liberty Open Liberty multi-architecture images based… 58 [OK]
镜像删除
命令格式
docker rmi [OPTIONS] IMAGE [IMAGE...]
作用
删除一个或者多个镜像
演示
删除debian镜像,通过镜像名称
xiaoran@cjdll:~$ docker rmi debian
Untagged: debian:latest
Untagged: debian@sha256:f81bf5a8b57d6aa1824e4edb9aea6bd5ef6240bcc7d86f303f197a2eb77c430f
Deleted: sha256:72b6243122405be2c5c5e7e20d410f4c8fe301e1ce84cc60ea591b63167750e6
Deleted: sha256:cf2e8433dbf248a87d49abe6aa4368bb100969be2267db02015aa9c38d7225ed
2.通过镜像id删除debian 10版本
#查找debian 10 镜像id
xiaoran@cjdll:~$ docker images -a
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu 22.04 74f2314a03de 2 days ago 77.8MB
ubuntu latest 74f2314a03de 2 days ago 77.8MB
debian 10 f03c282363a3 2 days ago 114MB
#删除镜像id时,rmi后面加上镜像id
xiaoran@cjdll:~$ docker rmi f03c282363a3
Untagged: debian:10
Untagged: debian@sha256:2d356e1e22c0902f88ef65cb7159ecd5a96feb62345747edfd4324b0d83a2923
Deleted: sha256:f03c282363a3e8103837d375c8b96a55127c214229142a39022a95262a96f5fb
Deleted: sha256:77d93c617a90f9e3aadfe9a5913d628c22c234551bc34b1533bae5cc90458b89
3.当两个镜像id相同时,可以指定tag删除,如果通过镜像id删除时,会报错Error response from daemon: conflict: unable to delete 74f2314a03de (must be forced) - image is referenced in multiple repositories
#发现ubuntu的两个镜像id相同
xiaoran@cjdll:~$ docker images -a
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu 22.04 74f2314a03de 2 days ago 77.8MB
ubuntu latest 74f2314a03de 2 days ago 77.8MB
#镜像id方式,会报错
xiaoran@cjdll:~$ docker rmi 74f2
Error response from daemon: conflict: unable to delete 74f2314a03de (must be forced) - image is referenced in multiple repositories
# 通过指定tag方式删除
xiaoran@cjdll:~$ docker rmi ubuntu:latest
Untagged: ubuntu:latest
#再次查看镜像,发现latest已经删除
xiaoran@cjdll:~$ docker images -a
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu 22.04 74f2314a03de 2 days ago 77.8MB
镜像保存备份
命令格式
docker save [OPTIONS] IMAGE [IMAGE...]
作用
将本地的一个或多个镜像打包保存成本地tar文件(输出到STDOUT)
演示
通过镜像id、镜像名称的方式,将ubuntu22.04和debian一起打包,并保存到本地/demo/linux.tar
;不推荐镜像id方式打包。
#查看镜像id
xiaoran@cjdll:~$ docker images -a
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu 22.04 74f2314a03de 2 days ago 77.8MB
debian latest 72b624312240 2 days ago 124MB
xiaoran@cjdll:~$ sudo docker save -o /demo/linux.tar 74f23 debian
# 查看目标文件是否生成
xiaoran@cjdll:~$ ls /demo/
linux.tar
镜像备份导入
命令格式
docker load [OPTIONS]
作用
将save命令打包的镜像导入本地镜像库
演示
导入上一步备份的镜像
xiaoran@cjdll:~$ sudo docker load -i /demo/linux.tar
202fe64c3ce3: Loading layer 80.33MB/80.33MB
cf2e8433dbf2: Loading layer 129.3MB/129.3MB
Loaded image: debian:latest
查看导入的镜像
xiaoran@cjdll:~$ docker images -a
REPOSITORY TAG IMAGE ID CREATED SIZE
<none> <none> 74f2314a03de 2 days ago 77.8MB
debian latest 72b624312240 2 days ago 124MB
发现镜像id为74f2314a03de
的镜像的TAG 和 REPOSITORY变成了none,这是因为由于保存备份时是通过镜像id方式的,会导致这样,可以通过tag或者镜像名称,避免编程none,或者可以重命名镜像名称
镜像重命令
命令格式
docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
作用
对本地镜像的NAME、TAG进行重命名,并产生一个命令后镜像
演示
将镜像id为74f2314a03de的镜像重命名为ubuntu latest
xiaoran@cjdll:~$ docker tag 74f ubuntu:latest
xiaoran@cjdll:~$ docker images -a
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest 74f2314a03de 2 days ago 77.8MB
debian latest 72b624312240 2 days ago 124MB
将debian镜像,重命名为debian 11
xiaoran@cjdll:~$ docker tag debian debian:11
#发现重命名镜像后,是生成了一个新的目标镜像,并不是覆盖原有镜像
xiaoran@cjdll:~$ docker images -a
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest 74f2314a03de 2 days ago 77.8MB
debian 11 72b624312240 2 days ago 124MB
debian latest 72b624312240 2 days ago 124MB
镜像详细信息查看
命令格式
docker inspect [OPTIONS] NAME|ID [NAME|ID...]
# 或者
docker image inspect [OPTIONS] IMAGE [IMAGE...]
作用
查看本地一个或多个镜像的详细信息
演示
通过镜像id方式查看ubuntu镜像详细信息docker inspect 74f2
[
{
"Id": "sha256:74f2314a03de34a0a2d552b805411fc9553a02ea71c1291b815b2f645f565683",
"RepoTags": [
"ubuntu:latest"
],
"RepoDigests": [],
"Parent": "",
"Comment": "",
"Created": "2023-03-01T04:38:49.239257335Z",
"Container": "298f60554671ae2f5bf43b9892526aaa221e8093c9cee1ca68ef65fc3ac67600",
"ContainerConfig": {
"Hostname": "298f60554671",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
],
"Cmd": [
"/bin/sh",
"-c",
"#(nop) ",
"CMD [\"/bin/bash\"]"
],
"Image": "sha256:6088cf91777e3b0190e579c7c7cab9c65626f5ff625373bcdb02ae877a9118d8",
"Volumes": null,
"WorkingDir": "",
"Entrypoint": null,
"OnBuild": null,
"Labels": {
"org.opencontainers.image.ref.name": "ubuntu",
"org.opencontainers.image.version": "22.04"
}
},
"DockerVersion": "20.10.12",
"Author": "",
"Config": {
"Hostname": "",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
],
"Cmd": [
"/bin/bash"
],
"Image": "sha256:6088cf91777e3b0190e579c7c7cab9c65626f5ff625373bcdb02ae877a9118d8",
"Volumes": null,
"WorkingDir": "",
"Entrypoint": null,
"OnBuild": null,
"Labels": {
"org.opencontainers.image.ref.name": "ubuntu",
"org.opencontainers.image.version": "22.04"
}
},
"Architecture": "amd64",
"Os": "linux",
"Size": 77810712,
"VirtualSize": 77810712,
"GraphDriver": {
"Data": {
"MergedDir": "/var/lib/docker/overlay2/ea2774b7bd12f55e0c410b60eda3e545eeb2001455a9d40120893646af4397dc/merged",
"UpperDir": "/var/lib/docker/overlay2/ea2774b7bd12f55e0c410b60eda3e545eeb2001455a9d40120893646af4397dc/diff",
"WorkDir": "/var/lib/docker/overlay2/ea2774b7bd12f55e0c410b60eda3e545eeb2001455a9d40120893646af4397dc/work"
},
"Name": "overlay2"
},
"RootFS": {
"Type": "layers",
"Layers": [
"sha256:202fe64c3ce39b94d8beda7d7506ccdfcf7a59f02f17c915078e4c62b5c2ed11"
]
},
"Metadata": {
"LastTagTime": "2023-03-04T05:44:08.300907262+08:00"
}
}
]
也可以配合grep命令,筛选查看,比如查看镜像id
xiaoran@cjdll:~$ docker inspect 74f2314a03 | grep Id
"Id": "sha256:74f2314a03de34a0a2d552b805411fc9553a02ea71c1291b815b2f645f565683",
通过参数-f
查看id
xiaoran@cjdll:~$ docker inspect -f "{{json .Id}}" 74f2314a03
"sha256:74f2314a03de34a0a2d552b805411fc9553a02ea71c1291b815b2f645f565683"
镜像历史信息
命令格式
docker history [OPTIONS] IMAGE
作用
查看本地一个镜像历史(历史分层)信息;需要了解dockerfie
演示
xiaoran@cjdll:~$ docker history 74f2314a03de
IMAGE CREATED CREATED BY SIZE COMMENT
74f2314a03de 2 days ago /bin/sh -c #(nop) CMD ["/bin/bash"] 0B
<missing> 2 days ago /bin/sh -c #(nop) ADD file:fb4c8244f4468cdd3… 77.8MB
<missing> 2 days ago /bin/sh -c #(nop) LABEL org.opencontainers.… 0B
<missing> 2 days ago /bin/sh -c #(nop) LABEL org.opencontainers.… 0B
<missing> 2 days ago /bin/sh -c #(nop) ARG LAUNCHPAD_BUILD_ARCH 0B
<missing> 2 days ago /bin/sh -c #(nop) ARG RELEASE 0B
总结
待更新
评论区