Después de reiniciar el contenedor de Docker, podemos modificarlo y eliminarlo, etc.
Si es un contenedor de una base de datos, los datos que contiene no quieren desaparecer a medida que desaparece el contenedor. Requiere almacenamiento persistente de datos.
Volumen de datos
Este es el Dockerfile de mysql en el Docker Hub. VOLUME significa que los datos generados se escriben en / var / lib / mysql en el host actual.
[miller @ docker4 ~ ] $ docker images REPOSITORY TAG ID DE IMAGEN TAMAÑO CREADO daocloud.io / library / mysql latest 9228ee8bac7a Hace 11 días 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 le dice a mysql que lo use sin contraseña.
https://hub.docker.com/_/mysql Aquí hay una explicación detallada de algunos parámetros. También puedes establecer una contraseña.
[miller @ docker4 ~ ] $ docker volume ls # Encontrará un lugar en el host para almacenar datos
NOMBRE DEL VOLUMEN DEL CONDUCTOR
local 283f5d6584642ae6d32d5e02fd1330855b501dd891ddf38c5b40428183c652c8 # Este es el
local de redis 330b65bda44d9b9b09b2964622
[Miller @ docker4 ventana acoplable] volumen ventana acoplable $ inspeccionar 330b65bda64c22b0929443d9eaa2db28c3a2468f76876b706c8efdbcbf6e4919 [ { " CreatedAt " : " 2020-04-11T20: 26: 36 + 08: 00 " , " conductor " : " locales " , " etiquetas " : nula , "Puntos de Montaje" : "/ var / lib / docker / volume / 330b65bda64c22b0929443d9eaa2db28c3a2468f76876b706c8efdbcbf6e4919 / _data", " Nombre " : "330b65bda64c22b0929443d9eaa2db28c3a2468f76876b706c8efdbcbf6e4919 ", " Opciones " : nulo , " Alcance " : " local " } ]
"Mountpoint": "/ var / lib / docker / volume / 330b65bda64c22b0929443d9eaa2db28c3a2468f76876b706c8efdbcbf6e4919 / _data" Esta ruta es
la ruta del archivo en el host donde está instalada la ventana acoplable . Los datos generados por la base de datos se almacenarán aquí. El volumen no desaparecerá debido a la eliminación del contenedor.
Como el nombre del volumen no es amigable, puede definirlo usted mismo: alias:
[miller @ docker4 ~] $ docker run -d --name = mysql1 -v mysql: / var / lib / mysql -e MYSQL_ALLOW_EMPTY_PASSWORD = true daocloud.io/library/ mysql 7b006082d7d9c1cc8f17dfaefda26afeac9202202202202202202202
-v mysql: / var / lib / mysql en este parámetro. El volumen [/ var / lib / mysql] en la raíz mysql Dockerfile hará lo mismo.
[miller @ docker4 ~ ] $ docker volume ls
NOMBRE DEL VOLUMEN DEL CONDUCTOR
local 330b65bda64c22b0929443d9eaa2db28c3a2468f76876b706c8efdbcbf6e4919 # redis
local mysql # Volumen del contenedor mysql recién creado
Puede ir al contenedor MySQL e iniciar sesión en el cliente.
[miller @ docker4 ~] $ docker exec -it mysql1 / bin / bash
root @ c057b8fbb3ad: / # mysql - u root Bienvenido al monitor MySQL. Los comandos terminan con; o \ g. Su ID de conexión MySQL es la versión de servidor 8 : 8.0 . 19 MySQL Community Server - GPL Copyright (c) 2000 , 2020 , Oracle y / o sus filiales. Todos los derechos reservados. Oracle es una marca registrada de Oracle Corporation y / o sus filiales. Otros nombres pueden ser marcas registradas de sus respectivos propietarios. Escriba ' ayuda; 'o ' \ h ' para obtener ayuda. Escriba ' \ c ' para borrar la declaración de entrada actual. mysql >
En esta base de datos, cree una biblioteca, luego detenga el contenedor mysql y luego elimine el contenedor.
[Docker4 Miller @ ~ ] $ acoplable PS puertos de contenedores de identificación el estado de la imagen creada los nombres de comandos c057b8fbb3ad daocloud.io / Library / MySQL " Docker-entrypoint.s ... " . 4 minutos hasta hace miembro . 4 minutos 3306 / TCP, 33060 / mysql1 TCP [Miller @ docker4 ~] $ docker rm- f mysql1 # detiene este contenedor y elimina mysql1
[miller @ docker4 ~ ] $ docker volume ls
NOMBRE DEL VOLUMEN DEL CONDUCTOR
local 330b65bda64c22b0929443d9eaa2db28c3a2468f76876b706c8efdbcbf6e4919
local mysql # volume todavía está allí. Crea un contenedor más tarde y aún usa este volumen
# Como puede ver, cree un contenedor nuevamente. Si aún usa el mismo volumen. Puede continuar utilizando los datos originales. No hay perdida.
[Miller @ docker4 ~] $ estibador plazo -d --name = mysql2 -v mysql: / var / lib / mysql -e MYSQL_ALLOW_EMPTY_PASSWORD = true daocloud.io/library/ MySQL f9cfe55e7e6d85a6c44bc177fb324051e5735e80dbf30c5224cbfd0c7f844181
[Miller @ docker4 ~] $ estibador ejecutivo -es mysql2 mysql - u root Bienvenido al monitor MySQL. Los comandos terminan con; o \ g. Su ID de conexión MySQL es la versión de servidor 8 : 8.0 . 19 MySQL Community Server - GPL Copyright (c) 2000 , 2020 , Oracle y / o sus filiales. Todos los derechos reservados. Oracle esuna marca registrada de Oracle Corporation y / o sus afiliados. Otros nombres pueden ser marcas registradas de sus respectivos propietarios. Escriba ' ayuda; ' o ' \ h ' para obtener ayuda. Escriba ' \ c ' para borrar la declaración de entrada actual. mysql > mostrar bases de datos; + -------------------- + | Base de datos | + -------------------- + | acoplador | El | información_esquema | El | mysql | El | performance_schema | El | sys | + -------------------- + 5 filas en conjunto ( 0.01 seg)