Docker Compose Samba¶
En los apartados anteriores se realizó la instalación de docker y creación de contenedores de la imagen de NextCloud. En los últimos comandos de las prácticas realizadas, se necesitaban una gran cantidad de argumentos para la configuración del contenedor en una red y aplicar un volumen al mismo. Este hecho repercutía en una sintaxis demasiado extensa de dichos comandos.
Para una gestión mejorada de los comandos extensos de docker run
destaca una herramienta de Docker denominada Docker-Compose, la cual ayuda a definir, ejecutar y conectar aplicaciones de múltiples contenedores, mediante un archivo YAML.
En esta sección se detalla esta herramienta de docker para aplicarla a una imagen de Samba.
Docker-compose¶
Flujo de trabajo
Contenedores→ docker run → docker_compose.yml
-
Docker-compose es otro proyecto open source que permite definir aplicaciones multi-contenedor de una manera sencilla y declarativa.
-
Es una alternativa más cómoda al uso de los comandos docker run, que resultan un tanto tediosos cuando trabajamos con aplicaciones de varios componentes.
-
Se define un fichero
docker-compose.yml
que se puede observar en el ejemplo realizado en la práctica en el último apartado.
Tip
Ficheros YAML
Ejemplo
A continuación se muestra un ejemplo para la realización de la práctica de ampliación: Instalación Wordpress
- Primer Paso: instalación de Docker-compose.
apt-get install docker-compose
- Segundo paso: Crear directorio del proyecto y dentro el archivo
yaml
.
mkdir -p $HOME/my_wordpress && \
cd $HOME/my_wordpress
- Tercer paso: se crea y edita el
yaml
.
cat << EOF > $HOME/my_wordpress/docker-compose.yml
version: "3.9"
services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress:
depends_on:
- db
image: wordpress:latest
volumes:
- wordpress_data:/var/www/html
ports:
- "8000:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
WORDPRESS_DB_NAME: wordpress
volumes:
db_data: {}
wordpress_data: {}
EOF
- Cuarto paso: en la carpeta creada del proyecto se ejecuta el comando de
docker-compose up -d
docker-compose up -d
Comprobación
Se comprueba que se ha creado el contenedor y se abre el navegador para comprobar que está disponible la instalación de wordpress.
Guía de instalación de Samba mediante Docker compose¶
- Crea un contenedor con el servicio de Samba mediante la guía adjunta.
- Comprueba que el contenedor corriendo.
Se va a realizar unos pasos previos para preparar el entorno. En primer lugar creamos las carpetas donde alojar el proyecto:
mkdir -p $HOME/docker/samba/compartido && \
cd $HOME/docker/samba
A continuación se da permisos de escritura y lectura a la carpeta compartida:
chmod 777 -R $HOME/docker/samba/compartido
Ahora se crea el fichero de configuración docker-compose.yml
mediante la imagen de docker lanzando el siguiente comando:
cat << EOF > $HOME/docker/samba/docker-compose.yml
version: '3.4'
services:
samba:
container_name: samba
image: dperson/samba:latest
environment:
TZ: 'Europe/Brussels'
networks:
- default
ports:
- "137:137/udp"
- "138:138/udp"
- "139:139/tcp"
- "445:445/tcp"
read_only: true
tmpfs:
- /tmp
restart: always
stdin_open: true
tty: true
volumes:
- $HOME/docker/samba/compartido:/sordata:z
command: '-s "DockerSambaCompartida;/sordata" -n'
networks:
default:
EOF
Aclaraciones
- La línea de
volumes
monta la carpeta creada inicialmente en el/home
en la carpeta sordata en el contenedor. - La opción z le dice a Docker que el contenido del volumen se compartirá entre contenedores.
Principales parámetros a modificar para adaptarlos a nuestro sistema y configuración especifica:
Parámetro | Función |
---|---|
~/docker/samba/compartido:/sordata | Definimos ruta donde alojamos los ficheros compartidos |
137:137 | Puerto protocolo NetBios |
138:138 | Puerto protocolo NetBios |
139:139 | Puerto protocolo SMB |
445:445 | Puerto protocolo SMB |
restart: always | Habilitamos que tras reiniciar la maquina anfitrión vuelva a cargar el servicio |
Una vez configurado, se levanta el contenedor para ser creado y ejecutado mediante compose:
docker-compose up -d