Alterar diretório de dados do Docker

8

Como posso alterar o diretório de dados do Docker em que o docker salva o contêiner (ou onde o lxc salva o contêiner)? Eu tenho no meu servidor um ssd e um disco rígido e quero que o contêiner seja salvo no disco rígido. obrigado

ssd_rider
fonte

Respostas:

11

Acredito que neste guia você terá uma boa explicação.

Você pode alterar o diretório base de armazenamento do Docker (para onde vão o contêiner e as imagens) usando a opção -g ao iniciar o daemon do Docker.

Ubuntu / Debian: edite seu /etc/default/dockerarquivo com a -gopção:DOCKER_OPTS="-dns 8.8.8.8 -dns 8.8.4.4 -g /mnt"

Fedora / Centos: edite /etc/sysconfig/dockere adicione a -gopção na variável other_args: ex. other_args="-g /var/lib/testdir". Se houver mais de uma opção, inclua-as em "". Após uma reinicialização, (reinicialização da docker de serviço) O Docker deve usar o novo diretório.

O uso de um link simbólico é outro método para alterar o armazenamento de imagens.

Cuidado - Essas etapas dependem do seu / var / lib / docker atual ser um diretório real (não um link simbólico para outro local).

1) Parar janela de encaixe: service docker stop. Verifique se nenhum processo do docker está executando o ps faux

2) O docker de verificação dupla realmente não está sendo executado. Dê uma olhada no diretório atual do docker: ls/var/lib/docker/

2b) Faça um backup - tar -zcC /var/lib docker > /mnt/pd0/var_lib_docker-backup-$(date +%s).tar.gz

3) Mova o /var/lib/dockerdiretório para sua nova partição:mv /var/lib/docker /mnt/pd0/docker

4) Faça um link simbólico: ln -s /mnt/pd0/docker /var/lib/docker

5) Dê uma olhada na estrutura de diretórios para garantir que ela se parecesse com a mv: ls /var/lib/docker/(observe a barra à direita

6) Inicie o docker de backup service docker start

7) reinicie seus contêineres resolva o link simbólico)

Conrado Fonseca
fonte
qual é o motivo de 4)? É necessário? No meu caso, eu gostaria que os arquivos docker estivessem em um RAID montado e não na partição de inicialização.
Roman Mik 27/02
9

Nas versões mais recentes do Docker no Ubuntu, você editará o /etc/default/daemon.json da seguinte forma:

{
    "data-root": "/new/location"
}
MattK
fonte
2

Para alterar o datadiretório em dockerque ele precisa ser executado com a opção -g /my/data. No meu /etc/default/dockerconjunto:

DOCKER_OPTS="-g /srv/docker"

Veja também minhas anotações aqui .

Para alterar o datadiretório lxc, coloquei /etc/lxc/lxc.conf:

lxc.lxcpath = /srv/lxc

Stuart Cardall
fonte
1

Atualize para o Docker 1.13.0.

Nas notas de versão:

- New
The storage location of the Linux volume can now be moved
Snowcrash
fonte
1

Para expandir a resposta de @ MattK:

A documentação do Docker sobre o controle do daemon do Docker sugere que a maneira independente de plataforma de fazer isso é:

edite o arquivo /etc/docker/daemon.json para conter a linha

{
    "data-root": "/mnt/docker-data",
    (...)
}

onde /mnt/docker-dataé o diretório em que você deseja que as imagens e os contêineres do docker residam.

Então

sudo systemctl restart docker

Você pode verificar se funcionou executando

docker info

e procure o conteúdo da linha que começa com Docker Root Dir:.

Consulte também https://stackoverflow.com/a/50217666/2209313 e https://unix.stackexchange.com/q/452368/36043 .

Lógica Errante
fonte