mirror of https://github.com/docker/cli.git
415 lines
19 KiB
Markdown
415 lines
19 KiB
Markdown
# events
|
||
|
||
<!---MARKER_GEN_START-->
|
||
Get real time events from the server
|
||
|
||
### Aliases
|
||
|
||
`docker system events`, `docker events`
|
||
|
||
### Options
|
||
|
||
| Name | Type | Default | Description |
|
||
|:---------------------------------------|:---------|:--------|:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||
| [`-f`](#filter), [`--filter`](#filter) | `filter` | | Filter output based on conditions provided |
|
||
| [`--format`](#format) | `string` | | Format output using a custom template:<br>'json': Print in JSON format<br>'TEMPLATE': Print output using the given Go template.<br>Refer to https://docs.docker.com/go/formatting/ for more information about formatting output with templates |
|
||
| [`--since`](#since) | `string` | | Show all events created since timestamp |
|
||
| `--until` | `string` | | Stream events until this timestamp |
|
||
|
||
|
||
<!---MARKER_GEN_END-->
|
||
|
||
## Description
|
||
|
||
Use `docker events` to get real-time events from the server. These events differ
|
||
per Docker object type. Different event types have different scopes. Local
|
||
scoped events are only seen on the node they take place on, and Swarm scoped
|
||
events are seen on all managers.
|
||
|
||
Only the last 256 log events are returned. You can use filters to further limit
|
||
the number of events returned.
|
||
|
||
### Object types
|
||
|
||
#### Containers
|
||
|
||
Docker containers report the following events:
|
||
|
||
- `attach`
|
||
- `commit`
|
||
- `copy`
|
||
- `create`
|
||
- `destroy`
|
||
- `detach`
|
||
- `die`
|
||
- `exec_create`
|
||
- `exec_detach`
|
||
- `exec_die`
|
||
- `exec_start`
|
||
- `export`
|
||
- `health_status`
|
||
- `kill`
|
||
- `oom`
|
||
- `pause`
|
||
- `rename`
|
||
- `resize`
|
||
- `restart`
|
||
- `start`
|
||
- `stop`
|
||
- `top`
|
||
- `unpause`
|
||
- `update`
|
||
|
||
#### Images
|
||
|
||
Docker images report the following events:
|
||
|
||
- `delete`
|
||
- `import`
|
||
- `load`
|
||
- `pull`
|
||
- `push`
|
||
- `save`
|
||
- `tag`
|
||
- `untag`
|
||
|
||
#### Plugins
|
||
|
||
Docker plugins report the following events:
|
||
|
||
- `enable`
|
||
- `disable`
|
||
- `install`
|
||
- `remove`
|
||
|
||
#### Volumes
|
||
|
||
Docker volumes report the following events:
|
||
|
||
- `create`
|
||
- `destroy`
|
||
- `mount`
|
||
- `unmount`
|
||
|
||
#### Networks
|
||
|
||
Docker networks report the following events:
|
||
|
||
- `create`
|
||
- `connect`
|
||
- `destroy`
|
||
- `disconnect`
|
||
- `remove`
|
||
|
||
#### Daemons
|
||
|
||
Docker daemons report the following events:
|
||
|
||
- `reload`
|
||
|
||
#### Services
|
||
|
||
Docker services report the following events:
|
||
|
||
- `create`
|
||
- `remove`
|
||
- `update`
|
||
|
||
#### Nodes
|
||
|
||
Docker nodes report the following events:
|
||
|
||
- `create`
|
||
- `remove`
|
||
- `update`
|
||
|
||
#### Secrets
|
||
|
||
Docker secrets report the following events:
|
||
|
||
- `create`
|
||
- `remove`
|
||
- `update`
|
||
|
||
#### Configs
|
||
|
||
Docker configs report the following events:
|
||
|
||
- `create`
|
||
- `remove`
|
||
- `update`
|
||
|
||
### Limiting, filtering, and formatting the output
|
||
|
||
#### <a name="since"></a> Limit events by time (--since, --until)
|
||
|
||
The `--since` and `--until` parameters can be Unix timestamps, date formatted
|
||
timestamps, or Go duration strings supported by [ParseDuration](https://pkg.go.dev/time#ParseDuration) (e.g. `10m`, `1h30m`) computed
|
||
relative to the client machine’s time. If you do not provide the `--since` option,
|
||
the command returns only new and/or live events. Supported formats for date
|
||
formatted time stamps include RFC3339Nano, RFC3339, `2006-01-02T15:04:05`,
|
||
`2006-01-02T15:04:05.999999999`, `2006-01-02T07:00`, and `2006-01-02`. The local
|
||
timezone on the client will be used if you do not provide either a `Z` or a
|
||
`+-00:00` timezone offset at the end of the timestamp. When providing Unix
|
||
timestamps enter seconds[.nanoseconds], where seconds is the number of seconds
|
||
that have elapsed since January 1, 1970 (midnight UTC/GMT), not counting leap
|
||
seconds (aka Unix epoch or Unix time), and the optional .nanoseconds field is a
|
||
fraction of a second no more than nine digits long.
|
||
|
||
Only the last 256 log events are returned. You can use filters to further limit
|
||
the number of events returned.
|
||
|
||
#### <a name="filter"></a> Filtering (--filter)
|
||
|
||
The filtering flag (`-f` or `--filter`) format is of "key=value". If you would
|
||
like to use multiple filters, pass multiple flags (e.g.,
|
||
`--filter "foo=bar" --filter "bif=baz"`)
|
||
|
||
Using the same filter multiple times is interpreted as a logical `OR`; for example,
|
||
`--filter container=588a23dac085 --filter container=a8f7720b8c22` displays
|
||
events for container `588a23dac085` or container `a8f7720b8c22`.
|
||
|
||
Using multiple filters is interpreted as a logical `AND`; for example,
|
||
`--filter container=588a23dac085 --filter event=start` displays events for
|
||
container `588a23dac085` and where the event type is `start`.
|
||
|
||
The currently supported filters are:
|
||
|
||
- config (`config=<name or id>`)
|
||
- container (`container=<name or id>`)
|
||
- daemon (`daemon=<name or id>`)
|
||
- event (`event=<event action>`)
|
||
- image (`image=<repository or tag>`)
|
||
- label (`label=<key>` or `label=<key>=<value>`)
|
||
- network (`network=<name or id>`)
|
||
- node (`node=<id>`)
|
||
- plugin (`plugin=<name or id>`)
|
||
- scope (`scope=<local or swarm>`)
|
||
- secret (`secret=<name or id>`)
|
||
- service (`service=<name or id>`)
|
||
- type (`type=<container or image or volume or network or daemon or plugin or service or node or secret or config>`)
|
||
- volume (`volume=<name>`)
|
||
|
||
#### <a name="format"></a> Format the output (--format)
|
||
|
||
If you specify a format (`--format`), the given template is executed
|
||
instead of the default format. Go's [text/template](https://pkg.go.dev/text/template)
|
||
package describes all the details of the format.
|
||
|
||
If a format is set to `{{json .}}`, events are streamed in the JSON Lines format.
|
||
For information about JSON Lines, see <https://jsonlines.org/>.
|
||
|
||
## Examples
|
||
|
||
### Basic example
|
||
|
||
You'll need two shells for this example.
|
||
|
||
**Shell 1: Listening for events:**
|
||
|
||
```console
|
||
$ docker events
|
||
```
|
||
|
||
**Shell 2: Start and Stop containers:**
|
||
|
||
```console
|
||
$ docker create --name test alpine:latest top
|
||
$ docker start test
|
||
$ docker stop test
|
||
```
|
||
|
||
**Shell 1: (Again .. now showing events):**
|
||
|
||
```console
|
||
2017-01-05T00:35:58.859401177+08:00 container create 0fdb48addc82871eb34eb23a847cfd033dedd1a0a37bef2e6d9eb3870fc7ff37 (image=alpine:latest, name=test)
|
||
2017-01-05T00:36:04.703631903+08:00 network connect e2e1f5ceda09d4300f3a846f0acfaa9a8bb0d89e775eb744c5acecd60e0529e2 (container=0fdb...ff37, name=bridge, type=bridge)
|
||
2017-01-05T00:36:04.795031609+08:00 container start 0fdb...ff37 (image=alpine:latest, name=test)
|
||
2017-01-05T00:36:09.830268747+08:00 container kill 0fdb...ff37 (image=alpine:latest, name=test, signal=15)
|
||
2017-01-05T00:36:09.840186338+08:00 container die 0fdb...ff37 (exitCode=143, image=alpine:latest, name=test)
|
||
2017-01-05T00:36:09.880113663+08:00 network disconnect e2e...29e2 (container=0fdb...ff37, name=bridge, type=bridge)
|
||
2017-01-05T00:36:09.890214053+08:00 container stop 0fdb...ff37 (image=alpine:latest, name=test)
|
||
```
|
||
|
||
To exit the `docker events` command, use `CTRL+C`.
|
||
|
||
### Filter events by time
|
||
|
||
You can filter the output by an absolute timestamp or relative time on the host
|
||
machine, using the following different time formats:
|
||
|
||
```console
|
||
$ docker events --since 1483283804
|
||
2017-01-05T00:35:41.241772953+08:00 volume create testVol (driver=local)
|
||
2017-01-05T00:35:58.859401177+08:00 container create d9cd...4d70 (image=alpine:latest, name=test)
|
||
2017-01-05T00:36:04.703631903+08:00 network connect e2e1...29e2 (container=0fdb...ff37, name=bridge, type=bridge)
|
||
2017-01-05T00:36:04.795031609+08:00 container start 0fdb...ff37 (image=alpine:latest, name=test)
|
||
2017-01-05T00:36:09.830268747+08:00 container kill 0fdb...ff37 (image=alpine:latest, name=test, signal=15)
|
||
2017-01-05T00:36:09.840186338+08:00 container die 0fdb...ff37 (exitCode=143, image=alpine:latest, name=test)
|
||
2017-01-05T00:36:09.880113663+08:00 network disconnect e2e...29e2 (container=0fdb...ff37, name=bridge, type=bridge)
|
||
2017-01-05T00:36:09.890214053+08:00 container stop 0fdb...ff37 (image=alpine:latest, name=test)
|
||
|
||
$ docker events --since '2017-01-05'
|
||
2017-01-05T00:35:41.241772953+08:00 volume create testVol (driver=local)
|
||
2017-01-05T00:35:58.859401177+08:00 container create d9cd...4d70 (image=alpine:latest, name=test)
|
||
2017-01-05T00:36:04.703631903+08:00 network connect e2e1...29e2 (container=0fdb...ff37, name=bridge, type=bridge)
|
||
2017-01-05T00:36:04.795031609+08:00 container start 0fdb...ff37 (image=alpine:latest, name=test)
|
||
2017-01-05T00:36:09.830268747+08:00 container kill 0fdb...ff37 (image=alpine:latest, name=test, signal=15)
|
||
2017-01-05T00:36:09.840186338+08:00 container die 0fdb...ff37 (exitCode=143, image=alpine:latest, name=test)
|
||
2017-01-05T00:36:09.880113663+08:00 network disconnect e2e...29e2 (container=0fdb...ff37, name=bridge, type=bridge)
|
||
2017-01-05T00:36:09.890214053+08:00 container stop 0fdb...ff37 (image=alpine:latest, name=test)
|
||
|
||
$ docker events --since '2013-09-03T15:49:29'
|
||
2017-01-05T00:35:41.241772953+08:00 volume create testVol (driver=local)
|
||
2017-01-05T00:35:58.859401177+08:00 container create d9cd...4d70 (image=alpine:latest, name=test)
|
||
2017-01-05T00:36:04.703631903+08:00 network connect e2e1...29e2 (container=0fdb...ff37, name=bridge, type=bridge)
|
||
2017-01-05T00:36:04.795031609+08:00 container start 0fdb...ff37 (image=alpine:latest, name=test)
|
||
2017-01-05T00:36:09.830268747+08:00 container kill 0fdb...ff37 (image=alpine:latest, name=test, signal=15)
|
||
2017-01-05T00:36:09.840186338+08:00 container die 0fdb...ff37 (exitCode=143, image=alpine:latest, name=test)
|
||
2017-01-05T00:36:09.880113663+08:00 network disconnect e2e...29e2 (container=0fdb...ff37, name=bridge, type=bridge)
|
||
2017-01-05T00:36:09.890214053+08:00 container stop 0fdb...ff37 (image=alpine:latest, name=test)
|
||
|
||
$ docker events --since '10m'
|
||
2017-01-05T00:35:41.241772953+08:00 volume create testVol (driver=local)
|
||
2017-01-05T00:35:58.859401177+08:00 container create d9cd...4d70 (image=alpine:latest, name=test)
|
||
2017-01-05T00:36:04.703631903+08:00 network connect e2e1...29e2 (container=0fdb...ff37, name=bridge, type=bridge)
|
||
2017-01-05T00:36:04.795031609+08:00 container start 0fdb...ff37 (image=alpine:latest, name=test)
|
||
2017-01-05T00:36:09.830268747+08:00 container kill 0fdb...ff37 (image=alpine:latest, name=test, signal=15)
|
||
2017-01-05T00:36:09.840186338+08:00 container die 0fdb...ff37 (exitCode=143, image=alpine:latest, name=test)
|
||
2017-01-05T00:36:09.880113663+08:00 network disconnect e2e...29e2 (container=0fdb...ff37, name=bridge, type=bridge)
|
||
2017-01-05T00:36:09.890214053+08:00 container stop 0fdb...ff37 (image=alpine:latest, name=test)
|
||
|
||
$ docker events --since '2017-01-05T00:35:30' --until '2017-01-05T00:36:05'
|
||
2017-01-05T00:35:41.241772953+08:00 volume create testVol (driver=local)
|
||
2017-01-05T00:35:58.859401177+08:00 container create d9cd...4d70 (image=alpine:latest, name=test)
|
||
2017-01-05T00:36:04.703631903+08:00 network connect e2e1...29e2 (container=0fdb...ff37, name=bridge, type=bridge)
|
||
2017-01-05T00:36:04.795031609+08:00 container start 0fdb...ff37 (image=alpine:latest, name=test)
|
||
```
|
||
|
||
### Filter events by criteria
|
||
|
||
The following commands show several different ways to filter the `docker event`
|
||
output.
|
||
|
||
```console
|
||
$ docker events --filter 'event=stop'
|
||
|
||
2017-01-05T00:40:22.880175420+08:00 container stop 0fdb...ff37 (image=alpine:latest, name=test)
|
||
2017-01-05T00:41:17.888104182+08:00 container stop 2a8f...4e78 (image=alpine, name=kickass_brattain)
|
||
|
||
$ docker events --filter 'image=alpine'
|
||
|
||
2017-01-05T00:41:55.784240236+08:00 container create d9cd...4d70 (image=alpine, name=happy_meitner)
|
||
2017-01-05T00:41:55.913156783+08:00 container start d9cd...4d70 (image=alpine, name=happy_meitner)
|
||
2017-01-05T00:42:01.106875249+08:00 container kill d9cd...4d70 (image=alpine, name=happy_meitner, signal=15)
|
||
2017-01-05T00:42:11.111934041+08:00 container kill d9cd...4d70 (image=alpine, name=happy_meitner, signal=9)
|
||
2017-01-05T00:42:11.119578204+08:00 container die d9cd...4d70 (exitCode=137, image=alpine, name=happy_meitner)
|
||
2017-01-05T00:42:11.173276611+08:00 container stop d9cd...4d70 (image=alpine, name=happy_meitner)
|
||
|
||
$ docker events --filter 'container=test'
|
||
|
||
2017-01-05T00:43:00.139719934+08:00 container start 0fdb...ff37 (image=alpine:latest, name=test)
|
||
2017-01-05T00:43:09.259951086+08:00 container kill 0fdb...ff37 (image=alpine:latest, name=test, signal=15)
|
||
2017-01-05T00:43:09.270102715+08:00 container die 0fdb...ff37 (exitCode=143, image=alpine:latest, name=test)
|
||
2017-01-05T00:43:09.312556440+08:00 container stop 0fdb...ff37 (image=alpine:latest, name=test)
|
||
|
||
$ docker events --filter 'container=test' --filter 'container=d9cdb1525ea8'
|
||
|
||
2017-01-05T00:44:11.517071981+08:00 container start 0fdb...ff37 (image=alpine:latest, name=test)
|
||
2017-01-05T00:44:17.685870901+08:00 container start d9cd...4d70 (image=alpine, name=happy_meitner)
|
||
2017-01-05T00:44:29.757658470+08:00 container kill 0fdb...ff37 (image=alpine:latest, name=test, signal=9)
|
||
2017-01-05T00:44:29.767718510+08:00 container die 0fdb...ff37 (exitCode=137, image=alpine:latest, name=test)
|
||
2017-01-05T00:44:29.815798344+08:00 container destroy 0fdb...ff37 (image=alpine:latest, name=test)
|
||
|
||
$ docker events --filter 'container=test' --filter 'event=stop'
|
||
|
||
2017-01-05T00:46:13.664099505+08:00 container stop a9d1...e130 (image=alpine, name=test)
|
||
|
||
$ docker events --filter 'type=volume'
|
||
|
||
2015-12-23T21:05:28.136212689Z volume create test-event-volume-local (driver=local)
|
||
2015-12-23T21:05:28.383462717Z volume mount test-event-volume-local (read/write=true, container=562f...5025, destination=/foo, driver=local, propagation=rprivate)
|
||
2015-12-23T21:05:28.650314265Z volume unmount test-event-volume-local (container=562f...5025, driver=local)
|
||
2015-12-23T21:05:28.716218405Z volume destroy test-event-volume-local (driver=local)
|
||
|
||
$ docker events --filter 'type=network'
|
||
|
||
2015-12-23T21:38:24.705709133Z network create 8b11...2c5b (name=test-event-network-local, type=bridge)
|
||
2015-12-23T21:38:25.119625123Z network connect 8b11...2c5b (name=test-event-network-local, container=b4be...c54e, type=bridge)
|
||
|
||
$ docker events --filter 'container=container_1' --filter 'container=container_2'
|
||
|
||
2014-09-03T15:49:29.999999999Z07:00 container die 4386fb97867d (image=ubuntu:24.04)
|
||
2014-05-10T17:42:14.999999999Z07:00 container stop 4386fb97867d (image=ubuntu:24.04)
|
||
2014-05-10T17:42:14.999999999Z07:00 container die 7805c1d35632 (imager=redis:7.2)
|
||
2014-09-03T15:49:29.999999999Z07:00 container stop 7805c1d35632 (image=redis:7.2)
|
||
|
||
$ docker events --filter 'type=volume'
|
||
|
||
2015-12-23T21:05:28.136212689Z volume create test-event-volume-local (driver=local)
|
||
2015-12-23T21:05:28.383462717Z volume mount test-event-volume-local (read/write=true, container=562fe10671e9273da25eed36cdce26159085ac7ee6707105fd534866340a5025, destination=/foo, driver=local, propagation=rprivate)
|
||
2015-12-23T21:05:28.650314265Z volume unmount test-event-volume-local (container=562fe10671e9273da25eed36cdce26159085ac7ee6707105fd534866340a5025, driver=local)
|
||
2015-12-23T21:05:28.716218405Z volume destroy test-event-volume-local (driver=local)
|
||
|
||
$ docker events --filter 'type=network'
|
||
|
||
2015-12-23T21:38:24.705709133Z network create 8b111217944ba0ba844a65b13efcd57dc494932ee2527577758f939315ba2c5b (name=test-event-network-local, type=bridge)
|
||
2015-12-23T21:38:25.119625123Z network connect 8b111217944ba0ba844a65b13efcd57dc494932ee2527577758f939315ba2c5b (name=test-event-network-local, container=b4be644031a3d90b400f88ab3d4bdf4dc23adb250e696b6328b85441abe2c54e, type=bridge)
|
||
|
||
$ docker events --filter 'type=plugin'
|
||
|
||
2016-07-25T17:30:14.825557616Z plugin pull ec7b87f2ce84330fe076e666f17dfc049d2d7ae0b8190763de94e1f2d105993f (name=tiborvass/sample-volume-plugin:latest)
|
||
2016-07-25T17:30:14.888127370Z plugin enable ec7b87f2ce84330fe076e666f17dfc049d2d7ae0b8190763de94e1f2d105993f (name=tiborvass/sample-volume-plugin:latest)
|
||
|
||
$ docker events -f type=service
|
||
|
||
2017-07-12T06:34:07.999446625Z service create wj64st89fzgchxnhiqpn8p4oj (name=reverent_albattani)
|
||
2017-07-12T06:34:21.405496207Z service remove wj64st89fzgchxnhiqpn8p4oj (name=reverent_albattani)
|
||
|
||
$ docker events -f type=node
|
||
|
||
2017-07-12T06:21:51.951586759Z node update 3xyz5ttp1a253q74z1thwywk9 (name=ip-172-31-23-42, state.new=ready, state.old=unknown)
|
||
|
||
$ docker events -f type=secret
|
||
|
||
2017-07-12T06:32:13.915704367Z secret create s8o6tmlnndrgzbmdilyy5ymju (name=new_secret)
|
||
2017-07-12T06:32:37.052647783Z secret remove s8o6tmlnndrgzbmdilyy5ymju (name=new_secret)
|
||
|
||
$ docker events -f type=config
|
||
2017-07-12T06:44:13.349037127Z config create u96zlvzdfsyb9sg4mhyxfh3rl (name=abc)
|
||
2017-07-12T06:44:36.327694184Z config remove u96zlvzdfsyb9sg4mhyxfh3rl (name=abc)
|
||
|
||
$ docker events --filter 'scope=swarm'
|
||
|
||
2017-07-10T07:46:50.250024503Z service create m8qcxu8081woyof7w3jaax6gk (name=affectionate_wilson)
|
||
2017-07-10T07:47:31.093797134Z secret create 6g5pufzsv438p9tbvl9j94od4 (name=new_secret)
|
||
```
|
||
|
||
### Format the output
|
||
|
||
```console
|
||
$ docker events --filter 'type=container' --format 'Type={{.Type}} Status={{.Status}} ID={{.ID}}'
|
||
|
||
Type=container Status=create ID=2ee349dac409e97974ce8d01b70d250b85e0ba8189299c126a87812311951e26
|
||
Type=container Status=attach ID=2ee349dac409e97974ce8d01b70d250b85e0ba8189299c126a87812311951e26
|
||
Type=container Status=start ID=2ee349dac409e97974ce8d01b70d250b85e0ba8189299c126a87812311951e26
|
||
Type=container Status=resize ID=2ee349dac409e97974ce8d01b70d250b85e0ba8189299c126a87812311951e26
|
||
Type=container Status=die ID=2ee349dac409e97974ce8d01b70d250b85e0ba8189299c126a87812311951e26
|
||
Type=container Status=destroy ID=2ee349dac409e97974ce8d01b70d250b85e0ba8189299c126a87812311951e26
|
||
```
|
||
|
||
#### Format as JSON
|
||
|
||
To list events in JSON format, use the `json` directive, which is the same
|
||
`--format '{{ json . }}`.
|
||
|
||
```console
|
||
$ docker events --format json
|
||
|
||
{"status":"create","id":"196016a57679bf42424484918746a9474cd905dd993c4d0f4..
|
||
{"status":"attach","id":"196016a57679bf42424484918746a9474cd905dd993c4d0f4..
|
||
{"Type":"network","Action":"connect","Actor":{"ID":"1b50a5bf755f6021dfa78e..
|
||
{"status":"start","id":"196016a57679bf42424484918746a9474cd905dd993c4d0f42..
|
||
{"status":"resize","id":"196016a57679bf42424484918746a9474cd905dd993c4d0f4..
|
||
```
|