Docker经常使用命令小记

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

环境信息

如下是本次操做的环境:程序员

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

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

[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的时候会列出全部运行状态的容器,有时咱们只想看本身关注的,这时能够对结果作过滤:tomcat

  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复制代码

下图展现了全部的列的名称:在这里插入图片描述网络

  1. 以下图红框所示,当字段内容过长时,展现的是部份内容,若是想查看完整信息请使用docker ps --no-trunc
    在这里插入图片描述
  2. 在使用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容器已经中止。tcp

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

欢迎关注个人公众号:程序员欣宸

相关文章
相关标签/搜索