linux:docker:start

Diferències

Ací es mostren les diferències entre la revisió seleccionada i la versió actual de la pàgina.

Enllaç a la visualització de la comparació

Ambdós costats versió prèvia Revisió prèvia
Següent revisió
Revisió prèvia
linux:docker:start [19/10/2016 16:10] – [mantenimiento] matelinux:docker:start [13/02/2020 13:26] (actual) mate
Línia 1: Línia 1:
-= docker+= docker (first contact) 
 +{{tag>docker}}
 == un poco de historia == un poco de historia
   * docker monta un sistema de containerización que permite lanzar nuevas instancias de S.O. aprovechando los recursos (hard) de la máquina Y el kernel del SO ya corriendo, lo que hace más óptimo el aprovechamiendo de recursos que las máquinas virtuales (que recrean un ordenador al completo, con sus propios kernels y sistemas de ficheros)   * docker monta un sistema de containerización que permite lanzar nuevas instancias de S.O. aprovechando los recursos (hard) de la máquina Y el kernel del SO ya corriendo, lo que hace más óptimo el aprovechamiendo de recursos que las máquinas virtuales (que recrean un ordenador al completo, con sus propios kernels y sistemas de ficheros)
Línia 34: Línia 35:
   * más enlaces (más avanzados)   * más enlaces (más avanzados)
     * [[https://www.digitalocean.com/community/tutorials/docker-explicado-como-crear-contenedores-de-docker-corriendo-en-memcached-es]]     * [[https://www.digitalocean.com/community/tutorials/docker-explicado-como-crear-contenedores-de-docker-corriendo-en-memcached-es]]
 +    * [[https://github.com/wsargent/docker-cheat-sheet/#volumes]]
  
  
Línia 62: Línia 64:
  
 Se pueden crear tantos contenedores de la misma imagen como se precisen Se pueden crear tantos contenedores de la misma imagen como se precisen
 +
 +=== mantenimiento (de contenedores)
 +  * listar todos los contenedores existentes:<code bash>$ docker ps -a</code>
 +  * listar todos los contenedores activos:<code bash>$ docker ps</code>
 +  * listar los últimos contenedores creados:<code bash>$ docker ps -l</code>
 +  * parar un contenedor: <code bash>$ docker stop <nombre_contenedor></code>
 +  * borrar un contenedor (no ha de estar en funcionamiento): <code bash>$ docker rm <nombre_contenedor></code>
 +  * convertir un contenedor en imagen: <code bash>$ docker commit -m "<comentario>" -a "<autor>" <id_contenedor> <repositorio>:<nombre_imagen></code>
 +
 +el nombre del contenedor puede ser su CONTAINER_ID o si NAME (según aparece en el listado generado con el comando correspondiente)
  
 === ejecución === ejecución
Línia 82: Línia 94:
 === networking === networking
 Por defecto, el motor de docker crea una serie de redes para trabajar con los contenedores: Por defecto, el motor de docker crea una serie de redes para trabajar con los contenedores:
- 
   * host   * host
   * bridge   * bridge
 +
 +también existen los drivers ''overlay'' -> ???
  
 Aunque permite crear propias y añadir contenedores a ellas para que se hablen de manera aislada Aunque permite crear propias y añadir contenedores a ellas para que se hablen de manera aislada
Línia 96: Línia 109:
   * ejecutar contenedor con una red propia:<code bash>$ docker run -d --network=<nombre_red> <nombre_imagen></code>   * ejecutar contenedor con una red propia:<code bash>$ docker run -d --network=<nombre_red> <nombre_imagen></code>
   * añadir contenedor en marcha a una red propia:<code bash>$ docker network connect <nombre_red> <nombre_contenedor></code>   * añadir contenedor en marcha a una red propia:<code bash>$ docker network connect <nombre_red> <nombre_contenedor></code>
-  * averiguar IP de contenedor:<code bash>docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' <nombre_contenedor></code>+  * averiguar IP de contenedor:<code bash>docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' <nombre_contenedor></code>
  
-=== mantenimiento (de contenedores) 
-  * listar todos los contenedores existentes:<code bash>$ docker ps -a</code> 
-  * listar todos los contenedores activos:<code bash>$ docker ps</code> 
-  * listar los últimos contenedores creados:<code bash>$ docker ps -l</code> 
-  * parar un contenedor: <code bash>$ docker stop <nombre_contenedor></code> 
-  * borrar un contenedor (no ha de estar en funcionamiento): <code bash>$ docker rm <nombre_contenedor></code> 
-  * convertir un contenedor en imagen: <code bash>$ docker commit -m "<comentario>" -a "<autor>" <id_contenedor> <repositorio>:<nombre_imagen></code> 
  
-el nombre del contenedor puede ser su CONTAINER_ID si NAME (según aparece en el listado generado con el comando correspondiente)+=== Data Volumes 
 +es un directorio especificado trabajando en UFS((Union File System - [[https://docs.docker.com/engine/reference/glossary/#union-file-system]])) que: 
 +  * los Volumenes se inicializan al crear el contenedor. Si existe información en el punto de montaje, esta se copiará al Volumen 
 +  * los Volumenes se puede compartir y reusar entre contenedores 
 +  * los cambios se aplican directamente en los Volumenes 
 +  * los cambios en los Volumenes no se aplican cuando se actualiza una imagen 
 +  * los Volumenes no son destruidos al destruir el contenedor que los usa 
 +  * se puede acceder a los volúmenes creados en: ''/var/lib/docker/volumes'' 
 + 
 + 
 +  * añadir un Volumen anónimo a un contenedor "al vuelo":<code bash>$ docker run -d -P --name web -v /webapp training/webapp</code> 
 +  * añadir un Volumen anónimo a un contenedor "al vuelo" y borrar todo al salir:<code bash>$ docker run -d -rm --name web -v /webapp training/webapp</code> 
 +  * crear un Volumen para su posterior uso:<code bash>$ docker volume create -d <plugin> -size=20GB --name <nombre_volumen></code> 
 +    * "flocker" es un plugin de Volumen que provee de multi-hosts 
 +    * [[https://docs.docker.com/engine/extend/legacy_plugins/#/volume-plugins|lista de plugins para la creación de Volumenes]] 
 +  * añadir Volumen existente a contenedor:<code bash>$ docker run -d -P -v <nombre_volumen>:/<path_contenedor> ....</code> 
 +  * añadir un directorio local en un contenedor, con opción de solo-lectura (ro):<code bash>$ docker run -d -P --name web -v <path_local>:<path_contenedor>[:ro] training/webapp python app.py</code> 
 +  * añadir fichero local en contenedor: <code bash>$ docker run --rm -it -v ~/.bash_history:/root/.bash_history <nombre_imagen> <comando></code> 
 +  * crear Volumen usando contenedor y compartir entre varios contenedores. El directorio será ''/dbdata''. Se pueden añadir varios ''--volumes''. Permite contatenar entre los diferentes contenedores (db3):<code bash>$ docker create -v /dbdata --name dbstore training/postgres /bin/true 
 +$ docker run -d --volumes-from dbstore --name db1 training/postgress 
 +$ docker run -d --volumes-from dbstore --name db2 training/postgress 
 +$ docker run -d --volumens-from db1 --name db3 training/postgress</code> 
 +  * backup de Volumenes (en host local). Crea un .tar del Volumen /dbdata en el directorio loca en curso. Destruye todo al finalizar:<code bash>$ docker run --rm --volumes-from dbstore -v $(pwd):/backup ubuntu tar cvf /backup/backup.tar /dbdata</code> 
 +  * restore de tar:<code bash>$ docker run -v /dbdata --name dbstore2 ubuntu /bin/bash 
 +$ docker run --rm --volumes-from dbstore2 -v $(pwd):/backup ubuntu bash -c "cd /dbdata && tar xvf /backup/backup.tar --strip 1"</code> 
 +  * mostrar Volumenes: <code bash>$ docker volume ls</code> 
 +  * mostrar Volumenes clgados (huérfanos): <code bash>$ docker volume ls -f dangling=true</code> 
 +  * borrar volúmenes:<code bash>$ docker volume rm <nombre_volumen> 
 +  * borrar Volumenes con el borrado del contenedor:<code bash>$ docker rm -v <nombre_contenedor></code> 
 + 
 +Pendiente: 
 +  * Volume labels
  
 == otros comandos == otros comandos
  • linux/docker/start.1476918623.txt.gz
  • Darrera modificació: 19/10/2016 16:10
  • per mate