Saltar a contenido

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

  1. Primer Paso: instalación de Docker-compose.
apt-get install docker-compose
  1. Segundo paso: Crear directorio del proyecto y dentro el archivo yaml.
mkdir -p $HOME/my_wordpress && \
cd $HOME/my_wordpress
  1. 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
  1. 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