【Docker】第二篇 Docker镜像管理

一、搜索镜像

1、下载一个docker镜像:我们可以通过登陆docker网站搜索自己需要的镜像,可以选择自己所需要的版本,然后通过详情也可以看到:
网址:https://hub.docker.com/
2、我们也可以通过命令行搜索:
[root@web130 ~]# docker search centos:7 #如果不带版本号默认搜到是最新版本的:latest NAME DESCRIPTION STARS OFFICIAL AUTOMATED centos The official build of CentOS. 4726 [OK] ansible/centos7-ansible Ansible on Centos7 118 [OK] *我们看输出内容可以很容易的理解,分别是:名称,描述,星(类似github上的stars),是否官方镜像,是否自动装配。 *如下搜索自动创建,以及指定星级的镜像,星级默认为0,如果加--no-trunc输出信息不截断显示,默认是否--no-trunc=true|fales [root@web130 ~]# docker search --automated -s 3 nginx Flag --automated has been deprecated, use --filter=is-automated=true instead Flag --stars has been deprecated, use --filter=stars=3 instead NAME DESCRIPTION .....省略显示 ...

二、查看和获取镜像

1、images列出镜像:关于images更多信息可以通过man docker-images来查看
*此内容下显示:来自那个仓库、标签信息、镜像ID、创建时间、镜像大小
[root@web130 ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

2、下载一个镜像,如果后边不跟版本号,默认是最新非稳定版本:
[root@web130 ~]# docker pull ubuntu     #下载镜像

*也可以通过上边搜索选择合适的版本号,如下:
[root@web130 ~]# docker pull ubuntu:14.04
[root@web130 ~]# docker pull centos:7.4.1708
[root@web130 ~]# docker images          #查看下载的镜像,可以看到刚刚下载的是三个镜像
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              14.04               c32fae490809        2 weeks ago         188MB
ubuntu              latest              cd6d8154f1e1        2 weeks ago         84.1MB
centos              7.4.1708            d3949e34634c        6 weeks ago         197MB
[root@web130 ~]# 
*我们也可以跟上仓库地址下在,非官网镜像源仓库下载指定镜像:
[root@web130 ~]# docker pull 仓库地址/ubuntu:14.04

3、利用该镜像创建一个容器:
[root@web130 ~]# docker run -it centos:7.4.1708 /bin/bash   #后边详细说明参数,如果本地没有下载此镜像,自动先下载镜像并运行
*如下由于没有指定标签,自动下载了最新版本的centos,并打开了一个shell:
[root@web130 ~]# docker run -it centos /bin/bash
Unable to find image 'centos:latest' locally
latest: Pulling from library/centos
256b176beaff: Pull complete 
Digest: sha256:6f6d986d425aeabdc3a02cb61c02abb2e78e57357e92417d6d58332856024faf
Status: Downloaded newer image for centos:latest
[root@3e876fdaaf89 /]# ls
anaconda-post.log  bin  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@3e876fdaaf89 /]# 

