一,使用docker镜像
docker镜像是docker中三大概念之一,其主要作用是作为启动容器的模板。
二,获取docker镜像
镜像是运行容器的模板,官方Docker Hub 仓库已经提供了许多镜像共开发者使用。如果我们需要获取某个镜像则可以去docker仓库下载所需的镜像。
下载镜像的格式:docker pull [仓库的URL]/[名称空间]/[仓库的名称]:[版本号]
默认情况下:镜像URL是:docker.io, 命名空间名称:library
下载镜像实例:
# 下载官方最新版本的nginx
[root@linux10 /etc/docker]# docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
6ec7b7d162b2: Already exists
cb420a90068e: Already exists
2766c0bf2b07: Already exists
e05167b6a99d: Already exists
70ac9d795e79: Already exists
Digest: sha256:4cf620a5c81390ee209398ecc18e5fb9dd0f5155cd82adcbae532fec94006fb9
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest
三,查看镜像列表
[root@docker ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest ae2feff98a0c 3 weeks ago 133MB
docker image ls == docker images
相关参数:
-a : 列出系统临时镜像文件
--digests : 列出系统镜像摘要
-q : 只显示镜像ID
四,查看镜像详细信息
格式:
docker inspect [镜像名称]:[版本号] | [镜像ID]
[root@docker ~]# docker inspect nginx:latest
[
{
"Id": "sha256:ae2feff98a0cc5095d97c6c283dcd33090770c76d63877caa99aefbbe4343bdd",
"RepoTags": [
"nginx:latest
......
五,给镜像设置标签tag
格式
docker tag [镜像ID] [别名]:[版本号]
[root@docker ~]# docker tag nginx:latest mynginx:v1
[root@docker ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mynginx v1 ae2feff98a0c 3 weeks ago 133MB
nginx latest ae2feff98a0c 3 weeks ago 133MB
# 给镜像设置标签后会单独生成一个镜像ID不变
六,查看镜像构建历史
格式:
docker history [镜像名称或ID]
[root@docker ~]# docker history mynginx:v1
IMAGE CREATED CREATED BY SIZE COMMENT
ae2feff98a0c 3 weeks ago /bin/sh -c #(nop) CMD ["nginx" "-g" "daemon… 0B
<missing> 3 weeks ago /bin/sh -c #(nop) STOPSIGNAL SIGQUIT 0B
<missing> 3 weeks ago /bin/sh -c #(nop) EXPOSE 80 0B
<missing> 3 weeks ago /bin/sh -c #(nop) ENTRYPOINT ["/docker-entr… 0B
......
# 镜像构建步骤从上往下看cmd参数是启动镜像后要执行的命令
# 注意:有些构建信息过长,可以使用--no-trunc 选项来输出完整信息。
七,搜索镜像
格式:
docker search [参数] [镜像名称]
[root@docker ~]# docker search nginx
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
nginx Official build of Nginx. 14284 [OK]
jwilder/nginx-proxy Automated Nginx reverse proxy for docker con… 1940 [OK]
richarvey/nginx-php-fpm Container running Nginx + PHP-FPM capable of… 799 [OK]
......
解释:
NAME : 镜像名称
DESCRIPTION : 镜像简介
STARS : 收藏数
OFFICIAL : 是否是官方镜像
AUTOMATED : 是否是自构建镜像
参数:
-f: 过滤 is-official=true
--no-trunc : 不截断输出
--limit : 设置查询的条数
八,删除镜像
格式:
docker rmi [镜像名称或ID]
[root@docker ~]# docker rmi mynginx:v1
Untagged: mynginx:v1
参数:
-f : 强制删除镜像
九,清理镜像
格式:
docker image prune [参数]
[root@docker ~]# docker image prune
WARNING! This will remove all dangling images.
Are you sure you want to continue? [y/N] y
Total reclaimed space: 0B
参数:
-a : 删除所有未被使用的镜像
-f : 是否需要提示
十,保存镜像(容器)
commit保存镜像针对的是保存容器。
格式:
docker commit [参数] [容器ID] [镜像名称:版本号]
[root@docker ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
53126ffa7452 nginx "/docker-entrypoint.…" About a minute ago Up About a minute 0.0.0.0:80->80/tcp nginx
[root@docker ~]# docker commit -m '这是一个nginx容器' -a 'xiaoma' -p 53126ffa7452
sha256:51fa2e15eb5bdc5b5b4b82b76f502b5656a2949e0f2ab9c14d458688ebf4df10
参数:
-m : 简介信息
-a : 指定作者
-p : 保存镜像时,镜像暂停运行(挂起)
十一,镜像的导入与导出(容器)
# 使用export把容器导出
格式:
docker export [容器名称] > [压缩包名称]
# 使用 docker export 命令不会压缩容器大小
[root@docker ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
53126ffa7452 nginx "/docker-entrypoint.…" 7 minutes ago Up 7 minutes 0.0.0.0:80->80/tcp nginx
[root@docker ~]# docker export nginx > nginx.tar
参数:
-o:指定目标文件位置和名称 导入的是字符串的写入而不是标准输出
# 使用import导入容器
格式:
docker import [压缩包名称] [镜像名称]
# 该命令与 docker export命令相对,用于导入容器,导入后变成镜像
[root@docker ~]# docker import /root/nginx.tar
sha256:8723ba528ff7b67ef8f80ab107c270cd6839cc991fa58d3cf986c85dd01aeb8d
[root@docker ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
<none> <none> 8723ba528ff7 3 seconds ago 131MB
十一,镜像的导入与导出(镜像)
# 使用save保存镜像
# 针对的是镜像
save
格式:
docker save [镜像ID...] > [压缩包名称]
# 注:使用镜像ID保存镜像时,导入时没有名称
[root@docker ~]# docker save ae2feff98a0c > nginx_iso.tar
# 使用load导入进行
格式:
docker load < [压缩包名称]
[root@docker ~]# docker load < nginx.tar
Loaded image: nginx:latest
十二,两种保存方式的区别
1、针对的对象不一样(export和import针对的是容器,save和load针对的是镜像)
2、save是完全保存, export是部分保存
3、save保存的体积稍微大一些
4、save保存的是原生的镜像,export保存成一个新的镜像
5、save保存无法修改名称,export可以修改名称
6、save可以同时保存多个镜像,export不可以同时保存多个容器
7、save应用场景在部署或者需要追溯的场景中,export应用场景在作为基础镜像时使用