Docker¶
1 容器命令¶
# search镜像
docter search centos
# images 查看镜像
docker images
# pull镜像
docker pull centos:centos7
# run镜像
docker run --name centos7 -it centos:centos7
# 退出镜像,在容器内部退出
exit
# ps查询容器信息 ,容器id=f0cbcec9bdce
docker ps -a
# stop镜像
docker stop f0cbcec9bdce
# start镜像
docker start f0cbcec9bdce
# attach镜像
docker attach f0cbcec9bdce
# rm容器
docker rm f0cbcec9bdce
# rmi镜像
docker rmi centos:centos7
1.1 ps¶
- 功能:显示容器信息
- 语法:
docker ps [OPTIONS]
-a
:显示所有容器包括 Exited 状态的-q
:仅仅显示容器 id-n num
:限制显示的数量-l
:显示最晚创建的一个容器
1.2 rm¶
- 语法:
docker rm [OPTIONS] CONTAINER [CONTAINER...]
-f
: 强制删除(比如,当容器正在运行时会拒绝删除)- 功能:删除一个或多个容器
- 示例
$ docker rm centos7
centos7
1.3 run¶
- 语法:
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
-a
: 附加到STDIN
,STDOUT
或STDERR
上,默认全部附加-i
、-t
:-i
保持跟容器的交互(stdin),-t
分配终端 tty;通常一起使用,使容器在前台运行-d
: 让容器后台运行,并打印容器 id,与-it
前台运行相反-e
: 给容器设置环境变量--env-file [file-path]
: 将指定文件内的环境变量给容器--name [string]
: 给容器分配名字,如不指定,会自动生成一个--rm
: 退出容器时自动删除容器,默认从容器内部退出,容器是 exited 状态且不会被删除--cidfile [string]
: 打印容器 id 到本地指定文件中-w [path]
: 设置容器内工作目录-v [本地目录]:[容器目录]
: 将本地目录与容器目录绑定,容器和本地中的此目录数据共享--read-only
: 除了-v
挂载的目录,容器内其它目录都不可以写,只能读-p [ip]:[本地端口]:[容器端口]
: 将容器端口暴露在指定的本地端口上,ip 可以省略--ulimit ulimit
:设置 Ulimit 选项 (default[]
)- 示例 1:
-it
前台运行,-a
指定附加 stdin、stdout
$ docker run -a stdin -a stdout -it ubuntu:20.04 /bin/bash
root@bc922be36071:/# ls
bin boot dev etc home lib lib32 lib64 libx32 media mnt opt proc root run sbin srv sys tmp usr var
root@bc922be36071:/# exit
exit
- 示例 2:
-e
给容器传环境变量
~$ docker run -it --rm -e BB=hello ubuntu:20.04 /bin/bash
root@33c1c21f1f11:/# echo $BB
hello
- 示例 3:
--cidfile
打印容器 id 到指定文件
$ docker run --cidfile docker_id.txt ubuntu:20.04 echo "test"
test
$ cat docker_id.txt
e8a53390efd5f0420317468f64657f503e3e3e7e20387f8ca19a3d07d96ca4df
- 示例 4:
-w
设置工作目录
$ docker run -it --rm -w /dev ubuntu:20.04
root@9956dd002094:/dev#
1.3.1 卷挂载 -v¶
- 示例:
-v
挂载数据卷,可以看到,xxx 目录有了 code 目录下内容
~$ docker run -it -v /home/shw/code:/home/xxx ubuntu:20.04 /bin/bash
root@49087e5880b0:/# cd /home
root@49087e5880b0:/home# ls
xxx
root@49087e5880b0:/home# cd xxx
root@49087e5880b0:/home/xxx# ls
a.out fun.bin fun.sh fun.sh.x.c levelDB test1.cc test_nice.cc
1.3.2 映射宿主机端口 -p 和 -P¶
title: 容器端口映射宿主机端口作用?
通过宿主机端口映射,可以通过宿主机ip+映射port来访问容器。这样在docker所在主机之外,就能通过宿主机来访问容器。
- 语法形式:
-p [ip]:[本地端口]:[容器端口]
-P
: 自动映射容器内所有网络端口,需要在 dockerfile 里面 EXPOSE 声明
1.3.2.1 自动映射容器内所有网络端口¶
- 这会随机的选择本地一个端口与容器内端口关联
$ docker run -d -P nginx
d76bb3bec303f06cd5480f11342f4e920f67b30d2af5e35c14660bd8f18447b5
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d76bb3bec303 nginx "/docker-entrypoint.…" 2 minutes ago Up 2 minutes 0.0.0.0:49153->80/tcp magical_austin
1.3.2.2 指定 ip 和端口¶
- ip 可以忽略
$ docker run -d -p 127.0.0.1:8080:80 nginx
ac0173b4fe93d40cfe127fa72a7f58465d205900abfcfc080e141ea89613a657
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ac0173b4fe93 nginx "/docker-entrypoint.…" 5 seconds ago Up 2 seconds 127.0.0.1:8080->80/tcp heuristic_elbakyan
1.3.3 系统限制资源¶
- 示例
$ docker run --ulimit nofile=1024:1024 --rm alpine sh -c "ulimit -n"
1024
1.3.3.1 设置系统 capabilities¶
--cap-add list
:添加 linux capabilities--cap-drop list
:移除 linux capabilities
1.3.4 网络类型 --network¶
host
:容器使用和宿主机相同的网络。(ip 相同,hostname、hostid 相同)bridge(open)
:容器网络和宿主机不同。(ip 不同,hostname、hostid 不同)Container(join)
:联合挂载式网络模式,和其他容器共享网络None(Close)
:封闭式网络模式,不为容器配置网络
docker network create my-net
docker run -itd --network=my-net busybox
1.4 exec¶
- 功能:在 running 状态的容器上执行命令
- 语法:
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
-e variable=value
:设置环境变量-w dir
:设置工作目录-it
:分配 tty 已经附加到标准输入,通常用于进入容器--privileged
:给予额外权限
- 示例
[root@centos7 ~]# docker exec -it nginx01 /bin/bash
root@53e252620494:/# pwd
/
[root@centos7 ~]# docker exec -e dir=/root nginx01 sh -c "echo \$dir"
/root
[root@centos7 ~]# docker exec -w /root nginx01 sh -c "pwd"
/root
1.5 start¶
- 功能:将 Exited 状态的容器启动
- 语法:
docker start [OPTIONS] CONTAINER [CONTAINER...]
- 示例
[root@centos7 ~]# docker start nginx01
nginx01
1.6 restart¶
- 功能:重启容器
- 语法:
docker restart [OPTIONS] CONTAINER [CONTAINER...
- 示例
[root@centos7 ~]# docker restart nginx01
nginx01
1.7 logs¶
title: logs的实现原理?
docker logs会采集容器内所有进程输出到stdout上的内容。通过这种方式,在开发的镜像时,可以通过打印信息到stdout来达到获取容器运行状态的目的
- 示例
$ docker logs 镜像id
1.8 rename¶
- 功能:重命名容器名
- 语法:
docker rename CONTAINER NEW_NAME
- 示例
[root@centos7 ~]# docker rename nginx02 nginx01
[root@centos7 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
53e252620494 nginx:1.23 "/docker-entrypoint.…" 19 hours ago Up 28 seconds 0.0.0.0:49153->80/tcp, :::49153->80/tcp nginx01
1.9 cp¶
- 功能:在宿主机和容器间拷贝文件
- 语法:
docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH
:从容器拷贝到宿主机docker cp [OPTIONS] SRC_PATH CONTAINER:DEST_PATH
:从宿主机拷贝到容器
- 示例
[root@centos7 ~]# docker cp nginx01:/docker-entrypoint.sh ./
[root@centos7 ~]# ls
anaconda-ks.cfg docker-entrypoint.sh
[root@centos7 ~]# docker cp file1 nginx01:/
[root@centos7 ~]# docker exec -it nginx01 cat /file1
hello
1.10 attach¶
title: attach容器后怎么退出?
1. 当run容器时指定了`-it`参数时,可以使用`ctrl+p+q`detach
2. 其它情况,只能`ctrl+c`stop容器
- 功能:附加宿主机的标准 input, output, and error streams t 到运行的容器
- 语法:
docker attach [OPTIONS] CONTAINER
- 示例
# attach后,通过curl 命令访问nginx,将会打印下面的信息
[root@centos7 ~]# docker attach nginx01
172.17.0.1 - - [19/Jul/2022:10:45:21 +0000] "GET / HTTP/1.1" 200 615 "-" "curl/7.29.0" "-"
2022/07/19 10:45:23 [notice] 1#1: signal 28 (SIGWINCH) received
2022/07/19 10:45:23 [notice] 1#1: signal 28 (SIGWINCH) received
1.11 port¶
- 功能:显示容器端口映射
- 语法:
docker port CONTAINER [PRIVATE_PORT[/PROTO]]
- 示例
[root@centos7 cheat]# docker port nginx01
80/tcp -> 0.0.0.0:49153
80/tcp -> :::49153
1.12 top¶
- 功能:显示容器里面正在运行的进程
- 示例
[root@centos7 ~]# docker top nginx01
UID PID PPID C STIME TTY TIME CMD
root 4771 4750 0 15:14 ? 00:00:00 nginx: master process nginx -g daemon off;
101 4814 4771 0 15:14 ? 00:00:00 nginx: worker process
101 4815 4771 0 15:14 ? 00:00:00 nginx: worker process
2 network 命令¶
- 功能:容器的网络操作,包括网络创建、容器间网络联通
- 语法:
docker network COMMAND
ls
: 显示网络rm
: 删除网络create
:创建一个网络connect
:容器连接到某个网络上disconnect
:容器停止连接到某个网络- 示例:显示网络信息
$ docker network ls
NETWORK ID NAME DRIVER SCOPE
5166c0a84f04 bridge bridge local
afb60ed16654 host host local
b4c95b7a7147 none null local
2.1 create 创建网络¶
- 语法:
docker network create [OPTIONS] NETWORK
-d[--driver] string
: 指定网络类型,默认bridge
--subnet
:网络段--gateway
:网关--ip-range
:指定自动分配 ip 区间(通过 --ip 指定的不受此限制)--ipv6
:启用 ipv6 网络- 示例
$ docker network create --driver=bridge --subnet=172.28.0.0/16 --ip-range=172.28.5.0/24 --gateway=172.28.5.254 br0
ad60091eff86af00c4a8587f73b467a835f2a03c9cb48e5fba49067d7b98d5ab
$ docker network ls
NETWORK ID NAME DRIVER SCOPE
ad60091eff86 br0 bridge local
621ad2d99007 bridge bridge local
935a4c698f1d host host local
9fa841249a88 none null local
2.2 connect 容器连接网络¶
- 语法:
docker network connect [OPTIONS] NETWORK CONTAINER
--ip
: 指定 IPv4 address (e.g., 172.30.100.104),不指定则默认分配--ip6
:指定 IPv6 address (e.g., 2001:db8::33),不指定则默认分配- 示例 1:将容器 alpine-01 连接到网络 br0 中
$ docker network connect br0 alpine-01
## 进入容器,查看ip,新增了ip 172.28.5.0
$ ip a
12: eth1@if13: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue state UP
link/ether 02:42:ac:1c:05:00 brd ff:ff:ff:ff:ff:ff
inet 172.28.5.0/16 brd 172.28.255.255 scope global eth1
valid_lft forever preferred_lft forever
- 示例 2:指定 ip
$ docker network connect br0 --ip 172.28.5.3 alpine-01
## 进入容器,查看ip,新增了ip 172.28.5.3
$ ip a
14: eth2@if15: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue state UP
link/ether 02:42:ac:1c:05:03 brd ff:ff:ff:ff:ff:ff
inet 172.28.5.3/16 brd 172.28.255.255 scope global eth2
valid_lft forever preferred_lft forever
2.3 disconnect 移除容器内网络¶
docker network disconnect [OPTIONS] NETWORK CONTAINER
-f
:强制断开连接
- 示例
$ docker network disconnect br0 alpine-01
### 进入容器,ip a命令显示原网络已被删除
2.4 inspect 显示网络信息¶
- 功能:显示网络详细信息,已分配给容器的网络信息也会显示。
# docker network inspect br0
[
{
"Name": "br0",
"Id": "7b5dec1b5256822c3a55fccc8315cbf8182fe482f037b5b360ad512483515563",
"Created": "2023-05-22T14:43:18.223797939+08:00",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": {},
"Config": [
{
"Subnet": "172.28.0.0/16",
"IPRange": "172.28.5.0/24",
"Gateway": "172.28.5.254"
}
]
},
"Internal": false,
"Attachable": false,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {
"e47b942ee9be54c01147d2db7866e49aa78b58622387e6d874d6b48d3162ae88": {
"Name": "xenodochial_bhabha",
"EndpointID": "44130a296e04c1b6145342ebb07a6fcf8a88444b9b4991cc19afa1899394ff73",
"MacAddress": "02:42:ac:1c:05:03",
"IPv4Address": "172.28.5.3/16",
"IPv6Address": ""
}
},
"Options": {},
"Labels": {}
}
]
3 卷命令¶
- 语法:
docker volume COMMAND COMMAND
create
:创建卷update
:更新卷 (cluster volumes only)rm
:删除卷ls
:显示卷列表inspect
:显示卷的详细信息prune
:删除所有未使用的本地卷(被容器占用的不会删除)
3.1 create 创建卷¶
- 语法:
docker volume create [OPTIONS] [VOLUME]
--driver
:卷驱动名,默认 local--opt
:设置 driver 程序特定选项
- 示例
$ docker volume create hello
hello
### hello卷已经创建了
$ docker volume ls
DRIVER VOLUME NAME
local 36ba5b107876509602d962507b2c35b52bad9c282ea75c4bca5803dcf7e0b81e
local hello
### 容器使用hello卷,容器内挂载目录是/world
$ docker run --rm -it -v hello:/world --name='alpine-01' alpine
### 进入容器
$ df -h |grep world
/dev/mapper/centos-root
17.0G 2.2G 14.8G 13% /world
- 示例 2:创建 tmpfs
docker volume create --driver local \
--opt type=tmpfs \
--opt device=tmpfs \
--opt o=size=100m,uid=1000 \
foo
- 示例 3:创建 nfs 使用 nfs 卷需要 nfs 共享目录存在(修改/etc/exports 文件添加共享目录)
docker volume create --driver local \
--opt type=nfs \
--opt o=addr=192.168.211.10,rw \
--opt device=:/root/nfs \
nfs
3.2 inspect 查看卷信息¶
- 示例:
$ docker volume inspect hello
[
{
"CreatedAt": "2023-05-22T16:20:14+08:00",
"Driver": "local",
"Labels": {},
"Mountpoint": "/var/lib/docker/volumes/hello/_data",
"Name": "hello",
"Options": {},
"Scope": "local"
}
]
Mountpoint
:卷在主机上的存储路径
4 镜像命令¶
4.1 search¶
- 语法:
docker search [OPTIONS] TERM
--limit int
:限制查询结果数量,默认最多显示 25 条- 功能:从 Docker Hub 上查找镜像 1
- 示例
$ docker search --limit 3 centos
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
centos The official build of CentOS. 6802 [OK]
ansible/centos7-ansible Ansible on Centos7 135 [OK]
jdeathe/centos-ssh OpenSSH / Supervisor / EPEL/IUS/SCL Repos - … 121 [OK]
4.2 images¶
- 语法:
docker images [OPTIONS] [REPOSITORY[:TAG]]
-a
:显示所有镜像(默认)-q
:只显示镜像 id- 功能:显示镜像列表
- 示例
# 默认显示
--all
REPOSITORY TAG IMAGE ID CREATED SIZE
centos centos7 eeb6ee3f44bd 4 weeks ago 204MB
# 显示镜像id
$ docker images -q
eeb6ee3f44bd
4.3 image¶
- 语法:
docker image COMMAND
ls
:显示镜像,和docker imasges
类似build
:从 Dockerfile 中构建镜像pull
:从镜像库拉取镜像push
:提交镜像到镜像库rm
:删除镜像load
:从 tar 包中加载镜像save
:保存镜像到 tar 包中tag
:创建个新镜像并打个标签- 功能:执行镜像相关操作
4.4 pull¶
- 语法:
docker pull [OPTIONS] [镜像仓库地址[:端口号]/]仓库名[:TAG|@DIGEST]
- Docker 镜像仓库地址:地址的格式一般是 <域名/IP>[: 端口号]。默认地址是 Docker Hub(docker.io)。
- 仓库名:如之前所说,这里的仓库名是两段式名称,即 <用户名>/<软件名>。对于 Docker Hub,如果不给出用户名,则默认为 library,也就是官方镜像
-a
:下载镜像的所有 tag 版本(谨慎使用)-q
:禁止详细输出(一般不用)- 功能:从镜像仓库下载镜像到本地
- 如果不指定标签,默认会下载 tag 未 latest 版本
- 如果不知道仓库地址,默认从
docker.io/library/
- 示例
# 指定tag为centos7版本
$ docker pull centos:centos7
# 默认latest版本
$ docker pull centos
Using default tag: latest
$ docker pull ubuntu:18.04
18.04: Pulling from library/ubuntu
92dc2a97ff99: Pull complete
be13a9d27eb8: Pull complete
c8299583700a: Pull complete
Digest: sha256:4bc3ae6596938cb0d9e5ac51a1152ec9dcac2a1c50829c74abd9c4361e321b26
Status: Downloaded newer image for ubuntu:18.04
docker.io/library/ubuntu:18.04
4.5 rmi¶
- 语法:
docker rmi [OPTIONS] IMAGE [IMAGE...]
-f
:强制删除镜像(比如当镜像的容器还存在会拒绝执行)- 功能:删除一个或多个本地镜像
- 示例
$ docker rmi eeb6ee3f44bd
Error response from daemon: conflict: unable to delete eeb6ee3f44bd (must be forced) - image is being used by stopped container f0cbcec9bdce
$ docker rmi -f eeb6ee3f44bd
Untagged: centos:centos7
Untagged: centos@sha256:9d4bcbbb213dfd745b58be38b13b996ebb5ac315fe75711bd618426a630e0987
Deleted: sha256:eeb6ee3f44bd0b5103bb561b4c16bcb82328cfe5809ab675bb17ab3a16c517c9
4.6 build¶
- 功能:从容器构建镜像
- 语法:
docker build [OPTIONS] PATH | URL | -
4.7 save¶
- 功能:将镜像保存为 tar 包(通常用于镜像迁移)
- 语法:常用以下 2 种语法
docker save -o image.tar IMAGE
docker save IMAGE > image.tar
- 示例
[root@centos7 ~]# docker image ls nginx
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx 1.23 41b0e86104ba 8 days ago 142MB
[root@centos7 ~]# docker save nginx:1.23 >nginx.tar
[root@centos7 ~]# ls nginx.tar
nginx.tar
4.8 load¶
- 功能:从 tar 文件中加载镜像
- 语法:常用以下 2 种语法
docker load -i image.tar
docker load < image.tar
4.9 tag¶
tag不仅可以修改tag,也可以修改镜像名
- 功能:给镜像打上 tag 标签
- 语法:
docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
- 示例
[root@centos7 ~]# docker tag nginx:1.23 mynginx:1.0
[root@centos7 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mynginx 1.0 41b0e86104ba 8 days ago 142MB
nginx 1.23 41b0e86104ba 8 days ago 142MB
4.10 history¶
- 功能:查看镜像各层信息
- 语法:
docker history [OPTIONS] IMAGE
- 示例
[root@centos7 ~]# docker history nginx:1.23
IMAGE CREATED CREATED BY SIZE COMMENT
41b0e86104ba 6 days ago /bin/sh -c #(nop) CMD ["nginx" "-g" "daemon… 0B
<missing> 6 days ago /bin/sh -c #(nop) STOPSIGNAL SIGQUIT 0B
<missing> 6 days ago /bin/sh -c #(nop) EXPOSE 80 0B
<missing> 6 days ago /bin/sh -c #(nop) ENTRYPOINT ["/docker-entr… 0B
<missing> 6 days ago /bin/sh -c #(nop) COPY file:09a214a3e07c919a… 4.61kB
<missing> 6 days ago /bin/sh -c #(nop) COPY file:0fd5fca330dcd6a7… 1.04kB
<missing> 6 days ago /bin/sh -c #(nop) COPY file:0b866ff3fc1ef5b0… 1.96kB
<missing> 6 days ago /bin/sh -c #(nop) COPY file:65504f71f5855ca0… 1.2kB
<missing> 6 days ago /bin/sh -c set -x && addgroup --system -… 61.1MB
<missing> 6 days ago /bin/sh -c #(nop) ENV PKG_RELEASE=1~bullseye 0B
<missing> 6 days ago /bin/sh -c #(nop) ENV NJS_VERSION=0.7.5 0B
<missing> 6 days ago /bin/sh -c #(nop) ENV NGINX_VERSION=1.23.0 0B
<missing> 6 days ago /bin/sh -c #(nop) LABEL maintainer=NGINX Do… 0B
<missing> 6 days ago /bin/sh -c #(nop) CMD ["bash"] 0B
<missing> 6 days ago /bin/sh -c #(nop) ADD file:d978f6d3025a06f51… 80.4MB
5 system 相关命令¶
5.1 inspect¶
- 功能:显示容器、镜像、网络...的详细信息
- 语法:
docker inspect [OPTIONS] NAME|ID [NAME|ID...]
- 示例
[root@centos7 ~]# docker network ls
NETWORK ID NAME DRIVER SCOPE
036629fb8781 bridge bridge local
935a4c698f1d host host local
9fa841249a88 none null local
[root@centos7 ~]# docker inspect 036629fb8781
[
{
"Name": "bridge",
"Id": "036629fb87819c40a16afa0cd3d31f0616f6b6059f16179c444b7bc1ebf07df3",
"Created": "2022-07-20T11:32:19.846894222+08:00",
...省略...
5.2 system¶
5.2.1 docker system df¶
- 功能:显示磁盘使用情况
- 语法:
docker system df [OPTIONS]
-v
:显示详细信息
- 示例
[root@centos7 ~]# docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 2 2 167.8MB 0B (0%)
Containers 2 2 1.122kB 0B (0%)
Local Volumes 1 1 0B 0B
Build Cache 0 0 0B 0B
5.2.2 docker system info¶
- 作用同
docker info
5.2.3 docker system prune¶
5.2.4 docker system prune¶
- 功能:清理未使用的数据
- 语法:
docker system prune [OPTIONS]
-a
:清理所有未使用的镜像,而不仅仅是悬空镜像(镜像列表字段REPOSITORY、TAG 为<none>
)--volumes
:删除不再使用的卷(默认不删除)
- 示例
[root@centos7 ~]# docker system prune --volume
unknown flag: --volume
See 'docker system prune --help'.
[root@centos7 ~]# docker system prune --volumes
WARNING! This will remove:
- all stopped containers
- all networks not used by at least one container
- all volumes not used by at least one container
- all dangling images
- all dangling build cache
Are you sure you want to continue? [y/N] y
Deleted Volumes:
6cd5104992124d2a6de106ef8b9fc46fd3e2034bc9502859c950c446b583b3dd
11ab59d5af901f6cf2747cb689fb8a6997e988ef61a1bd637a6685cac95c58ac
Total reclaimed space: 19.89MB
5.3 info¶
- 功能:显示 docker 信息
- 语法:
docker info
- 示例
[root@centos7 ~]# docker info
Client:
Context: default
Debug Mode: false
Plugins:
app: Docker App (Docker Inc., v0.9.1-beta3)
buildx: Docker Buildx (Docker Inc., v0.8.2-docker)
scan: Docker Scan (Docker Inc., v0.17.0)
Server:
Containers: 2
Running: 2
Paused: 0
Stopped: 0
Images: 2
...省略...
5.4 stats¶
- 功能:显示容器资源使用统计数据的实时流
- 语法:
docker stats [OPTIONS] [CONTAINER...]
-a
:显示所有容器(默认只显示 running 状态容器)
- 示例
[root@centos7 cheat]# docker stats nginx01
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
53e252620494 nginx01 0.00% 3.156MiB / 972.4MiB 0.32% 656B / 0B 23.6MB / 8.19kB 3
5.5 version¶
- 功能:显示 docker 版本信息
- 示例
[root@centos7 ~]# docker version
Client: Docker Engine - Community
Version: 20.10.17
API version: 1.41
Go version: go1.17.11
Git commit: 100c701
Built: Mon Jun 6 23:05:12 2022
OS/Arch: linux/amd64
Context: default
Experimental: true
Server: Docker Engine - Community
Engine:
Version: 20.10.17
API version: 1.41 (minimum version 1.12)
Go version: go1.17.11
Git commit: a89b842
Built: Mon Jun 6 23:03:33 2022
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.6.6
GitCommit: 10c12954828e7c7c9b6e0ea9b0c02b01407d3ae1
runc:
Version: 1.1.2
GitCommit: v1.1.2-0-ga916309
docker-init:
Version: 0.19.0
GitCommit: de40ad0
疑问汇总¶
1 退出容器,却不停止容器¶
在容器内使用 Ctrl+P+Q 退出,容器依然保持 running 状态
2 如何在 run 容器时,不进入容器,但容器保持 running 状态¶
- 参考
- 容器保持运行状态是因为容器内有个前台进程在运行?所以关键是如何在容器内部启一个前台进程一直存在
-
Docker Hub 是一个官方镜像仓库 ↩