Los datos de tiempo de ejecución de Docker, incluidas imágenes, contenedores, redes y volúmenes de almacenamiento, se almacenan en el directorio /var/lib/docker de forma predeterminada. Si la capacidad del disco duro es limitada, debemos modificar esta ubicación de almacenamiento.
Los pasos de modificación son los siguientes:
-
Detenga el servicio Docker:
sudo systemctl stop docker
-
Cree un nuevo directorio para almacenar datos del tiempo de ejecución de Docker:
sudo mkdir /new/docker/image/path
-
Copie el directorio de datos de tiempo de ejecución predeterminado de Docker al nuevo directorio:
sudo rsync -axPS /var/lib/docker/ /new/docker/image/path
-
Abra el archivo de configuración de Docker:
sudo vim /etc/docker/daemon.json
-
Agregue lo siguiente al archivo:
{
"graph": "/new/docker/image/path" // docker版本不同可能 "graph"应该替换为"data-root"
}
-
Guarde y cierre el archivo.
-
Inicie el servicio Docker:
sudo systemctl start docker
-
eliminar el directorio original
El directorio /var/lib/docker contiene los siguientes subdirectorios:
- contenedores: almacena metadatos e información de estado de los contenedores.
- imagen: almacena los metadatos y datos de capa de la imagen.
- red: almacena metadatos e información de estado de la red Docker.
- complementos: almacena los datos de los complementos de Docker.
- swarm: almacena metadatos e información de estado del clúster Swarm.
- tmp: almacena archivos temporales cuando se ejecuta Docker.
- confianza: almacena firmas de imágenes de Docker y datos de confianza.
- volúmenes: almacena datos de volúmenes Docker.
Explicación del comando rsync -axPS:
se utiliza para sincronizar archivos y directorios de una ubicación a otra. Sus opciones tienen los siguientes significados:
- -a: modo de archivo, conserva todos los atributos del archivo, incluidos permisos, propietario, grupo, marca de tiempo, etc.
- -x: no cruza los límites del sistema de archivos, evitando cruzar diferentes sistemas de archivos durante la sincronización.
- -P: Muestra el progreso y continúa la transferencia. Si la transferencia se interrumpe, la siguiente transferencia puede continuar desde donde se interrumpió.
- -S: mantiene archivos dispersos, es decir, solo se transferirán los bloques de datos que realmente existen en el archivo.
Este comando se usa generalmente para realizar copias de seguridad y sincronizar archivos y directorios, y puede sincronizar archivos entre hosts locales o remotos.