命令行参考
容器引擎
Docker daemon 是一个常驻后台的系统进程,docker 子命令执行前先要启动 docker daemon。
如果是通过 rpm
包或者系统包管理工具安装的,就可以使用 systemctl start docker
来启动 docker daemon。
docker 命令支持多个参数选项,对于参数选项有以下约定:
单个字符的选项可以合并在一起,如:
docker run -t -i ubuntu:14.04 /bin/bash
可以写成
docker run -ti ubuntu:14.04 /bin/bash
在命令帮助中看到的如
--icc=true
之类的 bool 命令选项,如果没有使用这个选项,则这个标志位的值就是在命令帮助中看到的默认值,如果使用了这个选项则这个标志位的值就是命令帮助中看的值的相反值,如果启动 docker daemon 没有加上使用--icc
选项,则默认设置了--icc=true
,如果使用了--icc
选项则表示是--icc=false
。在命令帮助中看到的
--attach=[]
之类的选项,表示这类的选项可以多次设置,如:docker run --attach=stdin --attach=stdout -i -t ubuntu:14.04 /bin/bash
在命令帮助中看到的 -a, –attach=[] 之类的选项,表示这种选项既可以用
-a value
指定也可以用--attach=value
指定。如:docker run -a stdin --attach=stdout -i -t ubuntu:14.04 /bin/bash
--name=””
之类的选项需要的是一个字符串,只能指定一次,-c=0
之类的选项需要的是一个整数,只能指定一次。
表 1 docker daemon 启动时指定参数详解
参数名称 | 说明 |
---|---|
--api-cors-header | 开放远程API调用的 CORS 头信息。这个接口开关对想进行二次开发的上层应用提供了支持。为remote API设置CORS头信息。 |
--authorization-plugin=[] | 指定认证插件。 |
-b, --bridge=“” | 挂载已经存在的网桥设备到 Docker 容器里。注意,使用 none 可以停用容器里的网络。 |
--bip=“” | 使用 CIDR 地址来设定自动创建的网桥的 IP。注意,此参数和 -b 不能一起使用。 |
--cgroup-parent | 为所有容器设定 cgroup 父目录。 |
--config-file=/etc/docker/daemon.json | 启动 docker daemon 的配置文件。 |
--containerd | 指定 containerd 的 socket 路径。 |
-D, --debug=false | 开启 Debug 模式。 |
--default-gateway | 容器 IPv4 地址的默认网关。 |
--default-gateway-v6 | 容器 IPv6 地址的默认网关。 |
--default-ulimit=[] | 容器的默认 ulimit 值。 |
--disable-legacy-registry | 不允许使用原版 registry。 |
--dns=[] | 强制容器使用DNS服务器。例如: --dns 8.8.x.x |
--dns-opt=[] | 指定使用 DNS 的选项。 |
–dns-search=[] | 强制容器使用指定的 DNS 搜索域名。 例如: --dns-search example.com |
--exec-opt=[] | 设置运行时执行选项。例如支持native.umask选项:# 启动的容器umask值为0022 --exec-opt native.umask=normal #启动的容器umask值为0027(默认值) --exec-opt native.umask=secure 注意如果 docker create/run 也配置了 native.umask 参数则以 docker create/run 中的配置为准。 |
--exec-root=/var/run/docker | 指定执行状态文件存放的根目录。 |
--fixed-cidr=“” | 设定子网固定 IP(ex: 10.20.0.0/16),这个子网 IP 必须属于网桥内的。 |
--fixed-cidr-v6 | 同上,使用与 IPv6。 |
-G, --group=“docker” | 在后台运行模式下,赋予指定的 Group 到相应的 unix socket 上。注意,当此参数 --group 赋予空字符串时,将去除组信息。 |
-g, --graph=“/var/lib/docker” | 配置 Docker 运行时根目录。 |
-H, --host=[] | 在后台模式下指定 socket 绑定,可以绑定一个或多个 tcp://host:port, unix:///path/to/socket, fd://* 或 fd://socketfd。例如: $ dockerd -H tcp://0.0.0.0:2375 或者 $ export DOCKER_HOST=“tcp://0.0.0.0:2375” |
--insecure-registry=[] | 指定非安全连接的仓库,docker 默认所有的连接都是 TLS 证书来保证安全的,如果仓库不支持 https 连接或者证书是 docker daemon 不清楚的证书颁发机构颁发的,则启动 daemon 的时候要指定如 --insecure-registry=192.168.1.110:5000 ,使用私有仓库都要指定。 |
--image-layer-check=true | 开启镜像层完整性检查功能,设置为 true;关闭该功能,设置为 false。如果没有该参数,默认为关闭。docker 启动时会检查镜像层的完整性,如果镜像层被破坏,则相关的镜像不可用。docker 进行镜像完整性校验时,无法校验内容为空的文件和目录,以及链接文件。因此若镜像因掉电导致上述类型文件丢失,docker 的镜像数据完整性校验可能无法识别。docker 版本变更时需要检查是否支持该参数,如果不支持,需要从配置文件中删除。 |
--icc=true | 启用容器间的通信。 |
--ip=“0.0.0.0” | 容器绑定端口时使用的默认 IP 地址。 |
--ip-forward=true | 启动容器的 net.ipv4.ip_forward。 |
--ip-masq=true | 使能 IP 伪装。 |
--iptables=true | 启动 Docker 容器自定义的 iptable 规则。 |
-l, --log-level=info | 设置日志级别。 |
--label=[] | 设置 daemon 标签,以 key=value 形式设置。 |
--log-driver=json-file | 设置容器日志的默认日志驱动。 |
--log-opt=map[] | 设置日志驱动参数。 |
--mtu=0 | 设置容器网络的 MTU 值,如果没有这个参数,选用默认 route MTU,如果没有默认 route,就设置成常量值 1500。 |
-p, --pidfile=“/var/run/docker.pid” | 后台进程 PID 文件路径。 |
--raw-logs | 带有全部时间戳并不带ANSI颜色方案的日志。 |
--registry-mirror=[] | 指定 dockerd 优先使用的镜像仓库。 |
-s, --storage-driver=“” | 强制容器运行时使用指定的存储驱动 |
--selinux-enabled=false | 启用 selinux 支持,3.10.0-862.14 及以上内核版本不支持– selinux-enabled=true。 |
--storage-opt=[] | 配置存储驱动的参数,存储驱动为 devicemapper 的时候有效(e.g. dockerd --storage-opt dm.blocksize=512K)。 |
--tls=false | 启动 TLS 认证开关。 |
--tlscacert=“/root/.docker/ca.pem” | 通过 CA 认证过的的 certificate 文件路径。 |
--tlscert=“/root/.docker/cert.pem” | TLS 的 certificate 文件路径。 |
--tlskey=“/root/.docker/key.pem” | TLS 的 key 文件路径。 |
--tlsverify=false | 使用 TLS 并做后台进程与客户端通讯的验证。 |
--insecure-skip-verify-enforce | 是否强制跳过证书的主机名/域名验证,默认为 false(不跳过)。 |
--use-decrypted-key=true | 指定使用解密私钥。 |
--userland-proxy=true | 容器 LO 设备使用 userland proxy。 |
--userns-remap | 容器内使用 user 命名空间的用户映射表。 说明:当前版本不支持该参数。 |
容器管理
当前docker支持的子命令,按照功能划分为以下几组:
功能划分 | 命令 | 命令功能 | |
---|---|---|---|
主机环境相关 | version | 查看docker版本信息 | |
info | 查看docker系统和主机环境信息 | ||
容器相关 | 容器生命周期管理 | create | 由image创建一个容器 |
run | 由image创建一个容器并运行 | ||
start | 开始一个已停止运行的容器 | ||
stop | 停止一个运行中的容器 | ||
restart | 重启一个容器 | ||
wait | 等待一个容器停止,并打印出退出码 | ||
rm | 删除一个容器 | ||
容器内进程管理 | pause | 暂停一个容器内的所有进程 | |
unpause | 恢复一个容器内被暂停的所用进程 | ||
top | 查看容器内的进程 | ||
exec | 在容器内执行进程 | ||
容器检视工具 | ps | 查看运行中的容器(不加任何选项) | |
logs | 显示一个容器的日志信息 | ||
attach | 连接到一个容器的标准输入输出 | ||
inspect | 返回容器的底层信息 | ||
port | 列出容器与主机的端口映射 | ||
diff | 返回容器相对于镜像中的rootfs所作的改动 | ||
cp | 容器与主机之间复制文件 | ||
export | 将一个容器中的文件系统导出为一个tar包 | ||
stats | 实时查看容器的资源占用情况 | ||
images相关 | 生成一个新image | build | 通过一个Dockerfile构建一个image |
commit | 基于容器的rootfs创建一个新的image | ||
import | 将tar包中的内容作为文件系统创建一个image | ||
load | 从一个tar包中加载一个image | ||
与image仓库有关 | login | 登录一个registry | |
logout | 登出一个registry | ||
pull | 从registry中拉取一个image | ||
push | 将一个image推送到registry中 | ||
search | 在registry中搜寻image | ||
与image管理有关 | images | 显示系统中的image | |
history | 显示一个image的变化历史 | ||
rmi | 删除image | ||
tag | 给image打标签 | ||
save | 将一个image保存到一个tar包中 | ||
其他 | events | 从docker daemon中获取实时事件 | |
rename | 重命名容器 |
其中有些子命令还有一些参数选项如 docker run,通过 docker COMMAND –help
可以查看相应 COMMAND 命令的帮助,命令选项参考上文的命令选项约定。下面详细介绍每个命令的使用。
attach
用法:docker attach [OPTIONS] CONTAINER
功能:附加到一个运行着的容器
选项:
参数 | 说明 |
---|---|
--no-stdin=false | 不附加STDIN |
--sig-proxy=true | 代理所有到容器内部的信号,不代理SIGCHLD, SIGKILL, SIGSTOP |
示例:
$ sudo docker attach attach_test
root@2988b8658669:/# ls bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
commit
用法:docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
功能:由一个容器创建一个新的image
选项:
参数 | 说明 |
---|---|
-a, --author=“” | 指定作者 |
-m, --message=“” | 提交的信息 |
-p, --pause=true | 在提交过程中暂停容器 |
示例:
运行一个容器,然后将这个容器提交成一个新的 image
$ sudo docker commit test busybox:test
sha256:be4672959e8bd8a4291fbdd9e99be932912fe80b062fba3c9b16ee83720c33e1
$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
busybox latest e02e811dd08f 2 years ago 1.09MB
cp
用法:docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH
功能:从指定的容器内的一个路径复制文件或文件夹到主机的指定路径中,或者把主机的文件或者文件夹拷贝到容器内。
注意:docker cp 不支持容器内 /proc,/sys,/dev,/tmp 等虚拟文件系统以及用户在容器内自行挂载的文件系统内的文件拷贝。
选项:
参数 | 说明 |
---|---|
-a, --archive | 将拷贝到容器的文件属主设置为容器运行用户(–user) |
-L, --follow-link | 解析并跟踪文件的符号链接 |
示例:
复制 reigistry 容器中 /test 目录到主机的 /home/aaa 目录中
$ sudo docker cp registry:/test /home/aaa
create
用法:docker create [OPTIONS] IMAGE [COMMAND] [ARG…]
功能:使用 image 创建一个新的容器,并将返回一个容器的 ID,创建之后的容器用 docker start 命令启动,OPTIONS 用于创建容器时对容器进行配置,有些选项将覆盖image中对容器的配置,COMMAND 指定容器启动时执行的命令。
选项:
表 2 参数说明
参数 | 参数含义 |
---|---|
-a --attach=[] | 使控制台 Attach 到容器内进程的 STDIN,STDOUT,STDERR |
--name=“” | 指定容器的名字 |
--add-host=[host:ip] | 在容器内的 /etc/hosts 中添加一个 hostname 到 IP 地址的映射e.g. --add-host=test:10.10.10.10 |
--annotation | 设置容器的 annotations。例如支持native.umask选项:--annotation native.umask=normal # 启动的容器umask值为0022 --annotation native.umask=secure # 启动的容器umask值为0027 注意如果没有配置该参数,则使用 dockerd 中的 umask 配置。 |
--blkio-weight | blockio 的相对权重,从 10 到 1000 |
--blkio-weight-device=[] | blockio 权重(设置相对权重) |
-c, --cpu-shares=0 | 容器获得主机 CPU 的相对权重,通过设置这个选项获得更高的优先级, 默认所有的容器都是获得相同的 CPU 优先权。 |
--cap-add=[] | 添加 Linux 权能 |
--cap-drop=[] | 清除 Linux 权能 |
--cgroup-parent | 为容器设置 cgroup 父目录 |
--cidfile=“” | 将容器的 ID 写到指定的文件中 e.g. --cidfile=/home/cidfile-test 将该容器的ID写入到 /home/cidfile-test 中 |
--cpu-period | 设置 CFS(完全公平调度策略)进程的 CPU 周期。 默认值为 100ms;一般 --cpu-period参数和 --–cpu-quota 是配合使用的, 比如 --cpu-period=50000 --cpu-quota=25000 ,意味着如果有 1 个 CPU,该容器可以每 50ms 获取到 50% 的 CPU。 使用 --cpus=0.5 也可达到同样的效果 |
--cpu-quota | 设置 CFS(完全公平调度策略)进程的 CPU 配额,默认为 0,即没有限制 |
--cpuset-cpus | 设置容器中进程允许运行的 CPU (0-3, 0,1)。默认没有限制 |
--cpuset-mems | 设置容器中进程运行运行的内存内存节点 (0-3, 0,1),只对 NUMA 系统起作用 |
--device=[] | 将主机的设备添加到容器中 (e.g. –device=/dev/sdc:/dev/xvdc:rwm) |
--dns=[] | 强制容器使用指定的 dns 服务器 (e.g. 创建容器时指定 --dns=114.114.xxx.xxx, 将在容器的 /etc/resolv.conf 中写入 nameserver 114.114.xxx.xxx 并将覆盖原来的内容) |
--dns-opt=[] | 设置 DNS 选项 |
--dns-search=[] | 强制容器使用指定的 dns 搜索域名 |
-e, --env=[] | 设置容器的环境变量 --env=[KERNEL_MODULES=]: 在容器中插入指定模块。目前仅支持 Host 主机上有的模块, 且容器删除后 Host 主机上模块仍然驻留, 且容器需要同时指定 --hook-spec 选项。以下都是参数的合法格式: KERNEL_MODULERS= KERNEL_MODULERS=a KERNEL_MODULERS=a,b KERNEL_MODULERS=a,b, |
--entrypoint=“” | 覆盖 image 中原有的 entrypoint,entrypoint 设置容器启动时执行的命令 |
--env-file=[] | 从一个文件中读取环境变量,多个环境变量在文件中按行分割 (e.g. --env-file=/home/test/env,其中 env 文件中存放了多个环境变量) |
--expose=[] | 开放一个容器内部的端口,使用下文介绍的 -P 选项 将会使开放的端口映射到主机的一个端口。 |
--group-add=[] | 指定容器添加到额外的组 |
-h, --hostname=“” | 设置容器主机名 |
--health-cmd | 设置容器健康检查执行的命令 |
--health-interval | 相邻两次命令执行的间隔时间,默认 30s |
--health-timeout | 单次检查命令执行的时间上限,超时则任务命令执行失败,默认 30s |
--health-start-period | 容器启动距离第一次执行健康检查开始的时间,默认 0s |
--health-retries | 健康检查失败最大的重试次数,默认 3 |
--health-exit-on-unhealthy | 容器被检查为非健康后停止容器,默认 false |
--host-channel=[] | 设置一个通道供容器内进程与主机进行通信,格式: <host path>:<container path>:<rw/ro>:<size limit> |
-i, --interactive=false | 设置 STDIN 打开即使没有 attached |
--ip | 设置容器的 IPv4 地址 |
--ip6 | 设置容器的 IPv6 地址 |
--ipc | 指定容器的 ipc 命名空间 |
--isolation | 指定容器隔离策略 |
-l, --label=[] | 设置容器的标签 |
--label-file=[] | 从文件中获取标签 |
--link=[] | 链接到其他容器,这个选项将在容器中添加一些被链接容器IP地址 和端口的环境变量及在 /etc/hosts 中添加一条映射 (e.g. --link=name:alias) |
--log-driver | 设置容器的日志驱动 |
--log-opt=[] | 设置日志驱动选项 |
-m, --memory=“” | 设置容器的内存限制,格式<number><optional unit>, 其中 unit = b, k, m or g。该参数最小值为4m。 |
--mac-address | 设置容器的mac地址 (e.g. 92:d0:c6:0a:xx:xx) |
--memory-reservation | 设置容器内存限制,默认与 --memory一致。 可认为 --memory 是硬限制,--memory-reservation 是软限制; 当使用内存超过预设值时,会动态调整 (系统回收内存时尝试将使用内存降低到预设值以下), 但不确保一定不超过预设值。 一般可以和 --memory 一起使用,数值小于 --memory 的预设值。 |
--memory-swap | 设置普通内存和交换分区的使用总量,-1 为不做限制。 如果不设置,则为 --memory值的 2 倍, 即 SWAP 可再使用与 --memory 相同的内存量。 |
--memory-swappiness=-1 | 设置容器使用交换内存的时机,以剩余内存百分比为度量(0-100) |
--net=“bridge” | 设置容器的网络模式,当前 1.3.0 版本的 docker 有四个模式: bridge、host、none、container:<name|id>。默认使用的是bridge。 bridge:使用桥接模式在docker daemon启动时使用的网桥上创建一个网络栈。 host:在容器内使用主机的网络栈 none:不使用网络 container:<name|id>:重复利用另外一个容器的网络栈 |
--no-healthcheck | 设置容器不使用健康检查 |
--oom-kill-disable | 禁用 OOM killer,建议如果不设置 -m 参数,也不要设置此参数。 |
--oom-score-adj | 调整容器的 oom 规则(-1000到1000) |
-P, --publish-all=false |
将容器开放的所有端口一一映射到主机的端口, 通过主机的端口可以访问容器内部,通过下文介绍的 docker port 命令可以查看具体容器端口和主机端口具体的映射关系。 |
-p, --publish=[] | 将容器内的一个端口映射到主机的一个端口, format: ip:hostPort:containerPort | ip::containerPort | hostPort:containerPort |containerPort, 如果没有指定IP代表侦听主机所有网卡的访问, 如果没有指定 hostPort,表示自动分配主机的端口。 |
--pid | 设置容器的 PID 命名空间 |
--privileged=false | 给予容器额外的权限,当使用了 --privileged 选项, 容器将可以访问主机的所有设备。 |
--restart=“” | 设置容器退出时候的重启规则,当前 1.3.1 版本支持 3 个规则: no:当容器停止时,不重启。 on-failure:当容器退出码为非0时重启容器,这个规则可以附加最大重启次数, 如on-failure:5,最多重启5次。 always:无论退出码是什么都退出。 |
--read-only | 将容器的根文件系统以只读的形式挂载 |
--security-opt=[] | 容器安全规则 |
--shm-size | /dev/shm 设备的大小,默认值是 64M |
--stop-signal=SIGTERM | 容器停止信号,默认为 SIGTERM |
-t, --tty=false | 分配一个伪终端 |
--tmpfs=[] | 挂载 tmpfs 目录 |
-u, --user=“” | 指定用户名或者用户 ID |
--ulimit=[] | ulimit 选项 |
--userns | 指定容器的 user 命名空间 |
-v, --volume=[] | 将主机的一个目录挂载到容器内部,或者在容器中创建一个新卷(e.g. -v /home/test:/home 将主机的 /home/test 目录挂载到容器的 /home目录下, -v /tmp 在容器中的根目录下创建 tmp 文件夹, 该文件夹可以被其他容器用–volumes-from选项共享 )。 不支持将主机目录挂载到容器 /proc子目录,否则启动容器会报错。 |
--volume-driver | 设置容器的数据卷驱动,可选。 |
--volumes-from=[] | 将另外一个容器的卷挂载到本容器中,实现卷的共享(e.g. -volumes-from container_name将container_name 中的卷挂载到这个容器中 )。 -v和 --volumes-from=[] 是两个非常重要的选项用于数据的备份和热迁移。 |
-w, --workdir=“” | 指定容器的工作目录,进入容器时的目录 |
示例:
创建了一个名为 ubuntu 的容器,创建之后的容器用 docker start
命令启动。
$ sudo docker create -ti --name=ubuntu ubuntu /bin/bash
diff
用法:docker diff CONTAINER
功能:检视容器的差异,相比于容器刚创建时做了哪些改变
选项:无
示例:
$ sudo docker diff registry
C /root
A /root/.bash_history
A /test
exec
用法:docker exec [OPTIONS] CONTAINER COMMAND [ARG…]
功能:在一个运行的容器内执行命令
选项:
参数 | 说明 |
---|---|
-d, --detach=false | 在后台运行 |
-i, --interactive=false | 保持容器的 STDIN 打开 |
-t, --tty=false | 分配一个虚拟终端 |
--privileged | 以特权模式执行命令 |
-u, --user | 指定用户名或者 UID |
示例:
$ sudo docker exec -ti exec_test ls
bin etc lib media opt root sbin sys tmp var
dev home lib64 mnt proc run srv test usr
export
用法:docker export CONTAINER
功能:将一个容器的文件系统内容以tar包导出到STDOUT
选项:无
示例:
将名为 busybox 的容器的内容导出到 busybox.tar 包中:
$ sudo docker export busybox > busybox.tar
$ ls
busybox.tar
inspect
用法:docker inspect [OPTIONS] CONTAINER|IMAGE [CONTAINER|IMAGE…]
功能:返回一个容器或者镜像的底层信息
选项:
参数 | 说明 |
---|---|
-f, --format=“” | 按照给定的格式输出信息 |
-s, --size | 若查询类型为容器,显示该容器的总体文件大小 |
--type | 返回指定类型的 JSON 格式 |
-t, --time=120 | 超时时间的秒数, 若在该时间内 docker inspect 未执行成功,则停止等待并立即报错。默认为 120 秒。 |
示例:
返回一个容器的信息
$ sudo docker inspect busybox_test [ { "Id": "9fbb8649d5a8b6ae106bb0ac7686c40b3cbd67ec2fd1ab03e0c419a70d755577", "Created": "2019-08-28T07:43:51.27745746Z", "Path": "bash", "Args": [], "State": { "Status": "running", "Running": true, "Paused": false, "Restarting": false, "OOMKilled": false, "Dead": false, "Pid": 64177, "ExitCode": 0, "Error": "", "StartedAt": "2019-08-28T07:43:53.021226383Z", "FinishedAt": "0001-01-01T00:00:00Z" }, ......
按照给定格式返回一个容器的指定信息,下面的例子返回 ubuntu_test 容器 IP 地址
$ sudo docker inspect -f {{.NetworkSettings.IPAddress}} ubuntu_test 172.17.0.91
logs
用法:docker logs [OPTIONS] CONTAINER
功能:抓取容器内的日志信息,容器可以使运行状态的也可以是停止状态的
选项:
参数 | 说明 |
---|---|
-f, --follow=false | 实时打印日志信息 |
-t, --timestamps=false | 显示日志的时间戳 |
--since | 显示指定时间之后的日志 |
--tail=“all” | 设置显示的行数,默认显示所有 |
示例:
查看 jaegertracing 容器的日志信息,该容器上跑了一个 jaegertracing 服务
$ sudo docker logs jaegertracing {"level":"info","ts":1566979103.3696961,"caller":"healthcheck/handler.go:99","msg":"Health Check server started","http-port":14269,"status":"unavailable"} {"level":"info","ts":1566979103.3820567,"caller":"memory/factory.go:55","msg":"Memory storage configuration","configuration":{"MaxTraces":0}} {"level":"info","ts":1566979103.390773,"caller":"tchannel/builder.go:94","msg":"Enabling service discovery","service":"jaeger-collector"} {"level":"info","ts":1566979103.3908608,"caller":"peerlistmgr/peer_list_mgr.go:111","msg":"Registering active peer","peer":"127.0.0.1:14267"} {"level":"info","ts":1566979103.3922884,"caller":"all-in-one/main.go:186","msg":"Starting agent"} {"level":"info","ts":1566979103.4047635,"caller":"all-in-one/main.go:226","msg":"Starting jaeger-collector TChannel server","port":14267} {"level":"info","ts":1566979103.404901,"caller":"all-in-one/main.go:236","msg":"Starting jaeger-collector HTTP server","http-port":14268} {"level":"info","ts":1566979103.4577134,"caller":"all-in-one/main.go:256","msg":"Listening for Zipkin HTTP traffic","zipkin.http-port":9411}
加上 -f 选项,实时打印 jaegertracing 容器的日志信息
$ sudo docker logs -f jaegertracing {"level":"info","ts":1566979103.3696961,"caller":"healthcheck/handler.go:99","msg":"Health Check server started","http-port":14269,"status":"unavailable"} {"level":"info","ts":1566979103.3820567,"caller":"memory/factory.go:55","msg":"Memory storage configuration","configuration":{"MaxTraces":0}} {"level":"info","ts":1566979103.390773,"caller":"tchannel/builder.go:94","msg":"Enabling service discovery","service":"jaeger-collector"} {"level":"info","ts":1566979103.3908608,"caller":"peerlistmgr/peer_list_mgr.go:111","msg":"Registering active peer","peer":"127.0.0.1:14267"} {"level":"info","ts":1566979103.3922884,"caller":"all-in-one/main.go:186","msg":"Starting agent"}
pause/unpause
用法:docker pause CONTAINER
docker unpause CONTAINER
功能:这两个命令是配对使用的,docker pause
暂停容器内的所有进程,docker unpause
恢复暂停的进程
选项:无
示例:
本示例将演示一个跑了docker registry(docker镜像服务)服务的容器,当使用 docker pause 命令暂停这个容器的进程后,使用 curl
命令访问该 registry 服务将阻塞,使用 docker unpause
命令将恢复 registry 服务,可以用 curl
命令访问。
启动一个 registry 容器
$ sudo docker run -d --name pause_test -p 5000:5000 registry
此时可以用curl命令访问这个服务,请求状态码会返回200 OK。
$ sudo curl -v 127.0.0.1:5000
暂停这个容器内的进程
$ sudo docker pause pause_test
此时用curl命令访问这个服务将阻塞,等待服务开启。
恢复运行这个容器内的进程
$ sudo docker unpause pause_test
此时步骤 2 中的
curl
访问将恢复运行,请求状态码返回200 OK
。
port
用法:docker port CONTAINER [PRIVATE_PORT[/PROTO]]
功能:列出容器的端口映射,或者查找指定端口在主机的哪个端口
选项:无
示例:
列出容器所有的端口映射
$ sudo docker port registry 5000/tcp -> 0.0.0.0.:5000
查找容器指定端口的映射
$ sudo docker port registry 5000 0.0.0.0.:5000
ps
用法:docker ps [OPTIONS]
功能:根据不同的选项列出不同状态的容器,在不加任何选项的情况下,将列出正在运行的容器
选项:
参数 | 说明 |
---|---|
-a, --all=false | 显示所用的容器 |
-f, --filter=[] | 筛选值,可用的筛选值有: exited= 容器的退出码 status=(restarting|running|paused|exited) (e.g. -f status=running,列出正在运行的容器) |
-l, --latest=false | 列出最近创建的一个容器 |
-n=-1 | 列出最近n此创建的容器 |
--no-trunc=false | 将 64 位的容器 ID 全部显示出来,默认显示 12 位容器的 ID |
-q, --quiet=false | 显示容器的 ID |
-s, --size=false | 显示容器的大小 |
示例:
列出正在运行的容器
$ sudo docker ps
列出所有的容器
$ sudo docker ps -a
rename
用法:docker rename [OPTIONS] OLD_NAME NEW_NAME
功能:重命名容器
选项:
示例:
示例中,用 docker run
创建并启动一个容器,使用 docker rename
对容器重命名,并查看容器名是否改变。
$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b15976967abb busybox:latest "bash" 3 seconds ago Up 2 seconds festive_morse
$ sudo docker rename pedantic_euler new_name
$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b15976967abb busybox:latest "bash" 34 seconds ago Up 33 seconds new_name
restart
用法:docker restart [OPTIONS] CONTAINER [CONTAINER…]
功能:重启一个运行中的容器
选项:
参数 | 说明 |
---|---|
-t, --time=10 | 在杀掉容器之前等待容器停止的秒数,如果容器已停止,就重启。默认为10秒。 |
示例:
$ sudo docker restart ubuntu
说明:
容器在 restart 过程中,如果容器内存在 D 状态或 Z 状态的进程,可能会导致容器重启失败,这需要进一步分析导致容器内进程 D 状态或 Z 状态的原因,待容器内进程 D 状态或 Z 状态解除后,再进行容器 restart 操作。
rm
用法:docker rm [OPTIONS] CONTAINER [CONTAINER…]
功能:删除一个或多个容器
选项:
参数 | 说明 |
---|---|
-f, --force=false | 强制删除运行中的容器 |
-l, --link=false | Remove the specified link and not the underlying container |
-v, --volumes=false | Remove the volumes associated with the container |
示例:
删除一个停止运行的容器
$ sudo docker rm test
删除一个正在运行的容器
$ sudo docker rm -f rm_test
run
用法:docker run [OPTIONS] IMAGE [COMMAND] [ARG…]
功能:该命令将由指定的 image(如果指定的 IMAGE 不存在,则从官方镜像库中下载一个镜像)创建一个容器,并启动这个容器,并在容器中执行指定的命令。该命令集成了 docker create
命令、docker start
命令、docker exec
命令。
选项:(该命令的选项与 docker create
命令的选项一样,请参考 docker create
命令选项,仅仅多了以下三个选项)
参数 | 说明 |
---|---|
--rm=false | 设置容器退出时自动删除容器 |
-v | 挂载本地目录或匿名卷到容器内。 注意:当将本地目录以带有 selinux 的安全标签的方式挂载到容器内的同时, 尽量不要同时做该本地目录的增删操作,否则该安全标签可能不生效 |
--sig-proxy=true | 发往进程信号的代理,SIGCHLD, SIGSTOP, SIGKILL 不使用代理 |
示例:
使用 ubuntu 镜像运行一个容器,在容器启动后执行 /bin/bash
$ sudo docker run -ti ubuntu /bin/bash
start
用法:docker start [OPTIONS] CONTAINER [CONTAINER…]
功能:启动一个或多个未运行容器
选项:
参数 | 说明 |
---|---|
-a, --attach=false | 容器的标准输出和错误输出附加到 host 的 STDOUT 和 STDERR 上 |
-i, --interactive=false | 容器的标准输入附加到 host 的 STDIN 上 |
实例:
启动一个名为 ubuntu 的容器,添加 -i -a
选项附加标准输入输出,容器启动后直接进入容器内部,输入 exit
可以退出容器。
如果启动容器时不加 -i -a
选项,容器将在后台启动。
$ sudo docker start -i -a ubuntu
stats
用法:docker stats [OPTIONS] [CONTAINER…]
功能:持续监控并显示指定容器(若不指定,则默认全部容器)的资源占用情况
选项:
参数 | 说明 |
---|---|
-a, --all | 显示所有容器(默认仅显示运行状态的容器) |
--no-stream | 只显示第一次的结果,不持续监控 |
示例:
示例中,用 docker run
创建并启动一个容器,docker stats
将输出容器的资源占用情况。
$ sudo docker stats
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
2e242bcdd682 jaeger 0.00% 77.08MiB / 125.8GiB 0.06% 42B / 1.23kB 97.9MB / 0B 38
02a06be42b2c relaxed_chandrasekhar 0.01% 8.609MiB / 125.8GiB 0.01% 0B / 0B 0B / 0B 10
deb9e49fdef1 hardcore_montalcini 0.01% 12.79MiB / 125.8GiB 0.01% 0B / 0B 0B / 0B 9
stop
用法:docker stop [OPTIONS] CONTAINER [CONTAINER…]
功能:通过向容器发送一个 SIGTERM 信号并在一定的时间后发送一个 SIGKILL 信号停止容器
选项:
参数 | 说明 |
---|---|
-t, --time=10 | 在杀掉容器之前等待容器退出的秒数,默认为 10S。 |
示例:
$ sudo docker stop -t=15 ubuntu
top
用法:docker top CONTAINER [ps OPTIONS]
功能:显示一个容器内运行的进程
选项:无
示例:
先运行了一个名为 top_test 的容器,并在其中执行了 top
指令
$ sudo docker top top_test
UID PID PPID C STIME TTY TIME CMD
root 70045 70028 0 15:52 pts/0 00:00:00 bash
显示的 PID 是容器内的进程在主机中的 PID 号。
update
用法:docker update [OPTIONS] CONTAINER [CONTAINER…]
功能:热变更一个或多个容器配置。
选项:
表 3 参数说明
参数 | 参数含义 |
---|---|
--accel=[] | 设置容器加速器,可设置一个或多个 |
--blkio-weight | 设置容器 blockio 的相对权重,从 10 到 1000 |
--cpu-shares | 设置容器获得主机 CPU 的相对权重, 通过设置这个选项获得更高的优先级, 默认所有的容器都是获得相同的 CPU 优先权。 |
--cpu-period | 设置 CFS(完全公平调度策略)进程的 CPU 周期。 默认值为 100ms;一般 --cpu-period参数和 --cpu-quota是配合使用的, 比如 --cpu-period=50000 --cpu-quota=25000 ,意味着如果有 1 个 CPU,该容器可以每 50ms 获取到 50% 的 CPU。 |
--cpu-quota | 设置 CFS(完全公平调度策略)进程的 CPU 配额,默认为 0,即没有限制 |
--cpuset-cpus | 设置容器中进程允许运行的 CPU (0-3, 0,1)。默认没有限制 |
--cpuset-mems | 设置容器中进程运行运行的内存内存节点 (0-3, 0,1),只对 NUMA 系统起作用 |
--kernel-memory=“” | 设置容器的 kernerl 内存限制, 格式<number><optional unit>, 其中 unit = b, k, m or g |
-m, --memory=“” | 设置容器的内存限制,格式<number><optional unit>, 其中 unit = b, k, m or g。该参数最小值为 4m。 |
--memory-reservation | 设置容器内存限制,默认与 --memory一致。 可认为 --memory是硬限制, --memory-reservation 是软限制; 当使用内存超过预设值时,会动态调整 (系统回收内存时尝试将使用内存降低到预设值以下), 但不确保一定不超过预设值。 一般可以和 --memory一起使用,数值小于 --memory的预设值。 |
--memory-swap | 设置普通内存和交换分区的使用总量,-1 为不做限制。 如果不设置,则为 --memory值的 2 倍, 即 SWAP 可再使用与 --memory相同的内存量。 |
--restart=“” | 设置容器退出时候的重启规则,当前 1.3.1 版本支持 3 个规则: no:当容器停止时,不重启。 on-failure:当容器退出码为非 0 时重启容器,这个规则可以附加最大重启次数, 如on-failure:5,最多重启 5 次。 always:无论退出码是什么都退出。 |
--help | 打印 help 信息 |
示例:
变更一个容器名为 ubuntu 的 cpu 和 mem 配置,包括容器获得主机 CPU 的相对权重值为 512,容器中进程允许运行的 CPU 核心为 0,1,2,3,容器运行内存限制为 512m。
$ sudo docker update --cpu-shares 512 --cpuset-cpus=0,3 --memory 512m ubuntu
wait
用法:docker wait CONTAINER [CONTAINER…]
功能:等待一个容器停止,并打印出容器的退出码
选项:无
示例:
先开启一个名为 ubuntu 的容器
$ sudo docker start -i -a ubuntu
执行docker wait
$ sudo docker wait ubuntu
0
将阻塞等待 ubuntu 容器的退出,退出 ubuntu 容器后将看到打印退出码 “0”。
镜像管理
build
用法:docker build [OPTIONS] PATH | URL | -
功能:使用指定路径中的 Dockerfile 生成构建一个新的 image
选项:常用选项参数如下,更多选项可以查看 docker help build
表 4 参数说明
参数 | 参数含义 |
---|---|
--force-rm=false | 即使没有构建成功也删除构建过程中生成的容器 |
--no-cache=false | 构建 image 的过程中不使用缓存 |
-q, --quiet=false | 禁止构建过程中产生的冗余信息 |
--rm=true | 构建成功后删除过程中生成的容器 |
-t, --tag=“” | 指定构建生成的 image 的 tag 名 |
--build-arg=[] | 设置构建参数 |
--label=[] | 镜像相关参数设置,各参数意义与 create 类似 |
--isolation | 指定容器的隔离方法 |
--pull | 构建时总是尝试获取最新版本镜像 |
Dockerfile 介绍:
Dockerfile 是一个镜像的表示,可以通过 Dockerfile 来描述构建镜像的步骤,并自动构建一个容器,所有的 Dockerfile 命令格式都是:INSTRUCTION arguments
FROM命令
格式:FROM 或 FROM :
功能:该命令指定基本镜像,是所有 Dockerfile 文件的第一个命令,如果没有指定基本镜像的 tag,使用默认 tag 名 latest。
RUN命令
格式:RUN (the command is run in a shell - /bin/sh -c
) 或者
RUN [“executable”, “param1”, “param2” … ] (exec form)
功能:RUN 命令会在上面 FROM 指定的镜像里执行指定的任何命令,然后提交(commit)结果,提交的镜像会在后面继续用到。RUN 命令等价于:
docker run image command
docker commit container_id
注释
使用#注释
MAINTAINER命令
格式:MAINTAINER
功能:命令用来指定维护者的姓名和联系方式
ENTRYPOINT命令
格式:ENTRYPOINT cmd param1 param2 … 或者ENTRYPOINT [“cmd”, “param1”, “param2”…]
功能:设置在容器启动时执行命令
USER命令
格式:USER name
功能:指定 memcached 的运行用户
EXPOSE命令
格式:EXPOSE […]
功能:开放镜像的一个或多个端口
ENV命令
格式:ENV
功能:设置环境变量,设置了后,后续的 RUN 命令都可以使用
ADD命令
格式:ADD
功能:从src复制文件到 container 的 dest 路径, 是相对被构建的源目录的相对路径,可以是文件或目录的路径,也可以是一个远程的文件 url, 是 container 中的绝对路径。
VOLUME命令
格式:VOLUME [““]
功能:创建一个挂载点用于共享目录
WORKDIR命令
格式:workdir
功能:配置 RUN, CMD, ENTRYPOINT 命令设置当前工作路径可以设置多次,如果是相对路径,则相对前一个 WORKDIR 命令。
CMD命令
格式:CMD [“executable”,“param1”,“param2”] (like an exec, preferred form)
CMD [“param1”,“param2”] (as default parameters to ENTRYPOINT)
CMD command param1 param2 (as a shell)
功能:一个 Dockerfile 里只能有一个 CMD,如果有多个,只有最后一个生效。
ONBUILD命令
格式:ONBUILD [其它指令]
功能:后面跟其它指令,比如 RUN、COPY 等,这些指令,在当前镜像构建时并不会被执行,只有当以当前镜像为基础镜像,去构建下一级镜像的时候才会被执行。
下面是 Dockerfile 的一个完整例子,该 Dockerfile 将构建一个安装了 sshd 服务的 image:
FROM ubuntu:14.04 ENV http_proxy http://192.168.0.226:3128 ENV https_proxy https://192.168.0.226:3128 RUN apt-get update && apt-get install -y openssh-server RUN mkdir -p /var/run/sshd EXPOSE 22 ENTRYPOINT /usr/sbin/sshd -D
示例:
以上文的 Dockerfile 构建一个 image:
$ sudo docker build -t ubuntu:latest
通过以下命令可以看到这个生成的 image:
docker images | grep ubuntu
history
用法:docker history [OPTIONS] IMAGE
功能:显示一个 image 的变化历史
选项:
参数 | 说明 |
---|---|
-H, --human=true | |
--no-trunc=false | 不对输出进行删减 |
-q, --quiet=false | 只显示 ID |
示例:
$ sudo docker history busybox:test
IMAGE CREATED CREATED BY SIZE COMMENT
be4672959e8b 15 minutes ago bash 23B
21970dfada48 4 weeks ago 128MB Imported from -
images
用法:docker images [OPTIONS] [NAME]
功能:列出存在的image,不加选项时不显示中间的image
选项:
参数 | 说明 |
---|---|
-a, --all=false | 显示所有的镜像 |
-f, --filter=[] | 指定一个过滤值(i.e. ‘dangling=true’) |
--no-trunc=false | 不对输出进行删减 |
-q, --quiet=false | 只显示 ID |
示例:
$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
busybox latest e02e811dd08f 2 years ago 1.09MB
import
用法:docker import URL|- [REPOSITORY[:TAG]]
功能:把包含了一个 rootfs 的 tar 包导入为镜像。与 docker export
相对应。
选项:无
示例:
从上文介绍的 docker export
命令时导出的 busybox.tar 用 docker import
命令生成一个新的 image
$ sudo docker import busybox.tar busybox:test
sha256:a79d8ae1240388fd3f6c49697733c8bac4d87283920defc51fb0fe4469e30a4f
$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
busybox test a79d8ae12403 2 seconds ago 1.3MB
load
用法:docker load [OPTIONS]
功能:把 docker save
出来的 tar 包重新加载一个镜像。与 docker save
相对应。
选项:
-i, --input=“”
示例:
$ sudo docker load -i busybox.tar
Loaded image ID: sha256:e02e811dd08fd49e7f6032625495118e63f597eb150403d02e3238af1df240ba
$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
busybox latest e02e811dd08f 2 years ago 1.09MB
login
用法:docker login [OPTIONS] [SERVER]
功能:登录到一个镜像服务库,没有指定 server 时,默认登录到https://index.docker.io/v1/
选项:
参数 | 说明 |
---|---|
-e, --email=“” | |
-p, --password=“” | 密码 |
-u, --username=“” | 用户名 |
示例:
$ sudo docker login
logout
用法:docker logout [SERVER]
功能:从一个镜像服务器中登出,没有指定 server 时,默认登出https://index.docker.io/v1/
选项:无
示例:
$ sudo docker logout
pull
用法:docker pull [OPTIONS] NAME[:TAG]
功能:从一个镜像库(官方的或私有的)中拉取一个镜像
选项:
参数 | 说明 |
---|---|
-a, --all-tags=false | 下载一个镜像仓库的所有镜像(一个镜像仓库可以被打多个标签,比如一个 ubuntu 镜像库,可能有多个标签如 ubuntu:14.04,ubuntu:13.10, ubuntu:latest 等,使用 -a 选项后,将所有标签的 ubuntu 镜像拉取下来) |
示例:
从官方镜像库中拉取 nginx 镜像
$ sudo docker pull nginx Using default tag: latest latest: Pulling from official/nginx 94ed0c431eb5: Pull complete 9406c100a1c3: Pull complete aa74daafd50c: Pull complete Digest: sha256:788fa27763db6d69ad3444e8ba72f947df9e7e163bad7c1f5614f8fd27a311c3 Status: Downloaded newer image for nginx:latest
拉取镜像时会检测所依赖的层是否存在,如果存在就用本地的层。
从私有镜像库中拉取镜像
从私有镜像库中拉取 Fedora 镜像,比如所使用的私有镜像库的地址是 192.168.1.110:5000:
$ sudo docker pull 192.168.1.110:5000/fedora
push
用法:docker push NAME[:TAG]
功能:将一个 image 推送到镜像库中
选项:无
示例:
将一个 image 推送到私有镜像库 192.168.1.110:5000 中
将要推送的镜像打标签(
docker tag
命令将在下文介绍),本例中要推送的镜像为 ubuntu:sshd$ sudo docker tag ubuntu:sshd 192.168.1.110:5000/ubuntu:sshd
将打好标签的镜像推送到私有镜像库中
$ sudo docker push 192.168.1.110:5000/ubuntu:sshd
推送的时候会自动检测所依赖的层在镜像库中是否已存在,如果以存在,跳过该层。
rmi
用法:docker rmi [OPTIONS] IMAGE [IMAGE…]
功能:删除一个或多个镜像,如果一个镜像在镜像库中有多个标签,删除镜像的时候只是进行 untag 操作,当删除的是只有一个标签的镜像时,将依次删除所依赖的层。
选项:
参数 | 说明 |
---|---|
-f, --force=false | 强制删除image |
--no-prune=false | 不删除没有标签的父镜像 |
示例:
$ sudo docker rmi 192.168.1.110:5000/ubuntu:sshd
save
用法:docker save [OPTIONS] IMAGE [IMAGE…]
功能:保存一个 image 到一个 tar 包,输出默认是到 STDOUT
选项:
参数 | 说明 |
---|---|
-o, --output=“” | 输出到文件中而不是 STDOUT |
示例:
$ sudo docker save -o nginx.tar nginx:latest
$ ls
nginx.tar
search
用法:docker search [OPTIONS] TERM
功能:在镜像库中查找特定的镜像
选项:
参数 | 说明 |
---|---|
--automated=false | 显示自动构建的 image |
--no-trunc=false | 不对输出进行删减 |
-s, --stars=0 | 只显示特定星级以上的 image |
示例:
在官方镜像库中搜寻 nginx
$ sudo docker search nginx NAME DESCRIPTION STARS OFFICIAL AUTOMATED nginx Official build of Nginx. 11873 [OK] jwilder/nginx-proxy Automated Nginx reverse proxy for docker con… 1645 [OK] richarvey/nginx-php-fpm Container running Nginx + PHP-FPM capable of… 739 [OK] linuxserver/nginx An Nginx container, brought to you by LinuxS… 74 bitnami/nginx Bitnami nginx Docker Image 70 [OK] tiangolo/nginx-rtmp Docker image with Nginx using the nginx-rtmp… 51 [OK]
在私有镜像库中搜寻 busybox,在私有镜像库中搜寻时要加上私有镜像库的地址
$ sudo docker search 192.168.1.110:5000/busybox
tag
用法:docker tag [OPTIONS] IMAGE[:TAG] [REGISTRYHOST/][USERNAME/]NAME[:TAG]
功能:将一个镜像打标签到一个库中
选项:
参数 | 说明 |
---|---|
-f, --force=false | 如果存在相同的 tag 名将强制替换原来的 image |
示例:
$ sudo docker tag busybox:latest busybox:test
统计信息
events
用法:docker events [OPTIONS]
功能:从 docker daemon 中获取实时事件
选项:
参数 | 说明 |
---|---|
--since=“” | 显示指定时间戳之后的事件 |
--until=“” | 显示直到指定之间戳的事件 |
示例:
该示例中,执行 docker events
后,用 docker run
创建并启动一个容器,docker events
将输出 create 事件和 start 事件。
$ sudo docker events
2019-08-28T16:23:09.338838795+08:00 container create 53450588a20800d8231aa1dc4439a734e16955387efb5f259c47737dba9e2b5e (image=busybox:latest, name=eager_wu)
2019-08-28T16:23:09.339909205+08:00 container attach 53450588a20800d8231aa1dc4439a734e16955387efb5f259c47737dba9e2b5e (image=busybox:latest, name=eager_wu)
2019-08-28T16:23:09.397717518+08:00 network connect e2e20f52662f1ee2b01545da3b02e5ec7ff9c85adf688dce89a9eb73661dedaa (container=53450588a20800d8231aa1dc4439a734e16955387efb5f259c47737dba9e2b5e, name=bridge, type=bridge)
2019-08-28T16:23:09.922224724+08:00 container start 53450588a20800d8231aa1dc4439a734e16955387efb5f259c47737dba9e2b5e (image=busybox:latest, name=eager_wu)
2019-08-28T16:23:09.924121158+08:00 container resize 53450588a20800d8231aa1dc4439a734e16955387efb5f259c47737dba9e2b5e (height=48, image=busybox:latest, name=eager_wu, width=210)
info
用法:docker info
功能:显示 docker 系统级的相关信息,包括系统中的 Container 数量、Image 数量、Image 的存储驱动、容器的执行驱动、内核版本、主机操作系统版本等信息。
选项:无
示例:
$ sudo docker info
Containers: 4
Running: 3
Paused: 0
Stopped: 1
Images: 45
Server Version: 18.09.0
Storage Driver: devicemapper
Pool Name: docker-thinpool
Pool Blocksize: 524.3kB
Base Device Size: 10.74GB
Backing Filesystem: ext4
Udev Sync Supported: true
Data Space Used: 11GB
Data Space Total: 51GB
Data Space Available: 39.99GB
Metadata Space Used: 5.083MB
Metadata Space Total: 532.7MB
Metadata Space Available: 527.6MB
Thin Pool Minimum Free Space: 5.1GB
Deferred Removal Enabled: true
Deferred Deletion Enabled: true
Deferred Deleted Device Count: 0
......
version
用法:docker version
功能:显示 docker 的版本信息,包括 Client 版本、Server 版本、Go 版本、OS/Arch 等信息
选项:无
示例:
$ sudo docker version
Client:
Version: 18.09.0
EulerVersion: 18.09.0.48
API version: 1.39
Go version: go1.11
Git commit: cbf6283
Built: Mon Apr 1 00:00:00 2019
OS/Arch: linux/arm64
Experimental: false
Server:
Engine:
Version: 18.09.0
EulerVersion: 18.09.0.48
API version: 1.39 (minimum version 1.12)
Go version: go1.11
Git commit: cbf6283
Built: Mon Apr 1 00:00:00 2019
OS/Arch: linux/arm64
Experimental: false