Docker 镜像使用基本使用方法

运行一个 container并加载镜像centos,运行起来这个实例后,在实例中执行 /bin/bash命令

Docker 常用参数

run 运行
-i 以交互模式运行容器,通常与 -t 同时使用
-t 为容器重新分配一个伪输入终端,通常与 -i 同时使用
-d 后台运行容器,并返回容器ID
-c 后面跟待完成的命令
docker images

启动一个实例,也就2秒就可以搞定

docker run  -it docker.io/centos:latest /bin/bash

查看实例环境

[root@da121a2b5de5 /]# ls

退出容器:

[root@da121a2b5de5 /]# exit

在 container 中启动一个长久运行的进程,不断向stdin输出 hello world 。模拟一个后台运行的服务

docker run -d docker.io/centos:latest /bin/sh -c "while true;do echo www.fooher.com ; sleep 1; done"

容器的ID

c920c285f5392c64b0c3a7b676ed5e223d386740c43b2e35e51e04531e1b732a

从一个容器中取日志,查看输出的内容 容器的ID可以写全,也可以不写全,只要唯一就可以了

语法: docker logs 容器实例的 Name/ID

docker logs c920c285f5392c64

日志结果显示内容:

www.fooher.com
www.fooher.com
www.fooher.com
www.fooher.com
www.fooher.com

查看正在运行的容器

列出已经下载下来的镜像

docker image ls

列表包含了 仓库名 、标签 、镜像 ID 、创建时间 以及 所占用的空间。
其中仓库名、标签在之前的基础概念章节已经介绍过了。镜像 ID 则是镜像的唯一标识,一个镜像可以对应多个标签查看镜像、容器、数据卷所占用的空间

查看镜像、容器、数据卷所占用的空间

docker system df

列出镜像

docker image ls centos

列出特定的某个镜像,也就是说指定仓库名和标签

docker image ls ubuntu:latest

除此以外, docker image ls 还支持强大的过滤器参数 --filter ,或者简写 -f 。之前我们已经看到了使用过滤器来列出虚悬镜像的用法,它还有更多的用 法。比如,我们希望看到在 mongo:3.2 之后建立的镜像,可以用下面的命令:

docker image ls -f since=mongo:3.2

想查看某个位置之前的镜像也可以,只需要把 since 换成 before 即可。 此外,如果镜像构建时,定义了 LABEL ,还可以通过 LABEL 来过滤。

docker image ls -f label=com.example.version=0.1

以特定格式显示

默认情况下, docker image ls 会输出一个完整的表格,但是我们并非所有时候 都会需要这些内容。比如,刚才删除虚悬镜像的时候,我们需要利用 docker image ls 把所有的虚悬镜像的 ID 列出来,然后才可以交给 docker image rm 命令作为参数来删除指定的这些镜像,这个时候就用到了 -q 参数
docker image ls -q

--filter 配合 -q 产生出指定范围的 ID 列表,然后送给另一个 docker 命 令作为参数,从而针对这组实体成批的进行某种操作的做法在 Docker 命令行使用 过程中非常常见,不仅仅是镜像,将来我们会在各个命令中看到这类搭配以完成很 强大的功能。因此每次在文档看到过滤器后,可以多注意一下它们的用法。 另外一些时候,我们可能只是对表格的结构不满意,希望自己组织列;或者不希望 有标题,这样方便其它程序解析结果等,这就用到了 Go 的模板语法。 比如,下面的命令会直接列出镜像结果,并且只包含镜像ID和仓库名:

docker image ls --format "{{.ID}}: {{.Repository}}"

或者打算以表格等距显示,并且有标题行,和默认一样,不过自己定义列:

docker image ls --format "table {{.ID}}\t{{.Repository}}\t{{.Tag}}"

删除本地镜像

如果要删除本地的镜像,可以使用 docker image rm 命令,其格式为:
$ docker image rm [选项] <镜像1> [<镜像2> ...]

用 ID、镜像名、摘要删除镜像

其中, <镜像> 可以是 镜像短 ID 、 镜像长 ID 、 镜像名 或者 镜像摘要 。
比如我们有这么一些镜像:

docker image ls

我们可以用镜像的完整 ID,也称为 长 ID ,来删除镜像。使用脚本的时候可能会用长 ID,但是人工输入就太累了,所以更多的时候是用 短 IMAGE ID 来删除镜像。 docker image ls 默认列出的就已经是短 IMAGE ID 了,一般取前3个字符以上,只要足够区分于别的镜像就可以了。比如这里,如果我们要删除 redis:alpine 镜像,可以执行:

docker image rm 72

我们也可以用 镜像名 ,也就是 <仓库名>:<标签> ,来删除镜像

docker image rm centos

当然,更精确的是使用 镜像摘要 删除镜像