Created: 2025-02-19 mié 11:59
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.sockdocker 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.0sudo 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.0ORADOCKERPDBORADOCKERsqlplus como SYSDBA
/opt/oracle/sqplus-as-sysdba.shdocker execbash -csqlplus como SYSDBA en la PDB
/opt/oracle/sqplus-as-sysdba-pdb.shdocker composedocker compose es una extensión para definir varios containers en un fichero yaml
yamldocker compose builddocker compose up -dhttps://plataforma.josedomingo.org/pledin/cursos/docker2024/