Docker镜像服务(二)
一、Docker镜像介绍
镜像是Docker的三大核心概念之一。
Docker运行容器前需要本地存在对应的镜像,如果镜像不存在本地,Docker会尝试先从默认的镜像仓库下载(默认使用Docker Hub公共注册服务中的仓库),我们也可以通过配置,使用自定义的镜像仓库。
二、获取最新的Ubuntu镜像
从Docker Hub的Ubuntu仓库下载一个最新的Ubuntu操作系统镜像,并下载一个centos7.2的系统镜像
# docker pull ubuntu
# docker pull centos:7.2.1511
从下载过程中可以看到分层存储的概念,镜像是由多层存储所构成。下载也是一层层的去下载,并非单一文件。下载过程中给出了每一层的 ID 的前 12 位。并且下载结束后,给出该镜像完整的 sha256 的摘要,以确保下载一致性。
三、查看本地镜像信息
# docker images
# 来自于哪个仓库 镜像标签信息 镜像的ID(唯一) 创建时间 镜像大小 REPOSITORY TAG IMAGE ID CREATED SIZE ubuntu latest 775349758637 2 weeks ago 64.2MB centos 7.2.1511 9aec5c5fe4ba 8 months ago 195MB centos latest 1e1148e4cc2c 11 months ago 202MB
使用docker tag为本地镜像添加新的标签, 这两个镜像的ID是一样的,只是名字不同而已。标签起到的快捷方式的作用。
# docker tag centos:7.2.1511 centos:7.2 # docker images
REPOSITORY TAG IMAGE ID CREATED SIZE centos 7.2 9aec5c5fe4ba 8 months ago 195MB centos 7.2.1511 9aec5c5fe4ba 8 months ago 195MB
四、搜索镜像
--stars=0 默认的输出结果将按照星级评价进行排序,还可看到是否官方镜像,是否自动允许用户验证镜像的来源和内容。
# docker search mysql
五、删除镜像
# docker rmi ubuntu:latest
# 或者复制镜像的ID全部删除
# docker rmi -f 9aec5c5fe4ba
六、创建镜像
创建镜像有三种方法:基于已有镜像的容器创建、基于本地模板导入、基于Dockerfile创建。
本次主要是基于已有的镜像容器创建
6.1 首先启动一个镜像,并在其中进行修改,并退出
[root@192-168-5-91 ~]# docker run -it centos /bin/bash [root@f2306f13f765 /]# yum install net-tools -y [root@f2306f13f765 /]# exit
6.2使用docker commit创建容器
# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f2306f13f765 centos "/bin/bash" 3 minutes ago Exited (0) About a minute ago gracious_shockley # docker commit -m 'install net-tools' -a 'lzfn' f2306f13f765 centos_test # -m 提交消息,-a 作者信息 sha256:c753a863c07a4901ed72ff39110971538a40dfc66824dffad5e0060d5994b555 # docker images REPOSITORY TAG IMAGE ID CREATED SIZE centos_test latest c753a863c07a 24 seconds ago 291MB
七、镜像的导入与导出
7.1 将镜像导出到本地文件
# docker save -o centos7.2.tar centos:7.2.1511 # docker save centos:7.2.1511 > centos7.2.tar
7.2 将本地镜像导入到docker仓库
# docker load --input centos7.2.tar # docker load < centos7.2.tar