Docker镜像是由文件系统叠加而成。最底端是一个文件引导系统,即bootfs。Docker用户不会与引导文件系统有直接的交互。Docker镜像的第二层是root文件系统rootfs,通常是一种或多种操作系统,例如ubuntu等。在Docker中,文件系统永远都是只读的,在每次修改时,都是进行拷贝叠加从而形成最终的文件系统。Docker称这样的文件为镜像。一个镜像可以迭代在另一个镜像的顶部。位于下方的镜像称之为父镜像,最底层的镜像称之为基础镜像。最后,当从一个镜像启动容器时,Docker会在最顶层加载一个读写文件系统作为容器。
本文将围绕Docker镜像(Docker Image),介绍其使用方法。包括三部分:
•从Docker Hub或者其他镜像源安装Docker镜像
•从Image file安装Docker镜像
•从Docker file制作Docker镜像
查找Docker镜像
安装Docker镜像的第一步,是查找你需要的Docker镜像列表,键入:
docker search mysql
如果出现权限问题,请在最前面加入sudo:
sudo docker search mysql
查询返回一个列表:
NAME DESCRIPTION STARS OFFICIAL AUTOMATED mysql MySQL is a widely used, open-source relati... 2981 [OK] mysql/mysql-server Optimized MySQL Server Docker images. Crea... 194 [OK] centurylink/mysql Image containing mysql. Optimized to be li... 46 [OK] sameersbn/mysql 36 [OK] jdeathe/centos-ssh-mysql CentOS-6 6.8 x86_64 / MySQL. 8 [OK] appcontainers/mysql Centos/Debian Based Customizable MySQL Con... 8 [OK] marvambass/mysql MySQL Server based on Ubuntu 14.04 6 [OK] drupaldocker/mysql MySQL for Drupal 2 [OK] azukiapp/mysql Docker image to run MySQL by Azuki - http:... 2 [OK] yfix/mysql Yfix docker built mysql 2 [OK] alterway/mysql Docker Mysql 2 [OK] frodenas/mysql A Docker Image for MySQL 2 [OK] andreluiznsilva/mysql A extension of the offical MySQL container... 1 [OK] phpmentors/mysql MySQL server image 1 [OK] sin30/mysql MySQL images with my own config files. 1 [OK] tozd/mysql MySQL (MariaDB fork) Docker image. 0 [OK] nanobox/mysql MySQL service for nanobox.io 0 [OK] ...
列表包含了所有的MySQL镜像,其中:
•NAME字段是镜像的名字
•DESCRIPTION字段是对镜像的简单描述
•STARS数量反映了用户的喜爱程度
•OFFICIAL字段如果是OK,代表了这个镜像是官方提供的,可以信任
•AUTOMATED字段如果是OK,代表了这个镜像是基于公开的脚本制作的,可以信任
•如果OFFICIAL和AUTOMATED都不为OK,那使用的时候需要额外小心了,这类镜像中可能包含恶意软件,不过对于个人非敏感数据还是可以使用的。
此外,你也可以通过访问https://hub.docker.com/,通过Web来搜索你需要的镜像。
下载Docker镜像
当你找到合适的镜像后,可以通过:
docker pull [REGISTRYHOST/][USERNAME/]NAME[:TAG]
来进行下载,方括号中的是可选项:
docker pull mysql
导出Docker镜像
你可以将本地镜像导出为文件,如我们刚才下载的MySQL镜像:
docker save -o mysql.tar mysql
将我们的MySQL镜像导出为mysql.tar.
导入Docker镜像
有导出就有导入,导入的命令是:
docker load -i mysql.tar
将我们的MySQL镜像导入。
删除Docker镜像
为了节约磁盘空间,有时候我们需要删除不需要的Docker镜像文件,首先查看我们拥有的Docker镜像文件:
docker images
然后删除不需要的镜像,释放磁盘空间:
docker rmi [REGISTRYHOST/][USERNAME/]NAME[:TAG]
通过Docker File编译Docker镜像
制作Docker File我们放在后面再讲,假设你有一个名为Dockerfile的文件,编译制作Docker的命令是:
docker build -f Dockerfile .
成功后将在当前路径下制作出一个Docker镜像文件。
Summary
我们简单的介绍了Docker镜像的使用方法。通过此实战,你应该对Docker镜像有了更深入的体会。