文档章节

Docker常用命令小记

 程序员欣宸
发布于 09/22 23:52
字数 1186
阅读 15
收藏 0

除了基本的<font color="blue">docker pull</font>、<font color="blue">docker image</font>、<font color="blue">docker ps</font>,还有一些命令及参数也很重要,在此记录下来避免遗忘。

环境信息

以下是本次操作的环境:

  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

整体信息

<font color="blue">docker info</font>用来看整体信息:

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

过滤

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

  1. 按容器ID过滤:<font color="blue">docker ps -f id=11548ac31116</font>
[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. 按容器名称过滤:<font color="blue">docker ps -f name=inspiring_ardinghelli</font>
[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过滤:<font color="blue">docker ps -f ancestor=tomcat:9.0.26-jdk8-openjdk</font> b. 按镜像ID过滤:<font color="blue">docker ps -f ancestor=4965bfab1881</font> c. 按照镜像摘要信息过滤:<font color="blue">docker ps -f ancestor=tomcat@sha256:67a9904e3ceb03abc50db7b374db7362f7e44d08a41488dd24c2bb14df8989a3</font> <br>镜像的摘要信息如何获取呢?执行命令<font color="blue">docker inspect tomcat:9.0.26-jdk8-openjdk</font>可以获取镜像的详情,如下图所示,红框中就是摘要信息: 在这里插入图片描述
  2. 按容器状态过滤:<font color="blue">docker ps -f status=running</font>,状态有这些:created, restarting, running, removing, paused, exited, dead
  3. 还有其他的过滤条件,不过不常用到,如下图: 在这里插入图片描述

信息获取

  1. 查看容器所占硬盘空间:<font color="blue">docker ps -s</font> 在这里插入图片描述 上图红框中就是容器资源占用情况,<font color="blue">508MB</font>表示:镜像大小+容器自身大小,40KB表示容器自身所占资源大小;
  2. 查看容器信息时只看某些字段,例如只看容器ID、镜像、容器名称这三列:<font color="blue">docker ps --format "table {{.ID}}: {{.Image}}: {{.Names}}"</font>
[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. 如下图红框所示,当字段内容过长时,展示的是部分内容,如果想查看完整信息请使用<font color="blue">docker ps --no-trunc</font> 在这里插入图片描述 4. 在使用<font color="blue">docker history</font>命令查看镜像的构建信息时,也会因为内容过长而被省略,如下图,此时也能用<font color="blue">--no-trunc</font>参数看到被省略的信息: 在这里插入图片描述

组合使用

  1. 只显示Tomcat容器的ID字段:<font color="blue">docker ps -f ancestor=tomcat:9.0.26-jdk8-openjdk -q</font>
[root@vostro harbor]# docker ps -f ancestor=tomcat:9.0.26-jdk8-openjdk -q
11548ac31116
  1. 上面的命令可以得到Tomcat容器的ID字段,如果我们想停止该容器,将上述命令和<font color="blue">docker stop</font>组合起来使用即可:<font color="blue">docker stop $(docker ps -f ancestor=tomcat:9.0.26-jdk8-openjdk -q)</font>
[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/

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

© 著作权归作者所有

粉丝 0
博文 40
码字总数 69140
作品 0
深圳
私信 提问
Docker简明手册

查看docker的子命令,直接敲或完整的就可以了: root@tankywoo-docker:~# docker [1/1617] Usage: docker [OPTIONS] COMMAND [arg...] -H=[unix:///var/run/docker.sock]: tcp://host:port to......

openthings
2016/03/28
157
0
Docker命令小记。

记录一下Docker中的命令,容器名称以:leafage 为例,不定时更新。 启动docker:systemctl start docker( RHEL7 红帽企业版”(Red Hat Enterprise Linux)) / service docker start (Linux...

Leafage_M
2017/11/17
0
0
Docker 三剑客之 Docker Swarm

上一篇:Docker 三剑客之 Docker Compose 阅读目录: Docker Machine 创建 Docker 主机 Docker Swarm 配置集群节点 Docker Service 部署单个集群服务 Docker Stack 部署多个集群服务,以及 ...

那谁爸爸
2018/01/08
0
0
从零开始搭建Jenkins+Docker自动化集成环境

本文只简单标记下大概的步骤,具体搭建各个部分的细节,还请自行搜索。第一、二部分只是对Jenkins和Docker的简单介绍,熟悉的同学请直接跳到第三部分。 Jenkins可以帮你构建一个自动化的持续...

林杰
2016/09/05
0
0
Docker系列教程23-docker-compose常用命令

原文:,转载请注明出处。 和docker命令一样,docker-compose命令也有很多选项。下面我们来详细探讨docker-compose的常用命令。 build 构建或重新构建服务。服务被构建后将会以 的形式标记,...

EACDY
2018/05/16
55
0

没有更多内容

加载失败,请刷新页面

加载更多

前端技术之:Prisma Demo服务部署过程记录

安装前提条件: 1、已经安装了docker运行环境 2、以下命令执行记录发生在MackBook环境 3、已经安装了PostgreSQL(我使用的是11版本) 4、Node开发运行环境可以正常工作 首先需要通过Node包管...

popgis
今天
5
0
数组和链表

数组 链表 技巧一:掌握链表,想轻松写出正确的链表代码,需要理解指针获引用的含义: 对指针的理解,记住下面的这句话就可以了: 将某个变量赋值给指针,实际上就是将这个变量的地址赋值给指...

code-ortaerc
今天
4
0
栈-链式(c/c++实现)

上次说“栈是在线性表演变而来的,线性表很自由,想往哪里插数据就往哪里插数据,想删哪数据就删哪数据...。但给线性表一些限制呢,就没那么自由了,把线性表的三边封起来就变成了栈,栈只能...

白客C
今天
43
0
Mybatis Plus service

/** * @author beth * @data 2019-10-20 23:34 */@RunWith(SpringRunner.class)@SpringBootTestpublic class ServiceTest { @Autowired private IUserInfoService iUserInfoS......

一个yuanbeth
今天
5
0
php7-internal 7 zval的操作

## 7.7 zval的操作 扩展中经常会用到各种类型的zval,PHP提供了很多宏用于不同类型zval的操作,尽管我们也可以自己操作zval,但这并不是一个好习惯,因为zval有很多其它用途的标识,如果自己...

冻结not
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部