Docker MySQL
02. Creación de un contendor desde una Imagen
Ahora teniendo ya nuestra imagen, lo que tenemos hacer es crear nuestor contenedor desde esta imagen que hemos descargado
tomando en cuenta que nuestra Maquina será la anfitriona, asi que analicemos por partes la linea de comando
- Para crear un contenedor se utiliza el comando run de Docker y a continuacion colocamos la bandera flag
-p
para indicar el puerto que utilizará la base de datos, se recomienda utilizar el puerto por defcto que utiliza postgres y acontinuacion indicamos despues de dos puntos que puerto utilizará en nuestra maquina anfitrion quedando de la siguiente manetra -p 5432:5432
asi que cada vez que se quiera acceder a Postgres sera por medio de este puerto
- Cuando queremos accesder a nuestro contenedor para iniciarlo, detenerlo o eliminarlo, debemos de hacer referencia a dicho contenedor por medio de un ID que es creado automáticamente por docker y un ID bastante dificil de recordar, asi que se recomienda asignarle un nombre a dicho contenedor de con la siguiente bandera flag seguido del nombre, en mi caso de ejempo le colocaré de nombre postgresql
--name postgresql
- Cuando creamos una base de datos, los registros quedan en el contenedor, y cuando en el futuro se destruya ese contenedor, o simplemente se detenga ese contenedor, los datos que se guardaron en la base de datos de ese contenedor tambien se perderan, es por ese motivo que se recomienda guardar la informacion de la base de datos de dicho contenedor en su maquina en alguna carpeta que ustedes decidan, esto se hace con la bandera flag -v que significa Volumen
-v la-carpeta-del-sistema:la-carpeta-contenedora
La carpeta del sistema es una que este en sus computadoras en donde se va a sincronizar los datos, y La carpeta contenedora es donde se guardan los datos dentro del contenedor y es aqui -->> /var/lib/mysql
- Ahora con la bandera flag
-e
se crea una variable de entorno para el Pasword de la siguiente manera -e MYSQL_ROOT_PASWORD=secret
en lugar de secret uds coloquen una contraseña realmente segura
- Para que este contenedor se este ejecutando en modo Demonio se debe de colocar la bandera flag
-d
esto quiere decir que se va a estar ejecutando permanentemente hasta que detengamos el contenedor
- Cuando nosotros creamos nuestras base de datos, solemos crear el ChartSet UTF8, pero si usamos un cliente gráfico para no tener que ir y seleccionar el chartset, le podemos decir al contenedor que lo use y es utilizando la bandera flag
--character-set-server=utf8
- Tambien podemos indicar la codificacion para la colecicon de datos, utilizando la bandera flag siguiente
--collation-server=utf8_unicode_ci
- Finalmente colocamos el nombre de la imagen desde la cual vamos a crear nuestro contenedor
% docker run -p 3306:3306 --name mysql_local -v MiRutaDeMicompu:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=secret -d mysql:5.7 --character-set-server=utf8 --collation-server=utf8_unicode_ci