容器操作基础命令
命令周期
![在这里插入图片描述](https://img-blog.csdnimg.cn/ab6bfd9bf1a84b8dae87f28edf0808b5.png)
一次性启动容器docker run
一次性运行容器,退出后立即删除,用于测试
[root@localhost ~]# docker run --rm alpine cat /etc/issue
Welcome to Alpine Linux 3.17
Kernel \r on an \m (\l)
[root@localhost ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b7baaa64d341 nginx "/docker-entrypoin..." 4 minutes ago Up 4 minutes 80/tcp quizzical_visvesvaraya
0a2ec19dde80 nginx "/docker-entrypoin..." 18 minutes ago Exited (0) 17 minutes ago practical_mayer
f6f7197e1c0d 1ca69d1bf49a "catalina.sh run" 6 hours ago Exited (1) 6 hours ago elastic_payne
创建容器后直接进入并退出
[root@localhost ~]
/
cat: read error: Is a directory
/
/
bin etc lib mnt proc run srv tmp var
dev home media opt root sbin sys usr
/
/
[root@localhost ~]
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c40aef438238 alpine "/bin/sh" About a minute ago Exited (0) 6 seconds ago alpine2
df2d23a5c303 nginx "/docker-entrypoin..." 3 minutes ago Exited (0) 2 minutes ago nginx2
b7baaa64d341 nginx "/docker-entrypoin..." 51 minutes ago Up 51 minutes 80/tcp quizzical_visvesvaraya
0a2ec19dde80 nginx "/docker-entrypoin..." About an hour ago Exited (0) About an hour ago practical_mayer
f6f7197e1c0d 1ca69d1bf49a "catalina.sh run" 6 hours ago Exited (1) 6 hours ago elastic_payne
[root@localhost ~]
/
/
[root@localhost ~]
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
74140a7dc4ed alpine "/bin/sh" About a minute ago Exited (130) 42 seconds ago alpine3
c40aef438238 alpine "/bin/sh" 5 minutes ago Exited (0) 4 minutes ago alpine2
df2d23a5c303 nginx "/docker-entrypoin..." 7 minutes ago Exited (0) 5 minutes ago nginx2
b7baaa64d341 nginx "/docker-entrypoin..." 55 minutes ago Exited (0) 2 minutes ago quizzical_visvesvaraya
0a2ec19dde80 nginx "/docker-entrypoin..." About an hour ago Exited (0) About an hour ago practical_mayer
f6f7197e1c0d 1ca69d1bf49a "catalina.sh run" 6 hours ago Exited (1) 6 hours ago elastic_payne
守护式容器:
- 能够长期运行
- 无需交互式会话
- 适合运行应用程序和服务
启动前台守护式进程
[root@localhost ~]# docker run nginx
/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf
10-listen-on-ipv6-by-default.sh: info: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf
/docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
/docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh
/docker-entrypoint.sh: Configuration complete; ready for start up
2022/12/05 13:31:03 [notice] 1#1: using the "epoll" event method
2022/12/05 13:31:03 [notice] 1#1: nginx/1.23.2
2022/12/05 13:31:03 [notice] 1#1: built by gcc 10.2.1 20210110 (Debian 10.2.1-6)
2022/12/05 13:31:03 [notice] 1#1: OS: Linux 3.10.0-862.el7.x86_64
2022/12/05 13:31:03 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 1048576:1048576
2022/12/05 13:31:03 [notice] 1#1: start worker processes
2022/12/05 13:31:03 [notice] 1#1: start worker process 28
2022/12/05 13:31:03 [notice] 1#1: start worker process 29
启动后台守护式容器
[root@localhost ~]
de713a9d19fb6d5ca36c87b26e2a122714eefe85c90e151c4875577c3dea7c36
[root@localhost ~]
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
de713a9d19fb nginx "/docker-entrypoin..." 16 seconds ago Up 15 seconds 80/tcp hardcore_mahavira
默认容器重启宿主机不会自动启动,需要设置开机自启
docker run -d --name nginx --restart=always -p 80:80 nginx
–privileged选项
使用该参数,container内的root拥有真正的root权限。否则,container内的root只是外部的一个普通用户权限。privileged启动的容器,可以看到很多host上的设备,并且可以执行mount。甚至允许你在docker容器中启动docker容器。
让容器获取root权限
[root@localhost ~]# docker run -it -d --privileged nginx
[root@localhost ~]# docker exec -it 9f0364af37f2e sh
# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
|-sda1 8:1 0 1G 0 part
`-sda2 8:2 0 19G 0 part
sr0 11:0 1 906M 0 rom
查看容器信息
docker ps [OPTIONS]
选项:
-a, --all Show all containers (default shows just running)
-q, --quiet Only display numeric IDs
-s, --size Display total file sizes
-f, --filter filter Filter output based on conditions provided
-l, --latest Show the latest created container (includes all states)
-n, --last int Show n last created containers (includes all states)
(default -1)
[root@localhost ~]
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9f0364af37f2 nginx "/docker-entrypoin..." 3 minutes ago Up 3 minutes 80/tcp confident_wing
de713a9d19fb nginx "/docker-entrypoin..." 11 minutes ago Up 11 minutes 80/tcp hardcore_mahavira
[root@localhost ~]
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9f0364af37f2 nginx "/docker-entrypoin..." 4 minutes ago Up 4 minutes 80/tcp confident_wing
2308e2dc92c7 nginx "/docker-entrypoin..." 5 minutes ago Exited (0) 4 minutes ago pedantic_lichterman
de713a9d19fb nginx "/docker-entrypoin..." 12 minutes ago Up 12 minutes 80/tcp hardcore_mahavira
1fae1b41d472 nginx "/docker-entrypoin..." 14 minutes ago Exited (0) 13 minutes ago sleepy_morse
b7baaa64d341 nginx "/docker-entrypoin..." About an hour ago Exited (0) 22 minutes ago quizzical_visvesvaraya
0a2ec19dde80 nginx "/docker-entrypoin..." About an hour ago Exited (0) About an hour ago practical_mayer
f6f7197e1c0d 1ca69d1bf49a "catalina.sh run" 7 hours ago Exited (1) 7 hours ago elastic_payne
[root@localhost ~]
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2308e2dc92c7 nginx "/docker-entrypoin..." 6 minutes ago Exited (0) 6 minutes ago pedantic_lichterman
1fae1b41d472 nginx "/docker-entrypoin..." 16 minutes ago Exited (0) 15 minutes ago sleepy_morse
b7baaa64d341 nginx "/docker-entrypoin..." About an hour ago Exited (0) 24 minutes ago quizzical_visvesvaraya
0a2ec19dde80 nginx "/docker-entrypoin..." About an hour ago Exited (0) About an hour ago practical_mayer
f6f7197e1c0d 1ca69d1bf49a "catalina.sh run" 7 hours ago Exited (1) 7 hours ago elastic_payne
[root@localhost ~]
9f0364af37f2
2308e2dc92c7
de713a9d19fb
1fae1b41d472
b7baaa64d341
0a2ec19dde80
f6f7197e1c0d
[root@localhost ~]
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES SIZE
9f0364af37f2 nginx "/docker-entrypoin..." 9 minutes ago Up 9 minutes 80/tcp confident_wing 1.09 kB (virtual 142 MB)
2308e2dc92c7 nginx "/docker-entrypoin..." 9 minutes ago Exited (0) 9 minutes ago pedantic_lichterman 1.09 kB (virtual 142 MB)
de713a9d19fb nginx "/docker-entrypoin..." 16 minutes ago Up 16 minutes 80/tcp hardcore_mahavira 1.09 kB (virtual 142 MB)
1fae1b41d472 nginx "/docker-entrypoin..." 18 minutes ago Exited (0) 17 minutes ago sleepy_morse 1.09 kB (virtual 142 MB)
b7baaa64d341 nginx "/docker-entrypoin..." About an hour ago Exited (0) 27 minutes ago quizzical_visvesvaraya 1.09 kB (virtual 142 MB)
0a2ec19dde80 nginx "/docker-entrypoin..." About an hour ago Exited (0) About an hour ago practical_mayer 1.09 kB (virtual 142 MB)
f6f7197e1c0d 1ca69d1bf49a "catalina.sh run" 7 hours ago Exited (1) 7 hours ago elastic_payne 0 B (virtual 474 MB)
[root@localhost ~]
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9f0364af37f2 nginx "/docker-entrypoin..." 11 minutes ago Up 11 minutes 80/tcp confident_wing
查看容器内的进程
[root@localhost ~]
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9f0364af37f2 nginx "/docker-entrypoin..." 12 minutes ago Up 12 minutes 80/tcp confident_wing
de713a9d19fb nginx "/docker-entrypoin..." 19 minutes ago Up 19 minutes 80/tcp hardcore_mahavira
[root@localhost ~]
UID PID PPID C STIME TTY TIME CMD
root 12591 12575 0 21:40 pts/1 00:00:00 nginx: master process nginx -g daemon off;
101 12641 12591 0 21:40 pts/1 00:00:00 nginx: worker process
101 12642 12591 0 21:40 pts/1 00:00:00 nginx: worker process
查看容器资源使用情况
docker stats [OPTIONS] [CONTAINER...]
Display a live stream of container(s) resource usage statistics
Options:
-a, --all Show all containers (default shows just running)
--format string Pretty-print images using a Go template
--no-stream Disable streaming stats and only pull the first result
--no-trunc Do not truncate output
[root@localhost ~]
CONTAINER CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
9f0364af37f2 0.00% 1.977 MiB / 1.936 GiB 0.10% 648 B / 648 B 8.19 kB / 14.3 kB 3
CONTAINER CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
9f0364af37f2 0.00% 1.977 MiB / 1.936 GiB 0.10% 648 B / 648 B 8.19 kB / 14.3 kB 3
[root@localhost ~]
-e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx128m"
elasticsearch:7.6.2
[root@localhost ~]
[
{
"Id": "9f0364af37f2e57e164a5c5cabca592aa2647a5969e58c0e256d123ddd512e33",
"Created": "2022-12-05T13:40:26.024870946Z",
"Path": "/docker-entrypoint.sh",
"Args": [
"nginx",
"-g",
"daemon off;"
],
"State": {
"Status": "running",
"Running": true,
"Paused": false,
"Restarting": false,
"OOMKilled": false,
"Dead": false,
"Pid": 12591,
"ExitCode": 0,
"Error": "",
"StartedAt": "2022-12-05T13:40:26.263471921Z",
"FinishedAt": "0001-01-01T00:00:00Z"
},
"Image": "sha256:88736fe827391462a4db99252117f136b2b25d1d31719006326a437bb40cb12d",
"ResolvConfPath": "/var/lib/docker/containers/9f0364af37f2e57e164a5c5cabca592aa2647a5969e58c0e256d123ddd512e33/resolv.conf",
"HostnamePath": "/var/lib/docker/containers/9f0364af37f2e57e164a5c5cabca592aa2647a5969e58c0e256d123ddd512e33/hostname",
"HostsPath": "/var/lib/docker/containers/9f0364af37f2e57e164a5c5cabca592aa2647a5969e58c0e256d123ddd512e33/hosts",
"LogPath": "",
"Name": "/confident_wing",
"RestartCount": 0,
"Driver": "overlay2",
"MountLabel": "",
"ProcessLabel": "",
"AppArmorProfile": "",
"ExecIDs": null,
"HostConfig": {
"Binds": null,
"ContainerIDFile": "",
"LogConfig": {
"Type": "journald",
"Config": {}
},
"NetworkMode": "default",
"PortBindings": {},
"RestartPolicy": {
"Name": "no",
"MaximumRetryCount": 0
},
"AutoRemove": false,
"VolumeDriver": "",
"VolumesFrom": null,
"CapAdd": null,
"CapDrop": null,
"Dns": [],
"DnsOptions": [],
"DnsSearch": [],
"ExtraHosts": null,
"GroupAdd": null,
"IpcMode": "",
"Cgroup": "",
"Links": null,
"OomScoreAdj": 0,
"PidMode": "",
"Privileged": true,
"PublishAllPorts": false,
"ReadonlyRootfs": false,
"SecurityOpt": [
"label=disable"
],
"UTSMode": "",
"UsernsMode": "",
"ShmSize": 67108864,
"Runtime": "docker-runc",
"ConsoleSize": [
0,
0
],
"Isolation": "",
"CpuShares": 0,
"Memory": 0,
"NanoCpus": 0,
"CgroupParent": "",
"BlkioWeight": 0,
"BlkioWeightDevice": null,
"BlkioDeviceReadBps": null,
"BlkioDeviceWriteBps": null,
"BlkioDeviceReadIOps": null,
"BlkioDeviceWriteIOps": null,
"CpuPeriod": 0,
"CpuQuota": 0,
"CpuRealtimePeriod": 0,
"CpuRealtimeRuntime": 0,
"CpusetCpus": "",
"CpusetMems": "",
"Devices": [],
"DiskQuota": 0,
"KernelMemory": 0,
"MemoryReservation": 0,
"MemorySwap": 0,
"MemorySwappiness": -1,
"OomKillDisable": false,
"PidsLimit": 0,
"Ulimits": null,
"CpuCount": 0,
"CpuPercent": 0,
"IOMaximumIOps": 0,
"IOMaximumBandwidth": 0
},
"GraphDriver": {
"Name": "overlay2",
"Data": {
"LowerDir": "/var/lib/docker/overlay2/37be5b88929dbacfc1bb6a8261eebec9cbc64901c5dad748545f1c9b87511038-init/diff:/var/lib/docker/overlay2/123e463d6c5d6be68ae28d44cf7a94609a2ea65aec9a2504279c284a79a0ccd5/diff:/var/lib/docker/overlay2/97493a1a8b79f5fa5995298ffa63ada448c9809c20b1ad9a26090900ce8e8001/diff:/var/lib/docker/overlay2/3e6953ea3ddefc3fe32c31151935ebd49a74cbab3d7b16262a62d4b753dd416b/diff:/var/lib/docker/overlay2/5594f280528430e925f3ef35b6a91674ff1be95a721a3166548602a24916f63d/diff:/var/lib/docker/overlay2/c57ac6832a9a6084c6a58136092600f9edd6586d20f6ef5eaae860ad034a80de/diff:/var/lib/docker/overlay2/6808292a4f65f555b987700ef19d8e80f36c8038cc22a918ec878ebba66d283c/diff",
"MergedDir": "/var/lib/docker/overlay2/37be5b88929dbacfc1bb6a8261eebec9cbc64901c5dad748545f1c9b87511038/merged",
"UpperDir": "/var/lib/docker/overlay2/37be5b88929dbacfc1bb6a8261eebec9cbc64901c5dad748545f1c9b87511038/diff",
"WorkDir": "/var/lib/docker/overlay2/37be5b88929dbacfc1bb6a8261eebec9cbc64901c5dad748545f1c9b87511038/work"
}
},
"Mounts": [],
"Config": {
"Hostname": "9f0364af37f2",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": false,
"AttachStderr": false,
"ExposedPorts": {
"80/tcp": {}
},
"Tty": true,
"OpenStdin": true,
"StdinOnce": false,
"Env": [
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"NGINX_VERSION=1.23.2",
"NJS_VERSION=0.7.7",
"PKG_RELEASE=1~bullseye"
],
"Cmd": [
"nginx",
"-g",
"daemon off;"
],
"Image": "nginx",
"Volumes": null,
"WorkingDir": "",
"Entrypoint": [
"/docker-entrypoint.sh"
],
"OnBuild": null,
"Labels": {
"maintainer": "NGINX Docker Maintainers <docker-maint@nginx.com>"
},
"StopSignal": "SIGQUIT"
},
"NetworkSettings": {
"Bridge": "",
"SandboxID": "37deffc865f72444001cd21beef553eff41eb32055ac52f71499351ae21a02a7",
"HairpinMode": false,
"LinkLocalIPv6Address": "",
"LinkLocalIPv6PrefixLen": 0,
"Ports": {
"80/tcp": null
},
"SandboxKey": "/var/run/docker/netns/37deffc865f7",
"SecondaryIPAddresses": null,
"SecondaryIPv6Addresses": null,
"EndpointID": "87a8b8df3d302be4098bff1d2ee3df8b2e9534bf35336f42445972374265fe09",
"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": "c4cc8e1907ddde91359cfba674cb182658718ed8dcc3e55007ad34f26c34425f",
"EndpointID": "87a8b8df3d302be4098bff1d2ee3df8b2e9534bf35336f42445972374265fe09",
"Gateway": "172.17.0.1",
"IPAddress": "172.17.0.3",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "02:42:ac:11:00:03"
}
}
}
}
]
[root@localhost ~]
2022-12-05 09:38:04.272576423 +0800 CST
容器的启动和停止
docker start $(docker ps -a -q)
docker stop $(docker ps -a -q)
进入正在运行的容器
- attach方式
docker attach 容器名,attach 类似于vnc,操作会在同一个容器的多个会话界面同步显示,所有使用此方式进入容器的操作都是同步显示的,且使用exit退出后容器自动关闭,不推荐使用,需要进入到有shell环境的容器
docker attach [OPTIONS] CONTAINER
- exec方式
在运行中的容器启动新进程,可以执行单次命令,以及进入容器测试环境使用此方式,使用exit退出,但容器还在运行,此为推荐方式
docker exec -it 容器ID bash|sh
docker 暴露端口
docker run -P 可以将事先容器预定义的所有端口映射宿主机的随机端口,默认从32768开始使用随机端口 时,当停止容器后再启动可能会导致端口发生变化
ocker start $(docker ps -a -q)
docker stop $(docker ps -a -q)
进入正在运行的容器
1. attach方式
docker attach 容器名,attach 类似于vnc,操作会在同一个容器的多个会话界面同步显示,所有使用此方式进入容器的操作都是同步显示的,且使用exit退出后容器自动关闭,不推荐使用,需要进入到有shell环境的容器
docker attach [OPTIONS] CONTAINER
2. exec方式
在运行中的容器启动新进程,可以执行单次命令,以及进入容器测试环境使用此方式,使用exit退出,但容器还在运行,此为推荐方式
docker exec -it 容器ID bash|sh
docker 暴露端口
docker run -P 可以将事先容器预定义的所有端口映射宿主机的随机端口,默认从32768开始使用随机端口 时,当停止容器后再启动可能会导致端口发生变化
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)