docker查看,删除,停止,暂停,恢复容器详解

一,查看容器(假设你有一个名为 `my_app_container` 的容器)。

  1. 查看所有容器(包括已停止的)

docker ps -a

输出示例:

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

123456789abc my_app_image "npm start" 2 hours ago Up 2 hours 3000/tcp my_app_container

def4567890ab another_image "python app.py" 3 days ago Exited (0) 3 days ago another_container

  1. 获取容器的详细信息

docker inspect my_app_container

输出示例(部分):

{ "Id": "123456789abc", "Created": "2023-10-10T12:34:56.789Z", "Path": "npm", "Args": \["start"\], "State": { "Status": "running", "Running": true, "Paused": false, "Restarting": false, "OOMKilled": false, "Dead": false, "Pid": 1234, "ExitCode": 0, "Error": "", "StartedAt": "2023-10-10T12:35:00.123Z", "FinishedAt": "0001-01-01T00:00:00Z" }, "Image": "sha256:abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef", "ResolvConfPath": "/var/lib/docker/containers/123456789abc/resolv.conf", "HostnamePath": "/var/lib/docker/containers/123456789abc/hostname", "HostsPath": "/var/lib/docker/containers/123456789abc/hosts", "LogPath": "/var/lib/docker/containers/123456789abc/123456789abc-.log", "Name": "/my_app_container", "RestartCount": 0, "Driver": "overlay2", "Platform": "linux", "MountLabel": "", "ProcessLabel": "", "AppArmorProfile": "", "ExecIDs": null, "HostConfig": { "Binds": null, "ContainerIDFile": "", "LogConfig": { "Type": "-file", "Config": {} }, "NetworkMode": "default", "PortBindings": { "3000/tcp": \[ { "HostIp": "", "HostPort": "3000" }

},

"RestartPolicy": {

"Name": "no",

"MaximumRetryCount": 0

},

"AutoRemove": false,

"VolumeDriver": "",

"VolumesFrom": null,

"CapAdd": null,

"CapDrop": null,

"CgroupnsMode": "private",

"Dns": \[\],

"DnsOptions": \[\],

"DnsSearch": \[\],

"ExtraHosts": null,

"GroupAdd": null,

"IpcMode": "private",

"Cgroup": "",

"Links": null,

"OomScoreAdj": 0,

"PidMode": "",

"Privileged": false,

"PublishAllPorts": false,

"ReadonlyRootfs": false,

"SecurityOpt": null,

"UTSMode": "",

"UsernsMode": "",

"ShmSize": 67108864,

"Runtime": "runc",

"ConsoleSize": [

0,

0

],

"Isolation": "",

"CpuShares": 0,

"Memory": 0,

"NanoCpus": 0,

"CgroupParent": "",

"BlkioWeight": 0,

"BlkioWeightDevice": \[\],

"BlkioDeviceReadBps": null,

"BlkioDeviceWriteBps": null,

"BlkioDeviceReadIOps": null,

"BlkioDeviceWriteIOps": null,

"CpuPeriod": 0,

"CpuQuota": 0,

"CpuRealtimePeriod": 0,

"CpuRealtimeRuntime": 0,

"CpusetCpus": "",

"CpusetMems": "",

"Devices": \[\],

"DeviceCgroupRules": null,

"DeviceRequests": null,

"KernelMemory": 0,

"KernelMemoryTCP": 0,

"MemoryReservation": 0,

"MemorySwap": 0,

"MemorySwappiness": null,

"OomKillDisable": false,

"PidsLimit": null,

"Ulimits": null,

"CpuCount": 0,

"CpuPercent": 0,

"IOMaximumIOps": 0,

"IOMaximumBandwidth": 0,

"MaskedPaths": [

"/proc/asound",

"/proc/acpi",

"/proc/kcore",

"/proc/keys",

"/proc/latency_stats",

"/proc/timer_list",

"/proc/timer_stats",

"/proc/sched_debug",

"/proc/scsi",

"/sys/firmware"

],

"ReadonlyPaths": [

"/proc/bus",

"/proc/fs",

"/proc/irq",

"/proc/sys",

"/proc/sysrq-trigger"

]

},

"GraphDriver": {

"Data": {

"LowerDir": "/var/lib/docker/overlay2/abcdef1234567890/diff:/var/lib/docker/overlay2/ghijklmnopqrstuv/diff",

"MergedDir": "/var/lib/docker/overlay2/123456789abc/merged",

"UpperDir": "/var/lib/docker/overlay2/123456789abc/diff",

"WorkDir": "/var/lib/docker/overlay2/123456789abc/work"

},

"Name": "overlay2"

},

"Mounts": \[\],

"Config": {

"Hostname": "123456789abc",

"Domainname": "",

"User": "",

"AttachStdin": false,

"AttachStdout": false,

"AttachStderr": false,

"ExposedPorts": {

"3000/tcp": {}

},

"Tty": false,

"OpenStdin": false,

"StdinOnce": false,

"Env": [

"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",

"NODE_ENV=production"

],

"Cmd": [

"npm",

"start"

],

"Image": "my_app_image",

"Volumes": null,

"WorkingDir": "/app",

"Entrypoint": null,

"OnBuild": null,

"Labels": {}

},

"NetworkSettings": {

"Bridge": "",

"SandboxID": "123456789abc",

"HairpinMode": false,

"LinkLocalIPv6Address": "",

"LinkLocalIPv6PrefixLen": 0,

"Ports": {

"3000/tcp": [

{

"HostIp": "0.0.0.0",

"HostPort": "3000"

}

]

},

"SandboxKey": "/var/run/docker/netns/123456789abc",

"SecondaryIPAddresses": null,

"SecondaryIPv6Addresses": null,

"EndpointID": "123456789abc",

"Gateway": "172.17.0.1",

"GlobalIPv6Address": "",

"GlobalIPv6PrefixLen": 0,

"IPAddress": "172.17.0.2",

"IPPrefixLen": 16,

"IPv6Gateway": "",

"MacAddress": "02:42:ac:11:00:02",

"Networks": {

"bridge": {

"IPAMConfig": null,

"Links": null,

"Aliases": null,

"NetworkID": "123456789abc",

"EndpointID": "123456789abc",

"Gateway": "172.17.0.1",

"IPAddress": "172.17.0.2",

"IPPrefixLen": 16,

"IPv6Gateway": "",

"GlobalIPv6Address": "",

"GlobalIPv6PrefixLen": 0,

"MacAddress": "02:42:ac:11:00:02",

"DriverOpts": null

}

}

}

}

]

  1. 获取容器的IP地址

