zoukankan      html  css  js  c++  java
  • Docker常用命令小记

    除了基本的docker pulldocker imagedocker ps,还有一些命令及参数也很重要,在此记录下来避免遗忘。

    环境信息

    以下是本次操作的环境:

    1. 操作系统:CentOS Linux release 7.7.1908
    2. Docker:19.03.2

    假设当前环境正运行着两个容器,接下来的操作都基于这两个容器进行:

    [root@vostro harbor]# docker ps
    CONTAINER ID        IMAGE                        COMMAND                  CREATED             STATUS              PORTS               NAMES
    11548ac31116        tomcat:9.0.26-jdk8-openjdk   "catalina.sh run"        6 seconds ago       Up 5 seconds        8080/tcp            inspiring_ardinghelli
    21c0499ccc76        nginx                        "nginx -g 'daemon of…"   29 minutes ago      Up 29 minutes       80/tcp              strange_zhukovsky
    

    整体信息

    docker info用来看整体信息:

    [root@vostro harbor]# docker info
    Client:
     Debug Mode: false
    
    Server:
     Containers: 0
      Running: 0
      Paused: 0
      Stopped: 0
     Images: 19
     Server Version: 19.03.2
     Storage Driver: overlay
      Backing Filesystem: xfs
      Supports d_type: true
    ...
    

    释放空间

    1. docker system prune会删除以下内容:
      a. 已经停止的容器;
      b. 未被使用的网络;
      c. 所有未打标签的镜像;
      d. 构建镜像时产生的缓存;
      注意:此命令删除的东西过多,所以要慎用
    2. 删除已经停止的容器:docker container prune
    3. 删除未被使用的网络:docker network prune
    4. 删除没有Tag的镜像:docker image prune
    5. 删除没有容器的镜像:docker image prune -a
    6. 删除未被使用的数据卷:docker volume prune

    过滤

    执行docker ps的时候会列出所有运行状态的容器,有时我们只想看自己关注的,这时可以对结果做过滤:

    1. 按容器ID过滤:docker ps -f id=11548ac31116
    [root@vostro harbor]# docker ps -f id=11548ac31116
    CONTAINER ID        IMAGE                        COMMAND             CREATED             STATUS              PORTS               NAMES
    11548ac31116        tomcat:9.0.26-jdk8-openjdk   "catalina.sh run"   4 minutes ago       Up 4 minutes        8080/tcp            inspiring_ardinghelli
    
    1. 按容器名称过滤:docker ps -f name=inspiring_ardinghelli
    [root@vostro harbor]# docker ps -f name=inspiring_ardinghelli
    CONTAINER ID        IMAGE                        COMMAND             CREATED             STATUS              PORTS               NAMES
    11548ac31116        tomcat:9.0.26-jdk8-openjdk   "catalina.sh run"   7 minutes ago       Up 7 minutes        8080/tcp            inspiring_ardinghelli
    
    1. 按镜像过滤,这种过滤再细分有三种:
      a. 按镜像名和TAG过滤:docker ps -f ancestor=tomcat:9.0.26-jdk8-openjdk
      b. 按镜像ID过滤:docker ps -f ancestor=4965bfab1881
      c. 按照镜像摘要信息过滤:docker ps -f ancestor=tomcat@sha256:67a9904e3ceb03abc50db7b374db7362f7e44d08a41488dd24c2bb14df8989a3

      镜像的摘要信息如何获取呢?执行命令docker inspect tomcat:9.0.26-jdk8-openjdk可以获取镜像的详情,如下图所示,红框中就是摘要信息:
      在这里插入图片描述
    2. 按容器状态过滤:docker ps -f status=running,状态有这些:created, restarting, running, removing, paused, exited, dead
    3. 还有其他的过滤条件,不过不常用到,如下图:
      在这里插入图片描述

    信息获取

    1. 查看容器所占硬盘空间:docker ps -s
      在这里插入图片描述
      上图红框中就是容器资源占用情况,508MB表示:镜像大小+容器自身大小,40KB表示容器自身所占资源大小;
    2. 查看容器信息时只看某些字段,例如只看容器ID、镜像、容器名称这三列:docker ps --format "table {{.ID}}: {{.Image}}: {{.Names}}"
    [root@vostro harbor]# docker ps --format "table {{.ID}}: {{.Image}}: {{.Names}}"
    CONTAINER ID: IMAGE: NAMES
    11548ac31116: tomcat:9.0.26-jdk8-openjdk: inspiring_ardinghelli
    21c0499ccc76: nginx: strange_zhukovsky
    

    下图展示了所有的列的名称:
    在这里插入图片描述
    3. 如下图红框所示,当字段内容过长时,展示的是部分内容,如果想查看完整信息请使用docker ps --no-trunc
    在这里插入图片描述
    4. 在使用docker history命令查看镜像的构建信息时,也会因为内容过长而被省略,如下图,此时也能用--no-trunc参数看到被省略的信息:
    在这里插入图片描述

    组合使用

    1. 只显示Tomcat容器的ID字段:docker ps -f ancestor=tomcat:9.0.26-jdk8-openjdk -q
    [root@vostro harbor]# docker ps -f ancestor=tomcat:9.0.26-jdk8-openjdk -q
    11548ac31116
    
    1. 上面的命令可以得到Tomcat容器的ID字段,如果我们想停止该容器,将上述命令和docker stop组合起来使用即可:docker stop $(docker ps -f ancestor=tomcat:9.0.26-jdk8-openjdk -q)
    [root@vostro harbor]# docker stop $(docker ps -f ancestor=tomcat:9.0.26-jdk8-openjdk -q)
    11548ac31116
    [root@vostro harbor]# docker ps -a
    CONTAINER ID        IMAGE                        COMMAND                  CREATED             STATUS                        PORTS               NAMES
    11548ac31116        tomcat:9.0.26-jdk8-openjdk   "catalina.sh run"        About an hour ago   Exited (143) 43 seconds ago                       inspiring_ardinghelli
    21c0499ccc76        nginx                        "nginx -g 'daemon of…"   2 hours ago         Up 2 hours                    80/tcp              strange_zhukovsky
    

    可见tomcat容器已经停止。

    以上是我日常工作中经常用到的docker命令,更多的信息请参考官方文档:https://docs.docker.com/engine/reference/commandline/docker/

    欢迎关注我的公众号:程序员欣宸

  • 相关阅读:
    算法描述》关于LIS的nlogn方法
    简单tarjan》一道裸题(BZOJ1051)(easy)
    值得一做》关于数学与递推 BZOJ1002 (BZOJ第一页计划)(normal+)
    值得一做》关于一道DP+SPFA的题 BZOJ1003 (BZOJ第一页计划) (normal-)
    图论算法》关于最大流转最短路两三事
    刷题向》图论》BZOJ1001 平面图最大流、平面图最小割、单源最短路(easy+)
    c++中结构体的使用
    c++的标准流入流出和使用例子
    小知识 ——引用
    小知识——关于数组指针和指针数组
  • 原文地址:https://www.cnblogs.com/bolingcavalry/p/11570047.html
Copyright © 2011-2022 走看看