除了基本的 docker pull,docker image,docker ps, 还有一些命令及参数也很重要, 在此记录下来避免遗忘.
环境信息
以下是本次操作的环境:
操作系统: CentOS Linux release 7.7.1908
Docker:19.03.2
假设当前环境正运行着两个容器, 接下来的操作都基于这两个容器进行:
- [[email protected] 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 用来看整体信息:
- [[email protected] 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
- ...
释放空间
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
- [[email protected] 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
按容器名称过滤: docker ps -f name=inspiring_ardinghelli
- [[email protected] 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
按镜像过滤, 这种过滤再细分有三种:
a. 按镜像名和 TAG 过滤: docker ps -f ancestor=tomcat:9.0.26-jdk8-openjdk
b. 按镜像 ID 过滤: docker ps -f ancestor=4965bfab1881
c. 按照镜像摘要信息过滤: docker ps -f [email protected]: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}}"
- [[email protected] 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
下图展示了所有的列的名称:
如下图红框所示, 当字段内容过长时, 展示的是部分内容, 如果想查看完整信息请使用 docker ps --no-trunc
在使用 docker history 命令查看镜像的构建信息时, 也会因为内容过长而被省略, 如下图, 此时也能用 --no-trunc 参数看到被省略的信息:
组合使用
只显示 Tomcat 容器的 ID 字段: docker ps -f ancestor=tomcat:9.0.26-jdk8-openjdk -q
- [[email protected] harbor]# docker ps -f ancestor=tomcat:9.0.26-jdk8-openjdk -q
- 11548ac31116
上面的命令可以得到 Tomcat 容器的 ID 字段, 如果我们想停止该容器, 将上述命令和 docker stop 组合起来使用即可: docker stop $(docker ps -f ancestor=tomcat:9.0.26-jdk8-openjdk -q)
- [[email protected] harbor]# docker stop $(docker ps -f ancestor=tomcat:9.0.26-jdk8-openjdk -q)
- 11548ac31116
- [[email protected] 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/
来源: http://www.bubuko.com/infodetail-3209092.html