🔵 DOCKERS (Guía básica)
- Baseado en: https://docs.docker.com/engine/install/debian/
Instalación de docker en Debian
-
Crear a máquina en AWS / GCloud / Azure / CESGA Cloud ou instalación local en Microsoft Windows con WSL (Debian ou Ubuntu) e conectarse a ela por SSH. De ser unha instancia na nube, trataremos de elexir unha distribución Debian (recoméndase a última estable).
-
Actualizamos ata o final a máquina:
-
Executamos o script (guión) recomendado pola páxina oficial de docker:
-
Engadimos o noso usuario ao grupo docker (para evitar empregar sudo):
-
Saímos da sesión e volvemos abrila (ou abrimos unha sesión sobre a actual como se indica a continuación):
-
Probamos o docker de exemplo de hola-mundo:
Se estás nun contorno WSL coa distribución GNU/Debian instalada e recibes o erro:
failed to start daemon: Error initializing network controller: error obtaining controller instance: failed to register "bridge" driver: unable to add return rule in DOCKER-ISOLATION-STAGE-1 chain: (iptables failed: iptables --wait -A DOCKER-ISOLATION-STAGE-1 -j RETURN: iptables v1.8.9 (nf_tables): RULE_APPEND failed (No such file or directory): rule in chain DOCKER-ISOLATION-STAGE-1
É debido a que docker emprega iptables cunha versión modificada de nftables. Para arranxalo, podemos empregar as legacy iptables:
sudo update-alternatives --set iptables /usr/sbin/iptables-legacy
sudo update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy
Despois de cambialas, dockerd debería iniciarse correctamente (Fonte: GitHub).
Conceptos básicos de dockers
⚠️ Este resumo contén imprecisións porque pretende ser breve.
mindmap
root((Docker))
Contedores
Imaxes
Volumes
Redes
En docker existen os conceptos de: Contedores, imaxes, volumes e redes.
Cando executamos un "docker run", créase un contedor baseado nunha imaxe que se descarga de internet e arráncase. Este contedor é como unha máquina virtual xa configurada e funcionando.
Hai imaxes xa listas en internet: https://hub.docker.com/ ou ben podemos facer a nosa.
Unha vez creado un contedor podémolo parar ou arrancar.
Podemos gardar os datos en volumes ou directorios compartidos. Se non especificamos nada a información queda no contedor ou no volume que cree por defecto (se o crea).
Contedores
- Ver contedores en execución:
docker ps
- Ver tódolos contedores:
docker ps -a
- Crear un contedor:
docker run hello-world
-d
: modo dettached (execución en segundo plano).--rm
: borra a instancia cando se para.
- Parar un contedor:
docker stop [ID ou NOME]
- Iniciar un contedor:
docker start [ID ou NOME]
- Executar un comando dentro do contenedor:
docker exec -it [ID ou NOME] [COMANDO]
-it
: Modo interactivo
- Ver tódalas opcións do contedor:
docker inspect [ID ou NOME]
- Borrar un contedor:
docker rm [ID ou NOME]
👁️ Se queremos que os contedores volvan executarse cando a máquina se reinicie, cando no momento da creación (run) do contedor podemos especificar a opción: --restart unless-stopped
Imaxes
- Ver imaxes:
docker image ls
- Borrar imaxe:
docker image rm [ID ou NOME]
Volumes
- Ver volume:
docker volume ls
- Borrar volume:
docker volume rm [ID ou NOME]
Volumes en cada contedor
Se queremos ver qué volumes están asociados a que contedor:
Recuperando datos dun volume
👁️ Se queremos ver os datos dun volume que xa non está asociado a un contedor, podemos crear un contedor temporal para velos: docker run -it --rm -v [ID do volume]:/vol busybox ls -l /vol
Asociar un volume previo a un contedor
docker run -p 9907:3306 --name contedor_mariadb \
-v ID_VOLUME:/var/lib/mysql \
--restart unless-stopped \
-d mariadb:latest
Se ID_VOLUME
o cambiamos por un directorio, estaríamos a mapear un directorio do anfitrión.
Estados dun contedor
---
title: Estados dun contenedor docker
---
stateDiagram-v2
[*] --> Creado
Creado --> En_Execución
En_Execución --> Parado_Rematado
En_Execución --> Erro
En_Execución --> Pausado
Pausado --> En_Execución
Parado_Rematado --> Erro
Parado_Rematado --> En_Execución
Parado_Rematado --> Borrado
Parado_Rematado --> Morto
Erro --> En_Reinicio
En_Reinicio --> Erro
En_Reinicio --> En_Execución
Morto --> Borrado
Borrado --> [*]
Realmente existen 6 estados. O estado borrado é para que se vexa mellor no diagrama máis non é un estado. O Erro
ou Morto
poden ser o mesmo estado nalgunhas circunstancias.
Máis información acerca dos estados en: https://www.baeldung.com/ops/docker-container-states.
Imaxes oficiales para docker que podes probar
Nesta páxina tes algunhas configuracións rápidas (exemplos xa feitos) baseados nestas imaxes:
- https://hub.docker.com/_/mysql
- https://hub.docker.com/_/mariadb
- https://mariadb.com/kb/en/installing-and-using-mariadb-via-docker/
- https://hub.docker.com/_/microsoft-mssql-server
- https://hub.docker.com/_/mongo
- https://hub.docker.com/_/redis
- https://hub.docker.com/_/postgres
- https://hub.docker.com/_/cassandra