Armazenamento persistente do Docker, Volume de dados

Depois que o contêiner do docker for reiniciado, podemos modificá-lo e excluí-lo e assim por diante.
Se for um contêiner de um banco de dados, os dados nele não desejarão desaparecer, pois o contêiner desaparece. Requer armazenamento de dados persistente.

Volume de dados  

 

 

 Este é o Dockerfile do mysql no hub do docker.O VOLUME aqui significa que os dados gerados são gravados em / var / lib / mysql no host atual.

 

[miller @ docker4 ~ ] $ docker images 
TAG DE REPOSITÓRIO ID DA IMAGEM TAMANHO CRIADO 
daocloud.io / library / mysql mais recente 9228ee8bac7a         11 dias atrás 547MB
[miller @ docker4 ~] $ docker run -d --name = mysql1 -e MYSQL_ALLOW_EMPTY_PASSWORD = true daocloud.io/library/ mysql 
e7945f20bc456038a110a9798299356c8e7912a22eceaaf4e2bd29880460ab6f
-e MYSQL_ALLOW_EMPTY_PASSWORD = true diz ao mysql para usá-lo sem uma senha.

https://hub.docker.com/_/mysql Aqui está uma explicação detalhada de alguns parâmetros. Você também pode definir uma senha.

[miller @ docker4 ~ ] $ docker volume ls # Encontrará um local no host para armazenar dados 
NOME DO VOLUME DO DRIVER 
local 283f5d6584642ae6d32d5e02fd1330855b501dd891ddf38c5b40428183c652c8 # Este é o 
redis44b

 

[Miller @ docker4 estivador] volume de $ estivador inspecionar 330b65bda64c22b0929443d9eaa2db28c3a2468f76876b706c8efdbcbf6e4919 
[ 
    { 
        " CreatedAt " : " 2020-04-11T20: 26: 36 + 08: 00 " ,
         " driver " : " locais " ,
         " Marcadores " : nula ,
         "Mountpoint" : "/ var / lib / docker / volumes / 330b65bda64c22b0929443d9eaa2db28c3a2468f76876b706c8efdbcbf6e4919 / _data",
         " Name " : "330b65bda64c22b0929443d9eaa2db28c3a2468f76876b706c8efdbcbf6e4919 ",
         " Opções " : nulo ,
         " Escopo " : " local " 
    } 
]

"Mountpoint": "/ var / lib / docker / volumes / 330b65bda64c22b0929443d9eaa2db28c3a2468f76876b706c8efdbcbf6e4919 / _data" Esse caminho é 
o caminho do arquivo no host em que o docker está instalado . Os dados gerados pelo banco de dados serão armazenados aqui. O volume não desaparecerá devido à exclusão do contêiner.

 

Como o nome do volume não é amigável, você pode defini-lo: alias:

[miller @ docker4 ~] $ docker run -d --name = mysql1 -v mysql: / var / lib / mysql -e MYSQL_ALLOW_EMPTY_PASSWORD = true daocloud.io/library/ mysql 
7b006082d7d9c1cc8f17dfaefda26afea6d2adb0fe179a6d2adb094
-v mysql: / var / lib / mysql neste parâmetro. O volume [/ var / lib / mysql] no Dockerfile raiz do mysql fará o mesmo.
[miller @ docker4 ~ ] $ docker volume ls 
DRIVER VOLUME NAME 
local 330b65bda64c22b0929443d9eaa2db28c3a2468f76876b706c8efdbcbf6e4919 # redis 
local mysql # Volume do contêiner mysql recém criado

 

Você pode ir para o contêiner do MySQL e efetuar login no cliente.

[miller @ docker4 ~] $ docker exec -it mysql1 / bin / bash 
root @ c057b8fbb3ad: / # mysql - u root Bem-vindo ao monitor MySQL. Os comandos terminam com; ou \ g. Seu ID de conexão MySQL é 8 Versão do servidor: 8.0 . 19 MySQL Community Server - GPL Copyright (c) 2000 , 2020 , Oracle e / ou suas afiliadas. Todos os direitos reservados. Oracle é uma marca registrada da Oracle Corporation e / ou de suas afiliadas. Outros nomes podem ser marcas comerciais de seus respectivos proprietários. Digite ' help; "ou ' \ h ' para obter ajuda. Digite ' \ c ' para limpar a instrução de entrada atual. mysql >

Nesse banco de dados, crie uma biblioteca, pare o contêiner mysql e exclua o contêiner.

[miller @ docker4 ~ ] $ docker ps 
ID DO RECIPIENTE COMANDO DE IMAGEM NOME DE PORTAS DE STATUS 
C057b8fbb3ad daocloud.io / library / mysql    " docker-entrypoint.s… "    4 minutos atrás Up 4 minutos         3306 / tcp, 33060 / tcp mysql1 
[miller @ docker4 ~] $ docker rm- f mysql1 # para este contêiner e exclui o 
mysql1
[miller @ docker4 ~ ] $ docker volume ls 
DRIVER VOLUME NAME 
local 330b65bda64c22b0929443d9eaa2db28c3a2468f76876b706c8efdbcbf6e4919 
o volume mysql local # ainda está lá. Crie um contêiner mais tarde e ainda use este volume

# Como você pode ver, crie um container novamente. Se você ainda usa o mesmo volume. Você pode continuar usando os dados originais. Não há perda. 

[Miller @ docker4 ~] $ estivador prazo -d --name = mysql2 -v mysql: / var / lib / mysql -e MYSQL_ALLOW_EMPTY_PASSWORD = true daocloud.io/library/ mysql 
f9cfe55e7e6d85a6c44bc177fb324051e5735e80dbf30c5224cbfd0c7f844181 
[Miller @ docker4 ~] $ estivador exec -é mysql2 mysql - u root Bem-vindo ao monitor MySQL. Os comandos terminam com; ou \ g. Seu ID de conexão MySQL é 8 Versão do servidor: 8.0 . 19 MySQL Community Server - GPL Copyright (c) 2000 , 2020 , Oracle e / ou suas afiliadas. Todos os direitos reservados. Oracle éuma marca registrada da Oracle Corporation e / ou de suas afiliadas. Outros nomes podem ser marcas comerciais de seus respectivos proprietários. Digite ' help; ' ou ' \ h ' para obter ajuda. Digite ' \ c ' para limpar a instrução de entrada atual. mysql > show database; + -------------------- + | Banco de dados | + -------------------- + | estivador | | information_schema | | mysql | | performance_schema | | sys | + -------------------- + 5 linhas em conjunto ( 0,01 s)

 

Acho que você gosta

Origin www.cnblogs.com/chengege/p/12682501.html
Recomendado
Clasificación