4、使用tag命令为镜像添加标签
[root@web130 ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              14.04               c32fae490809        2 weeks ago         188MB
ubuntu              latest              cd6d8154f1e1        2 weeks ago         84.1MB
centos              7.4.1708            d3949e34634c        6 weeks ago         197MB
centos              latest              5182e96772bf        6 weeks ago         200MB
[root@web130 ~]# docker tag centos:latest mycentos:latest  #我们可以看到多出来一个镜像,tag的作用类似与添加链接的作用,他们指向同一个源镜像文件、
[root@web130 ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              14.04               c32fae490809        2 weeks ago         188MB
ubuntu              latest              cd6d8154f1e1        2 weeks ago         84.1MB
centos              7.4.1708            d3949e34634c        6 weeks ago         197MB
centos              latest              5182e96772bf        6 weeks ago         200MB
mycentos            latest              5182e96772bf        6 weeks ago         200MB

5、使用inspect命令查看详细信息:
[root@web130 ~]# docker inspect mycentos
[root@web130 ~]#
    
6、使用history命令查看镜像历史
[root@web130 ~]# docker history mycentos    #镜像使用多层组成,列出各层的创建信息,--no-trunc选项输出完整的命令
IMAGE               CREATED             CREATED BY                                      SIZE                COMMENT
5182e96772bf        6 weeks ago         /bin/sh -c #(nop)  CMD ["/bin/bash"]            0B                  
<missing>           6 weeks ago         /bin/sh -c #(nop)  LABEL org.label-schema.sc…   0B                  
<missing>           6 weeks ago         /bin/sh -c #(nop) ADD file:6340c690b08865d7e…   200MB               
[root@web130 ~]# 

三、删除镜像

1、通过标签删除镜像
[root@web130 ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              14.04               c32fae490809        2 weeks ago         188MB
ubuntu              latest              cd6d8154f1e1        2 weeks ago         84.1MB
centos              7.4.1708            d3949e34634c        6 weeks ago         197MB
centos              latest              5182e96772bf        6 weeks ago         200MB
mycentos            latest              5182e96772bf        6 weeks ago         200MB
[root@web130 ~]# docker rmi mycentos:latest
Untagged: mycentos:latest
[root@web130 ~]# docker images     删除。
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              14.04               c32fae490809        2 weeks ago         188MB
ubuntu              latest              cd6d8154f1e1        2 weeks ago         84.1MB
centos              7.4.1708            d3949e34634c        6 weeks ago         197MB
centos              latest              5182e96772bf        6 weeks ago         200MB
 #我们可以看到mycentos标签已经被删除,我们可以看到源镜像centos依然存在,所以删除标签不影响镜像文件,但是仅剩一个标签的时候要小心,会将镜像文件


2、通过镜像ID删除镜像

[root@web130 ~]# docker rmi centos:latest   
Error response from daemon: conflict: unable to remove repository reference "centos:latest" (must force) - container 3e876fdaaf89 is using its referenced image 5182e96772bf
[root@web130 ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
3e876fdaaf89        centos              "/bin/bash"         40 minutes ago      Exited (0) 35 minutes ago                       friendly_haibt
[root@web130 ~]# 
#显示无法删除,因为有一个基于它的容器存在,我们也可以强制删除 -f:docker rmi -f centos,但是不建议这样删除,所有我们如下操作先删除依赖的容器
[root@web130 ~]# docker rm 3e876fdaaf89   #通过容器id删除镜像
3e876fdaaf89
[root@web130 ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
[root@web130 ~]# docker rmi centos:latest    #可以看到它删除了这个镜像文件的所有层
Untagged: centos:latest
Untagged: centos@sha256:6f6d986d425aeabdc3a02cb61c02abb2e78e57357e92417d6d58332856024faf
Deleted: sha256:5182e96772bf11f4b912658e265dfe0db8bd314475443b6434ea708784192892
Deleted: sha256:1d31b5806ba40b5f67bde96f18a181668348934a44c9253b420d5f04cfb4e37a
[root@web130 ~]# 

四、创建镜像

创建镜像的方法:
*基于已有的镜像容器创建
*基于本地模板导入
*基于Dockerfile创建 (后文重点学习Dockerfile)

1、基于已有镜像的容器创建
[root@web130 ~]# docker run -it ubuntu:14.04 /bin/bash
root@5b117c5dffe1:/# touch yanglt
root@5b117c5dffe1:/# exit
exit
[root@web130 ~]# docker images;
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              14.04               c32fae490809        2 weeks ago         188MB
ubuntu              latest              cd6d8154f1e1        2 weeks ago         84.1MB
centos              7.4.1708            d3949e34634c        6 weeks ago         197MB
[root@web130 ~]# docker commit -m "a new file" -a "Yanglt" 5b117c5dffe1 test:0.1
sha256:40925d6bc8025b8ca6ec68249f4cb371844896a39817f9e9bf80eda4119e8d6f
[root@web130 ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
test                0.1                 40925d6bc802        9 seconds ago       188MB
ubuntu              14.04               c32fae490809        2 weeks ago         188MB
ubuntu              latest              cd6d8154f1e1        2 weeks ago         84.1MB
centos              7.4.1708            d3949e34634c        6 weeks ago         197MB
#可以看到一个新的镜像test
2、基于本地模板导入创建 下载地址:https://download.openvz.org/template/precreated/ 选择要下载镜像模板: [root@web130 ~]# wget https://download.openvz.org/template/precreated/centos-7-x86_64-minimal.tar.gz [root@web130 ~]# cat centos-7-x86_64-minimal.tar.gz |docker import - centos:7 [root@web130 ~]# cat centos-7-x86_64-minimal.tar.gz |docker import - centos:7 sha256:3458fe08f84de52d5354a80793e5f806420a2330fc2c2425bb4878bcb8b0efd8 [root@web130 ~]# docker images #可以看到已经出现新的镜像 REPOSITORY TAG IMAGE ID CREATED SIZE centos 7 3458fe08f84d 54 seconds ago 435MB test 0.1 40925d6bc802 About an hour ago 188MB ubuntu 14.04 c32fae490809 2 weeks ago 188MB ubuntu latest cd6d8154f1e1 2 weeks ago 84.1MB centos 7.4.1708 d3949e34634c 6 weeks ago 197MB [root@web130 ~]#

五、导出和载入镜像

1、导出镜像
 -o + 要导出最后的文件名 + 要导出的镜像的标签(名) 或id 
[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
test                0.1                 40925d6bc802        20 minutes ago      188MB
ubuntu              14.04               c32fae490809        2 weeks ago         188MB
ubuntu              latest              cd6d8154f1e1        2 weeks ago         84.1MB
centos              7.4.1708            d3949e34634c        6 weeks ago         197MB
[root@localhost ~]# 
[root@localhost ~]# docker save -o myubuntu_14.04.tar ubuntu:14.04
[root@localhost ~]# ll |grep my*
-rw-------  1 root root 197191680 9月  20 20:03 myubuntu_14.04.tar
[root@localhost ~]# 

2、导入镜像(恢复原有镜像)
*我们可以将导出的源镜像删除,然后在导入
[root@localhost ~]# docker rmi ubuntu:14.04
[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
test                0.1                 40925d6bc802        29 minutes ago      188MB
ubuntu              latest              cd6d8154f1e1        2 weeks ago         84.1MB
centos              7.4.1708            d3949e34634c        6 weeks ago         197MB
[root@localhost ~]# docker load < myubuntu_14.04.tar 
Loaded image: ubuntu:14.04
[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
test                0.1                 40925d6bc802        29 minutes ago      188MB
ubuntu              14.04               c32fae490809        2 weeks ago         188MB
ubuntu              latest              cd6d8154f1e1        2 weeks ago         84.1MB
centos              7.4.1708            d3949e34634c        6 weeks ago         197MB
[root@localhost ~]# 

六、上传镜像

#我们可以把自己的镜像传到dockerhub官网上,前提是注册一个用户
[root@localhost ~]# docker push image_name   

 

posted @ 2018-09-20 20:36  旅行者-Ylt  阅读(553)  评论(0编辑  收藏  举报