Por lo que puedo decir, las imágenes de la ventana acoplable se instalan a /var/lib/docker
medida que se extraen. ¿Hay alguna manera de cambiar esta ubicación, como un volumen montado como /mnt
?
Por lo que puedo decir, las imágenes de la ventana acoplable se instalan a /var/lib/docker
medida que se extraen. ¿Hay alguna manera de cambiar esta ubicación, como un volumen montado como /mnt
?
Respuestas:
Con versiones recientes de Docker, establecería el valor del data-root
parámetro en su ruta personalizada, en /etc/docker/daemon.json
(de acuerdo con https://docs.docker.com/engine/reference/commandline/dockerd/#daemon-configuration-file ).
Con versiones anteriores, puede cambiar el directorio base de almacenamiento de Docker (donde van el contenedor y las imágenes) utilizando la -g
opción al iniciar el demonio Docker. (consultar docker --help
) Puede hacer que esta configuración se aplique automáticamente cuando Docker se inicia al agregarla a / etc / default / docker
-g
opción a / etc / defaults / docker en lugar de modificar el archivo Upstart, vea mi respuesta.
DOCKER_OPTS="-dns 8.8.8.8 -dns 8.8.4.4 -g /mnt"
graph
atributo en daemon.json está en desuso a partir de v17.05.0, use data-root
en su lugar, cf. stackoverflow.com/a/50217666/743507
Siguiendo los consejos de los comentarios, utilizo la documentación de Docker systemd para mejorar esta respuesta. El siguiente procedimiento no requiere reiniciar y es mucho más limpio.
Primero cree el directorio y el archivo para la configuración personalizada:
sudo mkdir -p /etc/systemd/system/docker.service.d
sudo $EDITOR /etc/systemd/system/docker.service.d/docker-storage.conf
Para la versión acoplable anterior a la pasta 17.06-ce :
[Service]
ExecStart=
ExecStart=/usr/bin/docker daemon -H fd:// --graph="/mnt"
Para la ventana acoplable después de la pasta de 17.06 ce :
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd -H fd:// --data-root="/mnt"
daemon.json
Recientemente probé el procedimiento anterior con 17.09-ce en Fedora 25 y parece que no funciona. En lugar de esa simple modificación en /etc/docker/daemon.json
hacer el truco:
{
"graph": "/mnt",
"storage-driver": "overlay"
}
A pesar del método, debe volver a cargar la configuración y reiniciar Docker:
sudo systemctl daemon-reload
sudo systemctl restart docker
Para confirmar que Docker se reconfiguró:
docker info|grep "loop file"
En la versión reciente (17.03) se requiere un comando diferente:
docker info|grep "Docker Root Dir"
La salida debería verse así:
Data loop file: /mnt/devicemapper/devicemapper/data
Metadata loop file: /mnt/devicemapper/devicemapper/metadata
O:
Docker Root Dir: /mnt
Luego, puede eliminar de forma segura el antiguo almacenamiento de Docker:
rm -rf /var/lib/docker
docker info
declaración probablemente esté desactualizada. En Ubuntu 16.04, la verificación para reconfigurado es sudo docker info | grep "Docker Root Dir"
. De lo contrario, buena respuesta, debería ser la aceptada;)
Docker Root Dir: /"/mnt"
cuando se ejecuta docker info|grep "Docker Root Dir"
, usted tiene que reemplazar --data-root="/mnt"
en --data-root=/mnt
el interior del archivodocker-storage.conf
Para las nuevas versiones de Docker, debemos usar data-root
como graph
está en desuso en v17.05.0: documentos oficiales en desuso
Edite /etc/docker/daemon.json
(si no existe, créelo) e incluya:
{
"data-root": "/new/path/to/docker-data"
}
Luego reinicie Docker con:
sudo systemctl daemon-reload
sudo systemctl restart docker
Como no he encontrado las instrucciones correctas para hacer esto en Fedora (EDITAR: la gente señaló en los comentarios que esto también debería funcionar en CentOS y Suse) (/ etc / default / docker no se usa allí), estoy agregando mi responde aquí:
Debe editar / etc / sysconfig / docker y agregar la opción -g en la variable OPTIONS. Si hay más de una opción, asegúrese de encerrarlas en "". En mi caso, ese archivo contenía:
OPTIONS=--selinux-enabled
entonces se convertiría
OPTIONS="--selinux-enabled -g /mnt"
Después de un reinicio ( systemctl restart docker
), Docker debería usar el nuevo directorio
No utilice un enlace simbólico para mover la carpeta acoplable a / mnt (por ejemplo). Esto puede causar problemas con el comando docker rm .
Mejor use la opción -g para docker. En Ubuntu puedes configurarlo permanentemente en /etc/default/docker.io. Mejore o reemplace la línea DOCKER_OPTS.
Aquí un ejemplo: `DOCKER_OPTS =" - g / mnt / somewhere / else / docker / "
docker rm
al usar un enlace simbólico?
Ubuntu 16.04
stackoverflow.com/a/30219552/977622 para que funcione
Detener el servicio de acoplador
sudo systemctl stop docker
Mover el directorio de acopladores existente a una nueva ubicación
sudo mv /var/lib/docker/ /path/to/new/docker/
Crear enlace simbólico
sudo ln -s /path/to/new/docker/ /var/lib/docker
Iniciar el servicio de acoplador
sudo systemctl start docker
sudo ln -s /path/to/new/docker/ /var/lib/docker
Esta solución funciona en Red Hat 7.2 y Docker 1.12.0
Edite el archivo /lib/systemd/system/docker.service en su editor de texto.
agregue -g / ruta / a / docker / al final de la directiva ExecStart . La línea completa debería verse así.
ExecStart=/usr/bin/dockerd -g /path/to/docker/
Ejecute el siguiente comando
systemctl daemon-reload
systemctl restart docker
Ejecute el comando para verificar el directorio acoplable
docker info | grep "loop file\|Dir"
Si tiene el archivo / etc / sysconfig / docker en Red Hat o docker 1.7.1, verifique esta respuesta.
Copie y pegue la versión de la respuesta ganadora :)
Cree este archivo solo con este contenido:
$ sudo vi /etc/docker/daemon.json
{
"graph": "/my-docker-images"
}
Probado Ubuntu 16.04.2 LTS
en Docker1.12.6
graph
atributo en daemon.json está en desuso a partir de v17.05.0, use data-root
en su lugar, cf. stackoverflow.com/a/50217666/743507
En CentOS 6.5
service docker stop
mkdir /data/docker (new directory)
vi /etc/sysconfig/docker
agregue la siguiente línea
other_args=" -g /data/docker -p /var/run/docker.pid"
luego guarde el archivo y vuelva a iniciar la ventana acoplable
service docker start
y hará un archivo de repositorio en /data/docker
Para Debian / Ubuntu o Fedora, probablemente pueda usar las otras respuestas. Pero si no tiene archivos debajo de /etc/default/docker
o /etc/sysconfig/docker
, y su sistema está ejecutando systemd, es posible que desee seguir esta respuesta con h3nrik . Estoy usando Arch, y esto funciona para mí.
Básicamente, debe configurar systemd para leer la nueva ubicación de la imagen de Docker como una variable de entorno y pasar esa variable de entorno al script de ejecución del demonio Docker.
Para completar, aquí está la respuesta de h3nrick:
¿Tienes un /lib/systemd/system/docker.service
archivo?
Si es así, editar de manera que el servicio utiliza el estibador habitual /etc/default/docker
como un archivo de entorno: EnvironmentFile=-/etc/default/docker
.
En el /etc/default/docker
archivo, luego agregue DOCKER_OPTS="-g /home/rseixas/Programs/Docker/images"
.
Al final solo haz un systemctl daemon-reload && systemctl restart docker
.
Para más información, consulte también la documentación .
Una solución mucho más simple es crear un punto de enlace flexible a lo que desee, como
link -s /var/lib/docker /mnt/whatever
Funciona para mí en mi servidor CentOS 6.5.
Según lo recomendado por @mbarthelemy, esto se puede hacer a través de la -g
opción al iniciar el dacker de Docker directamente.
Sin embargo, si Docker se inicia como un servicio del sistema, no se recomienda modificar el /etc/default/docker
archivo. Hay una guía para esto ubicada aquí .
El enfoque correcto es crear un /etc/docker/daemon.json
archivo en sistemas Linux (o Mac) o %programdata%\docker\config\daemon.json
en Windows. Si este archivo no se está utilizando para otra cosa, los siguientes campos deberían ser suficientes:
{
"graph": "/docker/daemon_files"
}
Esto supone que la nueva ubicación donde desea que Docker persista sus datos es /docker/daemon_files
En openSUSE Leap 42.1
$cat /etc/sysconfig/docker
## Path : System/Management
## Description : Extra cli switches for docker daemon
## Type : string
## Default : ""
## ServiceRestart : docker
#
DOCKER_OPTS="-g /media/data/installed/docker"
Tenga en cuenta que DOCKER_OPTS estaba inicialmente vacío y todo lo que hice fue agregar el argumento para hacer que Docker use mi nuevo directorio
En Fedora 26 y probablemente en muchas otras versiones, puede encontrar un error después de mover la ubicación de la carpeta base como se describió anteriormente. Esto es particularmente cierto si lo está trasladando a un lugar debajo de / home. Esto se debe a que SeLinux se activa y evita que el contenedor de Docker ejecute muchos de sus programas desde esta ubicación.
La solución corta es eliminar la opción --enable-selinux cuando agrega el parámetro -g.
En un servidor AWS Ubuntu 16.04 puse las imágenes de Docker en un EBS separado, montado en / home / ubuntu / kaggle /, debajo del directorio de docker
Este fragmento de mi script de inicialización funcionó correctamente
# where are the images initially stored?
sudo docker info | grep "Root Dir"
# ... not where I want them
# modify the configuration files to change to image location
# NOTE this generates an error
# WARNING: Usage of loopback devices is strongly discouraged for production use.
# Use `--storage-opt dm.thinpooldev` to specify a custom block storage device.
# see /programming/31620825/
# warning-of-usage-of-loopback-devices-is-strongly-discouraged-for-production-use
sudo sed -i ' s@#DOCKER_OPTS=.*@DOCKER_OPTS="-g /home/ubuntu/kaggle/docker"@ ' /etc/default/docker
sudo chmod -R ugo+rw /lib/systemd/system/docker.service
sudo cp /lib/systemd/system/docker.service /etc/systemd/system/
sudo chmod -R ugo+rw /etc/systemd/system/
sudo sed -i ' s@ExecStart.*@ExecStart=/usr/bin/dockerd $DOCKER_OPTS -H fd://@ ' /etc/systemd/system/docker.service
sudo sed -i '/ExecStart/a EnvironmentFile=-/etc/default/docker' /etc/systemd/system/docker.service
sudo systemctl daemon-reload
sudo systemctl restart docker
sudo docker info | grep "Root Dir"
# now they're where I want them
Para los usuarios de Mac en la versión 17.06.0-ce-mac19, simplemente puede mover la ubicación de la imagen del disco desde la interfaz de usuario en la opción de preferencias Simplemente cambie la ubicación de la imagen del disco y funcionará (haciendo clic en Mover imagen del disco ) y reiniciando el estibador Usando este enfoque pude usar mi disco duro externo para almacenar imágenes acoplables.