| # 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 1000 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 1000 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.. |
| ``` |