Docker常用命令2
categories: Docker Commands
Docker命令解读系列文章将系统讲解Docker使用的命令,方便大家学习Docker的基本操作。在写这个系列文章的时候,主要参考了Docker官方的文档,有些内容是直接的翻译。原文档地址 Docker Docs
转载请注明出处
目录:
- history
- events
- stats
- info
- logs
- port
- inspect
- top
history
Usage: docker history [OPTIONS] IMAGE
Show the history of an image
-H, --human=true Print sizes and dates in human readable format
--help=false Print usage
--no-trunc=false Don't truncate output
-q, --quiet=false Only show numeric IDs
docker history
用于查看镜像的历史信息。包括镜像的各层创建的时间,创建时的命令等。
events
Usage: docker events [OPTIONS]
Get real time events from the server
-f, --filter=[] Filter output based on conditions provided
--help=false Print usage
--since="" Show all events created since timestamp
--until="" Stream events until this timestamp
docker events
命令用于查看Docker
服务器中发生的实时事件。“事件”分为镜像的和容器的两种:
容器可以报告的事件有:
attach, commit, copy, create, destroy, die, exec_create, exec_start, export, kill, oom, pause, rename, resize, restart, start, stop, top, unpause
镜像可以报告的事件有:
delete, import, pull, push, tag, untag
--since
和--until
标识用于指定需要报告的事件的时间范围,其值可以是UNIX时间戳,RFC3399定义的日期或者Golang的时间间隔字符串(30m
,1h30m
等等)
如果没有指定--since
标识,Docker
将只会报告新产生的或正在进行的时间,就好像是从此刻开始监听。
--filter
标识用于事件的筛选,使用它,用户可以只获得某一个容器的状态或某种类型的状态。其格式为:--filter “event=create”|“container=test”
。--filter
标识可以使用多次。
以下事实需要特别注意:
- 当使用--filter
多次但指定的类型的都是一样时,Docker
将多个--filter
之间认定为OR
关系,例如: bash
--filter container=588a23dac085 --filter container=a8f7720b8c22
会显示容器588a23dac085或容器a8f7720b8c22的事件信息。
- 如果使用--filter
多次但指定不同的类型,则被认作的AND
的关系,例如: --filter container=588a23dac085 --filter event=start
会报告容器588a23dac085的start事件。
使用--filter
可以指定以下四种类型的事件:
- container container=<name or id>
- event event=<event type>
- image image=<tag or id>
- label label=<key>
orlabel=<key>=<value>
举例:
直接执行docker events
,表示监听从现在起服务器上的所有可以报告的事件。当有事件发生时,就会显示在执行docker events
的控制端下。
在控制台1运行docker events
$ docker events
另打开一个控制台2,运行如下命令:
$ docker start 4386fb97867d
$ docker stop 4386fb97867d
$ docker stop 7805c1d35632
控制台1就会输出相应的事件:
2014-05-10T17:42:14.999999999Z07:00 4386fb97867d: (from ubuntu-1:14.04) start
2014-05-10T17:42:14.999999999Z07:00 4386fb97867d: (from ubuntu-1:14.04) die
2014-05-10T17:42:14.999999999Z07:00 4386fb97867d: (from ubuntu-1:14.04) stop
2014-05-10T17:42:14.999999999Z07:00 7805c1d35632: (from redis:2.8) die
2014-05-10T17:42:14.999999999Z07:00 7805c1d35632: (from redis:2.8) stop
stats
Usage: docker stats [OPTIONS] CONTAINER [CONTAINER...]
Display a live stream of one or more containers' resource usage statistics
--help=false Print usage
--no-stream=false Disable streaming stats and only pull the first result
docker stats
命令用于显示一个或多个容器实时的资源使用情况,包括CPU,内存使用量,网络IO,磁盘IO等信息。 docker stats
命令仅显示正在运行的running
容器的实时资源使用情况,不能显示已经停止的容器的资源使用情况。
可以通过--no-stream
标识关闭实时状态,仅显示当前时间点的状态。
info
docker info
用于显示系统信息,主要有下面这些:
Containers: 1
Images: 32
Server Version: 1.9.0
Storage Driver: aufs
Root Dir: /var/lib/docker/aufs
Backing Filesystem: extfs
Dirs: 34
Dirperm1 Supported: true
Execution Driver: native-0.2
Logging Driver: json-file
Kernel Version: 3.19.0-33-generic
Operating System: Ubuntu 14.04.3 LTS
CPUs: 4
Total Memory: 7.493 GiB
Name: chy-station
ID: D3GB:PFOA:JJ2S:3RGI:7RHU:OUDR:C45L:JAMF:7PS7:PIEC:XPIL:T5TJ
WARNING: No swap limit support
logs
Usage: docker logs [OPTIONS] CONTAINER
Fetch the logs of a container
-f, --follow=false Follow log output
--help=false Print usage
--since= Show logs since timestamp
-t, --timestamps=false Show timestamps
--tail=all Number of lines to show from the end of the logs
显示某个容器的日志信息,此命令仅支持使用json-file
或journald
日志驱动的容器。
默认只显示已经产生的日志,通过指定-f
(--follow
跟随)标识接着显示以后的日志。 --since
标识通过指定一个时间戳显示从某个时间点到现在的日志信息。 --tail
标识用来指定要显示的日志的行数,默认值是“all”,即显示所有。
使用-t
(--timestamps
)标识会在每一行日志加上时间戳。
关于docker logs
的原理,这里又一篇很好的文章可以参考:「Allen 谈 Docker 系列」之 docker logs 实现剖析
port
docker port
命令用于查看容器内所有内部端口与公共端口(宿主机端口)之间的映射关系,或根据某个内部端口查看对应的公共端口。
举例:
$ docker port test
7890/tcp -> 0.0.0.0:4321
9876/tcp -> 0.0.0.0:1234
$ docker port test 7890/tcp
0.0.0.0:4321
inspect
Usage: docker inspect [OPTIONS] CONTAINER|IMAGE [CONTAINER|IMAGE...]
Return low-level information on a container or image
-f, --format="" Format the output using the given go template
--help=false Print usage
--type=container|image Return JSON for specified type, permissible
values are "image" or "container"
-s, --size=false Display total file sizes if the type is container
返回与容器或镜像相关的配置信息的josn字符串。默认返回所有信息,也可以通过--format
标识指定要返回的部分信息。关于--format
格式的信息请参考:text/format
下面是常用的格式:
$ docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $INSTANCE_ID 返回IP地址
$ docker inspect --format='{{.LogPath}}' $INSTANCE_ID 返回保存log信息文件的地址
top
显示容器中正在运行的进程。
rename
Usage: docker rename [OPTIONS] OLD_NAME NEW_NAME
Rename a container
--help=false Print usage
docker rename
命令用于对一个容器进行重命名。