docker inspect -f '{{ .NetworkSettings.IPAddress }}' my_app_container

输出示例:

172.17.0.2

  1. 查看容器的日志输出

docker logs --tail 100 -f my_app_container

输出示例:

> my_app@1.0.0 start

> node app.js

Server running on port 3000

  1. 查看容器内的所有进程

docker top my_app_container

输出示例:

UID PID PPID C STIME TTY TIME CMD

root 1234 0 0 12:35 ? 00:00:00 npm start

node 1235 1234 0 12:35 ? 00:00:01 node app.js

  1. 实时显示容器的资源使用统计信息

docker stats my_app_container

输出示例:

CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS

123456789abc my_app_container 0.10% 10.5MiB / 1.952GiB 0.52% 1.2kB / 0B 0B / 0B 2

  1. 列出容器的端口映射

docker port my_app_container

输出示例:

3000/tcp -> 0.0.0.0:3000

  1. 在容器中执行命令(进入容器的 Bash 终端)

docker exec -it my_app_container /bin/bash

输出示例(进入容器后的终端):

root@123456789abc:/app# ls

app.js package. node_modules

  1. 在容器中后台执行命令(创建一个测试文件)

docker exec -d my_app_container touch /tmp/testfile

验证:

docker exec -it my_app_container ls /tmp

输出示例:

testfile

  1. 实时显示 Docker 守护进程产生的事件(仅显示容器启动事件)

docker events --filter 'event=start'

输出示例:

2023-10-10T12:35:00.123456Z container start 123456789abc (image=my_app_image, name=my_app_container)

  1. 定期检查容器资源使用情况

watch -n 5 'docker stats --no-stream

输出示例(每5秒更新一次):

CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS

123456789abc my_app_container 0.10% 10.5MiB / 1.952GiB 0.52% 1.2kB / 0B 0B / 0B 2

  1. 结合 `jq` 处理 `docker inspect` 输出

docker inspect my_app_container | jq '.0.NetworkSettings.IPAddress'

输出示例:

"172.17.0.2"

  1. 查看容器的前100条日志,并显示时间戳

docker logs --tail 100 -t my_app_continer

输出示例:

