docker 镜像相关命令使用

一,使用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应用场景在作为基础镜像时使用

原文地址:https://www.cnblogs.com/xiaolang666/p/14264178.html