美文网首页
docker入门(5)--docker系统管理

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

作者: 随意的ID | 来源:发表于2018-10-30 10:39 被阅读0次

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

    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 修剪镜像

    在自行构建镜像的过程中,可能会产生很多<none>:<none>这样的镜像,可用如下命令清除:
    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系统管理

          本文链接:https://www.haomeiwen.com/subject/lnewtqtx.html