2023-10-10T12:35:00.123456Z my_app_container Server running on port 3000

  1. 查看从某个时间点之后的容器日志

docker logs --since "2023-10-10" my_app_container

输出示例:

Server running on port 3000

  1. 查看容器的资源使用情况,不持续更新

docker stats --no-stream my_app_container

输出示例:

CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS

123456789abc my_app_container 0.10% 10.5MiB / 1.952GiB 0.52% 1.2kB / 0B 0B / 0B 2

  1. 过滤显示特定类型的事件(例如容器启动事件)

docker events --filter 'event=start'

输出示例:

2023-10-10T12:35:00.123456Z container start 123456789abc (image=my_app_image, name=my_app_container)

  1. 查看容器的详细信息,格式化输出

docker inspect -f '{{ .Name }} {{ .State.Status }}' my_app_container

输出示例:

/my_app_container running

  1. 查看容器的磁盘使用情况

docker inspect -s my_app_container

输出示例:

false

  1. 在容器中以特定用户身份执行命令

docker exec -u root -it my_app_container /bin/bash

输出示例(进入容器后的终端):

root@123456789abc:/app# whoami

root

  1. 查看容器的环境变量

docker inspect -f '{{ .Config.Env }}' my_app_container

输出示例:

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin NODE_ENV=production

  1. 查看容器的挂载点

docker inspect -f '{{ .Mounts }}' my_app_container

输出示例:

  1. 查看容器的网络配置

docker inspect -f '{{ .NetworkSettings }}' my_app_container

输出示例(部分):

{

"Bridge": "",

"SandboxID": "123456789abc",

"HairpinMode": false,

"LinkLocalIPv6Address": "",

"LinkLocalIPv6PrefixLen": 0,

"Ports": {

"3000/tcp": [

{

"HostIp": "0.0.0.0",

"HostPort": "3000"

}

]

},

"SandboxKey": "/var/run/docker/netns/123456789abc",

"SecondaryIPAddresses": null,

"SecondaryIPv6Addresses": null,

"EndpointID": "123456789abc",

"Gateway": "172.17.0.1",

"GlobalIPv6Address": "",

"GlobalIPv6PrefixLen": 0,

"IPAddress": "172.17.0.2",

"IPPrefixLen": 16,

"IPv6Gateway": "",

"MacAddress": "02:42:ac:11:00:02",

"Networks": {

"bridge": {

"IPAMConfig": null,

"Links": null,

"Aliases": null,

"NetworkID": "123456789abc",

"EndpointID": "123456789abc",

"Gateway": "172.17.0.1",

"IPAddress": "172.17.0.2",

"IPPrefixLen": 16,

"IPv6Gateway": "",

"GlobalIPv6Address": "",

"GlobalIPv6PrefixLen": 0,

"MacAddress": "02:42:ac:11:00:02",

"DriverOpts": null

}

}

}

  1. 查看容器的镜像信息

docker inspect -f '{{ .Image }}' my_app_container

输出示例:

sha256:abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef

  1. 查看容器的创建时间

docker inspect -f '{{ .Created }}' my_app_container

输出示例:

2023-10-10T12:34:56.789Z

  1. 查看容器的重启策略

docker inspect -f '{{ .HostConfig.RestartPolicy }}' my_app_container

输出示例:

{Name:no MaximumRetryCount:0}

二.删除容器

示例:

删除所有容器

docker ps -aq |xargs docker rm -f 或者 docker rm -f `docker ps -aq`

删除停止状态容器

docker rm `docker ps -qf status=exited`

三.容器启动和停止 暂停恢复

批量启动所有容器

docker start `ps -aq`

批量停止所有容器

docker stop `ps -aq`

批量暂停所有容器

docker pause `ps -aq`

批量恢复所有容器

docker unpaus`ps -aq`

相关推荐
XIAOHEZIcode4 小时前
Linux系统鼠标偏移常见原因以及修复方案
linux·运维·游戏
用户03284722207020 小时前
如何搭建本地yum源(上)
运维
武子康21 小时前
调查研究-183 Apple container:Mac 上用轻量 VM 跑 Linux 容器,Swift 会改写本地容器体验吗?
docker·容器·apple
大树884 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠4 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质4 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
Inhand陈工4 天前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
Alsn864 天前
等待学习-学习目录:Docker 容器安全攻防
学习·安全·docker
酣大智4 天前
ARP代理--工作原理
运维·网络·arp·arp代理
shushangyun_4 天前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化