remove - docker tag
¿Cómo cambiar el directorio de instalación de la imagen del acoplador? (16)
Por lo que puedo decir, las imágenes acoplables se instalan en /var/lib/docker
medida que se extraen. ¿Hay alguna manera de cambiar esta ubicación, como un volumen montado como /mnt
?
Una manera mucho más fácil de hacerlo:
Detener el servicio de docker
sudo systemctl stop docker
Mover el directorio docker 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/
Comience el servicio del acoplador
sudo systemctl start 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 respuesta 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 adjuntarlas en "". En mi caso, ese archivo contenía:
OPTIONS=--selinux-enabled
por lo que se convertiría
OPTIONS="--selinux-enabled -g /mnt"
Después de un reinicio ( systemctl restart docker
), Docker debería usar el nuevo directorio
Con las versiones recientes de Docker, debe establecer el valor del parámetro del graph
en su ruta personalizada, en /etc/docker/daemon.json
(de acuerdo con https://docs.docker.com/v1.11/engine/reference/commandline/daemon/#daemon-configuration-file ).
Con las versiones anteriores, puede cambiar el directorio base de almacenamiento de Docker (donde van el contenedor y las imágenes) utilizando la opción -g
al iniciar el daemon Docker. (marque el docker --help
). Puede hacer que esta configuración se aplique automáticamente cuando Docker comience agregándola a / etc / default / docker
Copiar y pegar la versión de la respuesta del ganador :)
Crea este archivo solo con este contenido:
$ sudo vi /etc/docker/daemon.json
{
"graph": "/my-docker-images"
}
Probado en Ubuntu 16.04.2 LTS
en el 1.12.6
En CentOS 6.5
service docker stop
mkdir /data/docker (new directory)
vi /etc/sysconfig/docker
agregar la siguiente línea
other_args=" -g /data/docker -p /var/run/docker.pid"
luego guarde el archivo y comience de nuevo con la ventana acoplable
service docker start
y hará un archivo de repositorio en /data/docker
En Fedora 26 y probablemente en muchas otras versiones, puede encontrar un error después de mover la ubicación de su carpeta base como se describe arriba. Esto es particularmente cierto si lo está moviendo a algún lugar en / home. Esto se debe a que SeLinux interviene y evita que el contenedor acoplable 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 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 un servidor de AWS Ubuntu 16.04 coloqué las imágenes de Docker en un EBS separado, montado en / home / ubuntu / kaggle /, debajo del directorio docker
Este fragmento de mi secuencia de comandos 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 https://.com/questions/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
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 / path / to / 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 comando debajo
systemctl daemon-reload
systemctl restart docker
Ejecute el comando para verificar el directorio de docker
docker info | grep "loop file/|Dir"
Si tiene el archivo / etc / sysconfig / docker en Red Hat o acoplador 1.7.1, marque this respuesta.
No use un enlace simbólico para mover la carpeta del acoplador a / mnt (por ejemplo). Esto puede causar problemas con el comando docker rm .
Mejor uso de 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 / "
Para Debian / Ubuntu o Fedora, probablemente puedas usar las otras respuestas. Pero si no tiene archivos en /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, necesita configurar systemd para leer la nueva ubicación de la imagen del acoplador como una variable de entorno y pasar esa variable de entorno al script de ejecución del daemon de Docker.
Para completar, aquí está la respuesta de h3nrick:
¿Tiene un archivo /lib/systemd/system/docker.service
?
Si es así, edítelo para que el servicio Docker use el /etc/default/docker
habitual como un archivo de entorno: EnvironmentFile=-/etc/default/docker
.
En el /etc/default/docker
, agregue DOCKER_OPTS="-g /home/rseixas/Programs/Docker/images"
.
Al final, solo haga un systemctl daemon-reload && systemctl restart docker
.
Para obtener más información, también consulte la documentation .
Para las nuevas versiones de docker, necesitamos usar data-root
partir de los documentos obsoletos oficiales (Obsoleto en versión: v17.05.0)
{
"data-root": "/new/path/to/docker-data"
}
- Cambiar el almacenamiento de Docker con data-root : mi Post más útil con los pasos a seguir
- En el caso de Windows, una publicación similar específica de Windows
Para los usuarios de Mac en la versión 17.06.0-ce-mac19, simplemente puede mover la ubicación de la imagen de disco desde la interfaz de usuario en la opción de preferencias. Simplemente cambie la ubicación de la imagen de disco y funcionará (haciendo clic en Mover imagen de disco ) y reiniciando el docker. Usando este enfoque, pude usar mi disco duro externo para almacenar imágenes de portón.
Según lo recomendado por @mbarthelemy esto se puede hacer a través de la opción -g
al iniciar el daemon docker directamente.
Sin embargo, si docker se está iniciando como un servicio del sistema, no se recomienda modificar el /etc/default/docker
. Aquí hay una guía para esto.
El enfoque correcto es crear un archivo /etc/docker/daemon.json
en sistemas Linux (o Mac) o %programdata%/docker/config/daemon.json
en Windows. Si este archivo no se usa para nada más, los siguientes campos deberían ser suficientes:
{
"graph": "/docker/daemon_files"
}
Esto supone que la nueva ubicación en la que desea que Docker persista sus datos es /docker/daemon_files
Siguiendo el consejo de los comentarios, utilizo la documentación del sistema Docker para mejorar esta respuesta. Debajo del procedimiento no es necesario reiniciar y es mucho más limpio.
Primero crea 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 docker antes del 17.06-ce paste:
[Service]
ExecStart=
ExecStart=/usr/bin/docker daemon -H fd:// --graph="/mnt"
Para docker después de la pasta 17.06-ce :
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd -H fd:// --data-root="/mnt"
Método alternativo a través de 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
haz el truco:
{
"graph": "/mnt",
"storage-driver": "overlay"
}
A pesar del método, tienes que volver a cargar la configuración y reiniciar Docker:
sudo systemctl daemon-reload
sudo systemctl restart docker
Para confirmar que Docker fue reconfigurado:
docker info|grep "loop file"
En la versión más 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
A continuación, puede eliminar de forma segura el antiguo almacenamiento Docker:
rm -rf /var/lib/docker
Una solución mucho más simple es crear un punto de enlace suave para lo que quieras, como
link -s /var/lib/docker /mnt/whatever
Funciona para mí en mi servidor CentOS 6.5.