写点什么

Docker 常用命令小记

作者:程序员欣宸
  • 2022-10-22
    广东
  • 本文字数:2423 字

    阅读完需:约 8 分钟

Docker常用命令小记

欢迎访问我的 GitHub

这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos

本篇概览

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

环境信息

  • 以下是本次操作的环境:


  1. 操作系统:CentOS Linux release 7.7.1908

  2. Docker:19.03.2


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


[root@vostro harbor]# docker psCONTAINER ID        IMAGE                        COMMAND                  CREATED             STATUS              PORTS               NAMES11548ac31116        tomcat:9.0.26-jdk8-openjdk   "catalina.sh run"        6 seconds ago       Up 5 seconds        8080/tcp            inspiring_ardinghelli21c0499ccc76        nginx                        "nginx -g 'daemon of…"   29 minutes ago      Up 29 minutes       80/tcp              strange_zhukovsky
复制代码

整体信息

  • docker info 用来看整体信息:


[root@vostro harbor]# docker infoClient: 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...
复制代码

释放空间

  • docker system prune 会删除以下内容:a. 已经停止的容器;b. 未被使用的网络;c. 所有未打标签的镜像;d. 构建镜像时产生的缓存;

  • 注意: 此命令删除的东西过多,所以要慎用

  • 删除已经停止的容器: docker container prune

  • 删除未被使用的网络: docker network prune

  • 删除没有 Tag 的镜像: docker image prune

  • 删除没有容器的镜像: docker image prune -a

  • 删除未被使用的数据卷: docker volume prune

过滤

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

  • 按容器 ID 过滤: docker ps -f id=11548ac31116


[root@vostro harbor]# docker ps -f id=11548ac31116CONTAINER ID        IMAGE                        COMMAND             CREATED             STATUS              PORTS               NAMES11548ac31116        tomcat:9.0.26-jdk8-openjdk   "catalina.sh run"   4 minutes ago       Up 4 minutes        8080/tcp            inspiring_ardinghelli
复制代码


  • 按容器名称过滤: docker ps -f name=inspiring_ardinghelli


[root@vostro harbor]# docker ps -f name=inspiring_ardinghelliCONTAINER ID        IMAGE                        COMMAND             CREATED             STATUS              PORTS               NAMES11548ac31116        tomcat:9.0.26-jdk8-openjdk   "catalina.sh run"   7 minutes ago       Up 7 minutes        8080/tcp            inspiring_ardinghelli
复制代码


  • 按镜像过滤,这种过滤再细分有三种: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 可以获取镜像的详情,如下图所示,红框中就是摘要信息:

  • 按容器状态过滤: docker ps -f status=running ,状态有这些:created, restarting, running, removing, paused, exited, dead

  • 还有其他的过滤条件,不过不常用到,如下图:

信息获取

  • 查看容器所占硬盘空间: docker ps -s

  • 上图红框中就是容器资源占用情况, 508MB 表示:镜像大小+容器自身大小,40KB 表示容器自身所占资源大小;

  • 查看容器信息时只看某些字段,例如只看容器 ID、镜像、容器名称这三列: docker ps --format "table {{.ID}}: {{.Image}}: {{.Names}}"


[root@vostro harbor]# docker ps --format "table {{.ID}}: {{.Image}}: {{.Names}}"CONTAINER ID: IMAGE: NAMES11548ac31116: tomcat:9.0.26-jdk8-openjdk: inspiring_ardinghelli21c0499ccc76: nginx: strange_zhukovsky
复制代码


  • 下图展示了所有的列的名称:

  • 如下图红框所示,当字段内容过长时,展示的是部分内容,如果想查看完整信息请使用 docker ps --no-trunc

  • 在使用 docker history 命令查看镜像的构建信息时,也会因为内容过长而被省略,如下图,此时也能用 --no-trunc 参数看到被省略的信息:

组合使用

  • 只显示 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 -q11548ac31116
复制代码


  • 上面的命令可以得到 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 -aCONTAINER ID        IMAGE                        COMMAND                  CREATED             STATUS                        PORTS               NAMES11548ac31116        tomcat:9.0.26-jdk8-openjdk   "catalina.sh run"        About an hour ago   Exited (143) 43 seconds ago                       inspiring_ardinghelli21c0499ccc76        nginx                        "nginx -g 'daemon of…"   2 hours ago         Up 2 hours                    80/tcp              strange_zhukovsky
复制代码


欢迎关注 InfoQ:程序员欣宸

学习路上,你不孤单,欣宸原创一路相伴...


发布于: 2022-10-22阅读数: 36
用户头像

搜索"程序员欣宸",一起畅游Java宇宙 2018-04-19 加入

前腾讯、前阿里员工,从事Java后台工作,对Docker和Kubernetes充满热爱,所有文章均为作者原创,个人Github:https://github.com/zq2599/blog_demos

评论

发布
暂无评论
Docker常用命令小记_Docker_程序员欣宸_InfoQ写作社区