Docker常用命令

后台运行

[root@LuoKing ~]# docker run -d centos
9eca4f24be7b35e93e9d9461b423b38005b721a847ae7cf764e63ae353638c23
[root@LuoKing ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
# 通过查看docker运行程序发现,centos程序并没有在运行
# 常见的坑 :docker 容器使用后台运行,就必须要有一个前台进程,否则docker发现没有应用,就会自动停止程序
# 就像nginx启动后,docker发现没有提供程序,就会立刻停止,就是杀死了容器

查看日志

# 首先我们写一段shell脚本,让容器能在后台运行,防止被杀掉
docker run -d centos /bin/bash -c "while true;do echo Luoking;sleep 1;done"
[root@LuoKing ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d6d72bf69bd7 centos "/bin/bash -c 'while…" 8 minutes ago Up 8 minutes flamboyant_cartwright
# 显示日志
Options:
--details Show extra details provided to logs
-f, --follow Follow log output (持续输出日志)
--since string Show logs since timestamp (e.g. 2013-01-02T13:23:37Z) or relative (e.g. 42m for 42 minutes)
-n, --tail string Number of lines to show from the end of the logs (default "all") (要显示的日志的数量)
-t, --timestamps Show timestamps (显示时间)
--until string Show logs before a timestamp (e.g. 2013-01-02T13:23:37Z) or relative (e.g. 42m for 42 minutes)
[root@LuoKing ~]# docker logs -tf --tail 10 d6d72bf69bd7
2022-04-18T02:48:17.078339207Z Luoking
2022-04-18T02:48:18.080401256Z Luoking
2022-04-18T02:48:19.082524260Z Luoking
2022-04-18T02:48:20.084583745Z Luoking
2022-04-18T02:48:21.086629522Z Luoking
2022-04-18T02:48:22.088737193Z Luoking
2022-04-18T02:48:23.090871008Z Luoking
2022-04-18T02:48:24.092983801Z Luoking
2022-04-18T02:48:25.095072538Z Luoking
2022-04-18T02:48:26.097136633Z Luoking
2022-04-18T02:48:27.099236911Z Luoking
2022-04-18T02:48:28.101339009Z Luoking
2022-04-18T02:48:29.103465203Z Luoking
2022-04-18T02:48:30.105546531Z Luoking
......(持续打印日志中)
ctrl+c 退出command

查看容器中进程信息

[root@LuoKing ~]# docker top d6d72bf69bd7
UID (用户ID) PID(父进程ID) PPID (进程ID) C STIME TTY TIME CMD
root 12946 12927 0 10:36 pts/0 00:00:00 /bin/bash -c while true;do echo Luoking;sleep 1;done
root 15157 12946 0 10:50 pts/0 00:00:00 /usr/bin/coreutils --coreutils-prog-shebang=sleep /usr/bin/sleep 1

查看容器元数据(容器内部信息)

[root@LuoKing ~]# docker inspect d6d72bf69bd7
[
{
"Id": "d6d72bf69bd738f879703ac02a45468de1832fb016e7adc70e7be665f05ca895", #容器ID
"Created": "2022-04-18T02:36:58.357926502Z", #创建时间
"Path": "/bin/bash", #容器地址
"Args": [ # 参数
"-c",
"while true;do echo Luoking;sleep 1;done"
],
"State": { #容器状态
"Status": "running",
"Running": true,
"Paused": false,
"Restarting": false,
"OOMKilled": false,
"Dead": false,
"Pid": 12946,
"ExitCode": 0,
"Error": "",
"StartedAt": "2022-04-18T02:36:58.646528247Z",
"FinishedAt": "0001-01-01T00:00:00Z"
},
"Image": "sha256:5d0da3dc976460b72c77d94c8a1ad043720b0416bfc16c52c45d4847e53fadb6",
"ResolvConfPath": "/var/lib/docker/containers/d6d72bf69bd738f879703ac02a45468de1832fb016e7adc70e7be665f05ca895/resolv.conf",
"HostnamePath": "/var/lib/docker/containers/d6d72bf69bd738f879703ac02a45468de1832fb016e7adc70e7be665f05ca895/hostname",
"HostsPath": "/var/lib/docker/containers/d6d72bf69bd738f879703ac02a45468de1832fb016e7adc70e7be665f05ca895/hosts",
"LogPath": "/var/lib/docker/containers/d6d72bf69bd738f879703ac02a45468de1832fb016e7adc70e7be665f05ca895/d6d72bf69bd738f879703ac02a45468de1832fb016e7adc70e7be665f05ca895-json.log",
"Name": "/flamboyant_cartwright",
"RestartCount": 0,
"Driver": "overlay2",
"Platform": "linux", #运行平台
"MountLabel": "", #挂载标签
"ProcessLabel": "",
"AppArmorProfile": "",
"ExecIDs": null,
"HostConfig": {
"Binds": null,
"ContainerIDFile": "",
"LogConfig": {
"Type": "json-file",
"Config": {}
},
"NetworkMode": "default",
"PortBindings": {},
"RestartPolicy": {
"Name": "no",
"MaximumRetryCount": 0
},
"AutoRemove": false,
"VolumeDriver": "",
"VolumesFrom": null,
"CapAdd": null,
"CapDrop": null,
"CgroupnsMode": "host",
"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/ca0107b083000c28a667021bb00497bc4a865fb57e8d66a36b357c80a750094f-init/diff:/var/lib/docker/overlay2/e76e2a228c4bf0c5a0d8ed3dd129a4ea6f3f4dd7345b17cb878b76be6f11f842/diff",
"MergedDir": "/var/lib/docker/overlay2/ca0107b083000c28a667021bb00497bc4a865fb57e8d66a36b357c80a750094f/merged",
"UpperDir": "/var/lib/docker/overlay2/ca0107b083000c28a667021bb00497bc4a865fb57e8d66a36b357c80a750094f/diff",
"WorkDir": "/var/lib/docker/overlay2/ca0107b083000c28a667021bb00497bc4a865fb57e8d66a36b357c80a750094f/work"
},
"Name": "overlay2"
},
"Mounts": [],
"Config": {
"Hostname": "d6d72bf69bd7",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": true,
"AttachStderr": true,
"Tty": true,
"OpenStdin": false,
"StdinOnce": false,
"Env": [ #环境
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
],
"Cmd": [ #命令command
"/bin/bash",
"-c",
"while true;do echo Luoking;sleep 1;done"
],
"Image": "centos", #镜像名
"Volumes": null,
"WorkingDir": "",
"Entrypoint": null,
"OnBuild": null,
"Labels": {
"org.label-schema.build-date": "20210915",
"org.label-schema.license": "GPLv2",
"org.label-schema.name": "CentOS Base Image",
"org.label-schema.schema-version": "1.0",
"org.label-schema.vendor": "CentOS"
}
},
"NetworkSettings": { #网络设置
"Bridge": "",
"SandboxID": "772d5d397061df3310a04ec275d81308e3944a01bd58f23f38979fb0aad7c031",
"HairpinMode": false,
"LinkLocalIPv6Address": "",
"LinkLocalIPv6PrefixLen": 0,
"Ports": {},
"SandboxKey": "/var/run/docker/netns/772d5d397061",
"SecondaryIPAddresses": null,
"SecondaryIPv6Addresses": null,
"EndpointID": "bfac16eec9a068af7f4f07ee9afa9eb988a9348fd30cb5768c50f61b54d63fce",
"Gateway": "172.17.0.1",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"IPAddress": "172.17.0.3",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"MacAddress": "02:42:ac:11:00:03",
"Networks": { #网络
"bridge": {
"IPAMConfig": null,
"Links": null,
"Aliases": null,
"NetworkID": "5d4f1344dd3bb52ee89c62e0643c06c19bac93f1dafc292636b96f367c9e914e",
"EndpointID": "bfac16eec9a068af7f4f07ee9afa9eb988a9348fd30cb5768c50f61b54d63fce",
"Gateway": "172.17.0.1",
"IPAddress": "172.17.0.3",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "02:42:ac:11:00:03",
"DriverOpts": null
}
}
}
}
]

进入当前正在运行的容器

#方式一 docker exec -it 容器ID 默认命令行 (会开启一个新的终端)(常用)
-i, --interactive 保持 STDIN 打开,即使没有附加
--privileged 赋予命令扩展权限
-t, --tty 分配一个伪 TTY(终端)
[root@LuoKing ~]# docker exec -it d6d72bf69bd7 /bin/bash
[root@d6d72bf69bd7 /]
#方式二 docker attach 容器ID
[root@LuoKing ~]# docker attach d6d72bf69bd7 (会经常正在运行的程序,不会开启新的终端)
Luoking
Luoking
Luoking
Luoking
Luoking

从容器内拷贝文件到主机上

# docker cp 容器ID:资源路径 主机上的具体路径
[root@LuoKing ~]# docker exec -it d6d72bf69bd7 /bin/bash
[root@d6d72bf69bd7 /]# cd home
[root@d6d72bf69bd7 home]# ls
[root@d6d72bf69bd7 home]# touch luo.java
[root@d6d72bf69bd7 home]# ls
luo.java
[root@d6d72bf69bd7 home]# exit
[root@LuoKing ~]# cd /home
[root@LuoKing home]# ls
- luoking
[root@LuoKing home]# docker cp d6d72bf69bd7:/home/luo.java /home
[root@LuoKing home]# ls
- luo.java luoking
操作成功
posted @   小罗要有出息  阅读(40)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
点击右上角即可分享
微信分享提示