docker镜像是一个只读模板,它包含创建Docker容器的说明。我们可以理解为镜像是Java中的类,容器是Java类的实例化,启动镜像相当于new 一个docker容器。
Docker 运行容器前需要本地存在对应的镜像,如果镜像不存在本地,Docker 会从镜像仓库下载(默认是 Docker Hub 公共注册服务器中的仓库-----如果从 Docker Hub 下载镜像非常缓慢,可以参照后面的章节配置镜像加速器)。
查看本机已安装镜像列表
docker images
各个选项说明:
REPOSITORY:表示镜像的仓库源
TAG:镜像的标签
IMAGE ID:镜像ID
CREATED:镜像创建时间
SIZE:镜像大小
查找镜像
我们可以从 Docker Hub 网站来搜索镜像,Docker Hub 网址为: https://hub.docker.com/
我们也可以使用 docker search 命令来搜索镜像。
docker search mysql
下载需要的镜像
从 Docker Registry 获取镜像的命令是 docker pull 。其命令格式为:
docker pull [选项] [Docker Registry地址]<仓库名>:<标签>
Docker Registry地址:地址的格式一般是 <域名/IP>[:端口号] 。默认地址是Docker Hub。
仓库名:如之前所说,这里的仓库名是两段式名称,既 <用户名>/<软件名> 。对于 Docker Hub,如果不给出用户名,则默认为 library ,也就是官方镜像。
比如:
$ docker pull ubuntu:14.04
...............
Status: Downloaded newer image for ubuntu:14.04
上面的命令中没有给出 Docker Registry 地址,因此将会从 Docker Hub 获取镜像。而镜像名称是 ubuntu:14.04 ,因此将会获取官方镜像 library/ubuntu仓库中标签为 14.04 的镜像。
如下所示我们没有写标签,则默认下载最新版本的:
docker pull docker.io/centos
通过 docker images 查看已经下的镜像
启动镜像实例
docker run -it docker.io/centos /bin/bash
-it :这是两个参数,一个是 -i :交互式操作,一个是 -t 终端。我们这里打算进入 bash 执行一些命令并查看返回结果,因此我们需要交互式终获取镜像端。
/bin/bash :放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 bash 。
当利用 docker run 来创建容器时,Docker 在后台运行的标准操作包括:
检查本地是否存在指定的镜像,不存在就从公有仓库下载
利用镜像创建并启动一个容器
分配一个文件系统,并在只读的镜像层外面挂载一层可读写层
从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去
从地址池配置一个 ip 地址给容器
执行用户指定的应用程序
执行完毕后容器被终止
退出镜像实例
exit 退出容器时,容器会关闭。如果想要容器后台运行则:Ctrl +q+p 。
exit
启动、停止、重启容器的命令:
docker start 1d5...
docker stop 1d5...
docker restart 1d5...