一、搜索镜像
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