Created: 2025-01-09 jue 13:12
docker compose
Docker | Máquina Virtual | |
---|---|---|
SO | SO compartido entre contenedores | Nuevo SO para cada VM |
Seguridad | Menos seguro, se comparte el kernel | Más seguro, no se comparte nada |
Rendimiento | Rendimiento rápido | La virtualización es más lenta |
Tiempo de arranque | Rápido (segundos) | Lento (minutos) |
Necesidades de memoria | Ligera | Requiere mucha memoria |
Necesidades de almacenamiento | Normalmente megabytes | Normalmente gigabytes |
Portabilidad | En cualquier linux moderno | El hardware emulado puede diferir entre diferentes sistemas |
Desinstalar las versiones instaladas con apt-get
for pkg in docker.io docker-doc docker-compose podman-docker containerd runc
do
sudo apt-get remove $pkg
done
Usar el script (no recomendado en producción)
curl https://get.docker.com/ | sh
Solo root
y el grupo docker
pueden usar el servidor Docker
/var/run/docker.sock
docker run hello-world
Una imagen provee un programa a ejecutar cuando se ejecuta con run
docker run debian # crea un container y termina inmediatamente, bash no tiene entrada
docker run -it debian # crea un container y conecta la consola al programa por defecto
docker run debian /bin/bash -c "echo Un mensaje y termino"
docker images
docker ps # containers en ejecucion
docker ps -a # todos los containers
run
no ejecuta containers, sino que crea y ejecuta containers
run
= create
+ start
Equivalente a un mount --bind
docker run -it --mount type=bind,src="$(pwd)",target=/src debian bash
Pueden ser
docker run -dit --name my-apache-app -p 8080:80 -v $HOME:/usr/local/apache2/htdocs/ httpd:2.4
-dit
: i nteractive, t ty, d etached-p 8080:80
: El puerto 8080
de la dirección 0.0.0.0
se conecta a la ip del container, puerto 80
-v
: El volumen /usr/local/apache2/htdocs
será el directorio homeSe pueden ejecutar comandos en un container en ejecución
docker exec -it my-apache-app bash
La salida del punto de entrada se considera el log del container
docker logs --follow nombre-container
Los siguientes comandos son equivalentes
docker run hello-world
docker run registry.hub.docker.com/hello-world
La contraseña del registro no es la de la cuenta de Oracle, sino el Auth token
docker login container-registry.oracle.com/
10.1.33.201:8090 |
/etc/docker/daemon.json
{
"insecure-registries":["10.1.33.201:8090"]
}
sudo docker run -p 10000:10000 10.1.33.201:8090/johanp/webmin
/var/run/docker.sock
docker volume create portainer_data
docker run -d -p 8000:8000 -p 9443:9443 \
--name portainer \
--restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data portainer/portainer-ce:latest
container-registry.oracle.com/database/enterprise:21.3.0.0
sudo docker pull 10.1.33.201:8090/database/enterprise:21.3.0.0
docker run -d --name <container_name> \ -p <host_port>:1521 -p <host_port>:5500 \ -e ORACLE_SID=<your_SID> \ -e ORACLE_PDB=<your_PDBname> \ -e ORACLE_PWD=<your_database_password> \ -e INIT_SGA_SIZE=<your_database_SGA_memory_MB> \ -e INIT_PGA_SIZE=<your_database_PGA_memory_MB> \ -e ORACLE_EDITION=<your_database_edition> \ -e ORACLE_CHARACTERSET=<your_character_set> \ -e ENABLE_ARCHIVELOG=true \ -v [<host_mount_point>:]/opt/oracle/oradata \ container-registry.oracle.com/database/enterprise:21.3.0.0 Parameters: --name: The name of the container (default: auto generated -p: The port mapping of the host port to the container port. Two ports are exposed: 1521 (Oracle Listener), 5500 (OEM Express) -e ORACLE_SID: The Oracle Database SID that should be used (default:ORCLCDB) -e ORACLE_PDB: The Oracle Database PDB name that should be used (default: ORCLPDB1) -e ORACLE_PWD: The Oracle Database SYS, SYSTEM and PDBADMIN password (default: auto generated) -e INIT_SGA_SIZE: The total memory in MB that should be used for all SGA components (optional) -e INIT_PGA_SIZE: The target aggregate PGA memory in MB that should be used for all server processes attached to the instance (optional) -e ORACLE_EDITION: The Oracle Database Edition (enterprise/standard, default: enterprise) -e ORACLE_CHARACTERSET: The character set to use when creating the database (default: AL32UTF8) -e ENABLE_ARCHIVELOG: To enable archive log mode when creating the database (default: false). Supported 19.3 onwards. -v /opt/oracle/oradata The data volume to use for the database. Has to be writable by the Unix "oracle" (uid: 54321) user inside the container If omitted the database will not be persisted over container recreation. -v /opt/oracle/scripts/startup | /docker-entrypoint-initdb.d/startup Optional: A volume with custom scripts to be run after database startup. For further details see the "Running scripts after setup and on startup" section below. -v /opt/oracle/scripts/setup | /docker-entrypoint-initdb.d/setup Optional: A volume with custom scripts to be run after database setup. For further details see the "Running scripts after setup and on startup" section below.
1521
del container al 1521
de la máquina host/opt/oracle/oradata
del la máquina hostoracle-enterprise-21.3.0.0
ORADOCKER
PDBORADOCKER
sqlplus
como SYSDBA
/opt/oracle/sqplus-as-sysdba.sh
docker exec
bash -c
sqlplus
como SYSDBA
en la PDB
/opt/oracle/sqplus-as-sysdba-pdb.sh
docker compose
docker compose
es una extensión para definir varios containers en un fichero yaml
yaml
docker compose build
docker compose up -d
https://plataforma.josedomingo.org/pledin/cursos/docker2024/