117 lines
5.3 KiB
Markdown
117 lines
5.3 KiB
Markdown
|
---
|
|||
|
title: 问题集
|
|||
|
date: 2022-06-19
|
|||
|
author: ac
|
|||
|
tags:
|
|||
|
- Docker
|
|||
|
categories:
|
|||
|
- DevOps
|
|||
|
---
|
|||
|
|
|||
|
### 1. 部署pg或ck数据库
|
|||
|
|
|||
|
当需要保留默认的数据库配置和数据,不让每次容器停止后启动数据重新被自动初始化时,需要将数据和配置的目录挂载出来。
|
|||
|
|
|||
|
- 先启动一个没有挂载目录的容器;
|
|||
|
- 用`docker cp`命令将容器内部的配置目录和数据目录拷贝一份到宿主机上。
|
|||
|
- 再删掉容器,用`-v`挂载复制到本地的配置目录和数据目录。
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
```shell
|
|||
|
# 查看容器详情,
|
|||
|
docker inspect 容器ID
|
|||
|
```
|
|||
|
|
|||
|
|
|||
|
|
|||
|
### 2. Docker 磁盘空间使用分析与清理 解决磁盘空间不足
|
|||
|
|
|||
|
用户发现 Docker 宿主机的磁盘空间使用率非常高。通过 du 逐层分析,发现是 [Volume](https://so.csdn.net/so/search?q=Volume&spm=1001.2101.3001.7020) 或 overlay2 等目录占用了过高空间。示例如下
|
|||
|
|
|||
|
```shell
|
|||
|
# 根据使用的存储驱动的不同,相应目录会有所不同:
|
|||
|
[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
|
|||
|
|
|||
|
```
|
|||
|
|
|||
|
**分析 Docker 空间分布**
|
|||
|
|
|||
|
Docker 的内置 CLI 指令 `docker system df`,可用于查询镜像(Images)、容器(Containers)和本地卷(Local Volumes)等空间使用大户的空间占用情况。 示例输出如下:
|
|||
|
|
|||
|
```shell
|
|||
|
[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%)
|
|||
|
|
|||
|
```
|
|||
|
|
|||
|
**查看空间占用细节**
|
|||
|
|
|||
|
可以进一步通过 `-v`参数查看空间占用细节,以确定具体是哪个镜像、容器或本地卷占用了过高空间。示例输出如下:
|
|||
|
|
|||
|
```shell
|
|||
|
[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
|
|||
|
|
|||
|
```
|
|||
|
|
|||
|
**空间清理 **
|
|||
|
|
|||
|
可以通过 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
|