docker入门(5)--docker系统管理

当你需要进行一些错误排查时,下面介绍的命令将会非常有用。

1. 获取docker的系统信息

docker version命令可以看到客户端和服务端的相关API信息、版本信息等。

[root@node2 ~]# docker version 
Client:
 Version:           18.06.1-ce
 API version:       1.38
 Go version:        go1.10.3
 Git commit:        e68fc7a
 Built:             Tue Aug 21 17:23:03 2018
 OS/Arch:           linux/amd64
 Experimental:      false

Server:
 Engine:
  Version:          18.06.1-ce
  API version:      1.38 (minimum version 1.12)
  Go version:       go1.10.3
  Git commit:       e68fc7a
  Built:            Tue Aug 21 17:25:29 2018
  OS/Arch:          linux/amd64
  Experimental:     false

docker是C/S架构的,client端我们可以简单的看做是一个可以与server端的API进行通信的工具即可,它通过我们前面了解的docker container这样的命令与server进行交互。
server端是实际运行各个container的,它可以是本地主机,也可以是远程主机或者云服务器等。
我们可以通过在client端指定相关的环境变量配置来管理不同的server端,例如:DOCKER_HOSTDOCKER_TLS_VERIFYDOCKER_CERT_PATH

下一个比较重要的命令是docker system info,这个命令可以告诉我们,当前的docker engine工作在什么模式下(例如swarm模式),使用何种存储驱动来管理统一文件系统,当前linux系统的核心版本等。

[root@node2 ~]# docker system info 
Containers: 2
 Running: 2
 Paused: 0
 Stopped: 0
Images: 8
Server Version: 18.06.1-ce
Storage Driver: overlay2
 Backing Filesystem: xfs
 Supports d_type: true
 Native Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: bridge host macvlan null overlay
 Log: awslogs fluentd gcplogs gelf journald json-file logentries splunk syslog
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 468a545b9edcd5932818eb9de8e72413e616e86e
runc version: 69663f0bd4b60df09991c08812a60108003fa340
init version: fec3683
Security Options:
 seccomp
  Profile: default
Kernel Version: 3.10.0-862.14.4.el7.x86_64
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
CPUs: 8
Total Memory: 23.37GiB
Name: node2.xxx.com
ID: UA2Y:7YJ6:ZHON:5UXE:J554:FKXM:PVHL:UHIF:SNTY:LXEU:QY7E:RVMK
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
 127.0.0.0/8
Registry Mirrors:
 https://docker.mirrors.ustc.edu.cn/
Live Restore Enabled: false

2. 列出当前资源使用情况

伴随着长时间的使用,我们可能积攒了很多docker相关资源,包括:镜像、容器、数据卷。熟悉对他们进行管理,能够及时的释放我们的内存、硬盘等资源。
与磁盘空间使用情况相关的命令docker system df

[root@node2 ~]# docker system df
TYPE                TOTAL               ACTIVE              SIZE                RECLAIMABLE
Images              7                   2                   585MB               206.3MB (35%)
Containers          2                   2                   2B                  0B (0%)
Local Volumes       3                   2                   316.7MB             0B (0%)
Build Cache         0                   0                   0B                  0B

如果你需要更详细的信息,可以加上参数-v:docker system df -v

[root@node2 ~]# docker system df -v
Images space usage:

REPOSITORY          TAG                 IMAGE ID            CREATED ago         SIZE                SHARED SIZE         UNIQUE SiZE         CONTAINERS
pinger              latest              c3c2f4b53219        3 days ago ago      4.413MB             4.413MB             0B                  0
my-alpine           latest              878a60dd0a6d        3 days ago ago      5.967MB             4.413MB             1.554MB             0
centos              7                   75835a67d134        2 weeks ago ago     200.4MB             0B                  200.4MB             0
nginx               alpine              aae476eee77d        3 weeks ago ago     17.74MB             4.413MB             13.33MB             1
alpine              latest              196d12cf6ab1        6 weeks ago ago     4.413MB             4.413MB             0B                  0
hello-world         latest              4ab4c602aa5e        7 weeks ago ago     1.84kB              0B                  1.84kB              0
mongo               3.7                 3db1239d511b        4 months ago ago    365.3MB             0B                  365.3MB             1

Containers space usage:

CONTAINER ID        IMAGE               COMMAND                  LOCAL VOLUMES       SIZE                CREATED ago         STATUS              NAMES
e65ac72b9c3f        mongo:3.7           "docker-entrypoint.s…"   2                   0B                  16 hours ago ago    Up 16 hours         my-mongo
50a5ed614ea1        nginx:alpine        "nginx -g 'daemon of…"   0                   2B                  17 hours ago ago    Up 17 hours         competent_lamport

Local Volumes space usage:

VOLUME NAME                                                        LINKS               SIZE
shared-data                                                        0                   0B
065a116f6ef50622aa3e1f674f81cc61d13e4618b6f726b5fd77f4813fcc5e84   1                   0B
10242f5b75f1ba88e1e2abdbb2cc874887f4181353ea62ca6f2c6735c32b0e7b   1                   316.7MB

Build cache usage: 0B

3. 修剪无用的资源

3.1 修剪容器

docker container prune移除所有不在运行状态的容器:

[root@node2 ~]# docker container ls -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                     PORTS                  NAMES
3b51d7d65aed        centos:7            "/bin/bash"              5 seconds ago       Exited (0) 4 seconds ago                          dazzling_perlman
e65ac72b9c3f        mongo:3.7           "docker-entrypoint.s…"   17 hours ago        Up 17 hours                27017/tcp              my-mongo
50a5ed614ea1        nginx:alpine        "nginx -g 'daemon of…"   17 hours ago        Up 17 hours                0.0.0.0:8080->80/tcp   competent_lamport
[root@node2 ~]# docker container prune 
WARNING! This will remove all stopped containers.
Are you sure you want to continue? [y/N] y
Deleted Containers:
3b51d7d65aed1dc2b174406d303fb9c75d01bce98f3224e92349ff39021993af

Total reclaimed space: 0B

某些时候,我们可能需要移除所有的容器(包括运行中的),可以使用如下命令:
docker container rm -f $(docker container ls -aq)

3.2 修剪镜像

在自行构建镜像的过程中,可能会产生很多:这样的镜像,可用如下命令清除:
docker image prune
上面的命令会有一个提醒你确认删除的交互过程,可以使用-f参数,强制清除:
docker image prune -f
还可以清除所有未被使用到的镜像:
docker image prune --force --all

3.3 修剪数据卷

数据卷是用来进行数据持久化的,因此进行相关操作时,要注意确保你的数据确实是无用的,才可以进行prune:
docker volume prune
以上命令,用于删除所有未被任何容器挂载使用到的数据卷。
也可以通过标签来定向删除某一个数据卷:
docker volume prune --filter 'label=demo'
通过标签删除多个数据卷:
docker volume prune --filter 'label=demo' --filter 'label=test'

3.5 修剪网络

网络部分我们还未开始了解学习,简单先了解一下命令即可:
docker network prune
以上命令将删除所有未被任何容器或者服务连接的网络。

3.6 删除一切

以上所有的删除动作,可以使用一个命令来一起触发:
docker system prune
一般不推荐使用。

4. 获取docker系统事件

docker system events
该命令类似linux中的tail -f命令,是阻断式的,且实时刷新。

你可能感兴趣的:(docker入门(5)--docker系统管理)