柿子树备忘录

vuePress-theme-reco 柿子树    2023
柿子树备忘录

Choose mode

  • dark
  • auto
  • light
首页
个人笔记
  • Web
  • GIS
  • Database
  • DevOps
  • 可视化
地图故事
生活点滴
归档
关于我
author-avatar

柿子树

109

Article

73

Tag

首页
个人笔记
  • Web
  • GIS
  • Database
  • DevOps
  • 可视化
地图故事
生活点滴
归档
关于我
  • git基本使用
  • CentOS7 安装 SVN
  • CentOS在线安装pg、postgis、geoserver
  • Docker

问题集

vuePress-theme-reco 柿子树    2023

问题集

ac 2022-06-19 Docker

# 1. 部署pg或ck数据库

当需要保留默认的数据库配置和数据,不让每次容器停止后启动数据重新被自动初始化时,需要将数据和配置的目录挂载出来。

  • 先启动一个没有挂载目录的容器;
  • 用docker cp命令将容器内部的配置目录和数据目录拷贝一份到宿主机上。
  • 再删掉容器,用-v挂载复制到本地的配置目录和数据目录。
# 查看容器详情,
docker inspect 容器ID
1
2

# 2. Docker 磁盘空间使用分析与清理 解决磁盘空间不足

用户发现 Docker 宿主机的磁盘空间使用率非常高。通过 du 逐层分析,发现是 Volume (opens new window) 或 overlay2 等目录占用了过高空间。示例如下

# 根据使用的存储驱动的不同,相应目录会有所不同:
[root@node3 docker]# du -h --max-depth=1 |sort
104K	./network
13M	./image
20K	./plugins
24G	./overlay2   # 这个目录占用了非常高的磁盘磁盘空间
25G	.
283M	./volumes
4.0K	./swarm
4.0K	./tmp
4.0K	./trust
518M	./containers

1
2
3
4
5
6
7
8
9
10
11
12
13

分析 Docker 空间分布

Docker 的内置 CLI 指令 docker system df,可用于查询镜像(Images)、容器(Containers)和本地卷(Local Volumes)等空间使用大户的空间占用情况。 示例输出如下:

[root@node3 docker]# docker system df
TYPE                TOTAL            ACTIVE              SIZE                RECLAIMABLE
Images              17               12                  2.713 GB            1.144 GB (42%)
Containers          15               12                  10.75 GB            0 B (0%)
Local Volumes       8                4                   282.9 MB            241.8 MB (85%)

1
2
3
4
5
6

查看空间占用细节

可以进一步通过 -v参数查看空间占用细节,以确定具体是哪个镜像、容器或本地卷占用了过高空间。示例输出如下:

[root@node3 docker]# docker system df -v
# 镜像的空间使用情况
Images space usage:

REPOSITORY      TAG      IMAGE ID      CREATED     SIZE        SHARED SIZE         UNIQUE SIZE    CONTAINERS
busybox         latest   6ad733544a63  5 days ago  1.129 MB    0 B    1.129 MB        1
nginx                                                        latest              b8efb18f159b        3 months ago        107.5 MB            107.5 MB            0 B                 4
ubuntu                                                       latest              14f60031763d        3 months ago        119.5 MB            0 B                 119.5 MB            0
alpine                                                       3.3                 606fed0878ec        4 months ago        4.809 MB            0 B                 4.809 MB            0
tutum/curl                                                   latest              01176385d84a        3 years ago         224.4 MB            0 B                 224.4 MB            1

# 容器的空间使用情况
Containers space usage:

CONTAINER ID        IMAGE                                                                    COMMAND                  LOCAL VOLUMES       SIZE                CREATED             STATUS                     NAMES
d1da451ceeab        busybox                                                                  "ping 127.0.0.1"         0                   10.7 GB             About an hour ago   Up About an hour           dstest
956ae1d241e8        nginx:latest                                                             "nginx -g 'daemon ..."   0                   26 B                3 months ago        Up 3 months                localTest_restserver_2
74973d237a06        nginx:latest                                                             "nginx -g 'daemon ..."   0                   2 B                 3 months ago        Up 3 months                

# 本地卷的空间使用情况
Local Volumes space usage:

VOLUME NAME                                                        LINKS               SIZE
83ba8747f4172a3c02a15f85b71e1565affca59f01352b4a94e0d28e65c26d1c   0                   830 B
a479c303b278f1442f66644f694a554aac630e72b7a27065a11ef85c4d87b648   0                   22.16 MB
79a25b6376e0d6587d8f4f24e08f9467981f04daad14bf3353a12d727d065503   1                   18.83 MB

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

**空间清理 **

可以通过 Docker 内置的 CLI 指令 docker system prune来进行自动空间清理。

不同状态的镜像:

  • 已使用镜像(used image): 指所有已被容器(包括已停止的)关联的镜像。即 docker ps -a 看到的所有容器使用的镜像。
  • 未引用镜像(unreferenced image):没有被分配或使用在容器中的镜像,但它有 Tag 信息。
  • 悬空镜像(dangling image):未配置任何 Tag (也就无法被引用)的镜像,所以悬空。这通常是由于镜像 build 的时候没有指定 -t 参数配置 Tag 导致的。

# 参考文章

[1] 你必须知道的Docker数据卷(Volume) https://www.cnblogs.com/edisonchou/p/docker_volumes_introduction.html

[2] docker-3.5 graphdriverhttps://juejin.cn/post/6934732393248981000

[3] Docker 磁盘空间使用分析与清理 解决磁盘空间不足 https://blog.csdn.net/biao0309/article/details/106950944