Herramientas de usuario

Herramientas del sitio


clase:daw:daw:2eval:tema07

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anterior Revisión previa
Próxima revisión
Revisión previa
clase:daw:daw:2eval:tema07 [2020/12/08 12:19]
admin [Ejercicios]
clase:daw:daw:2eval:tema07 [2024/02/05 07:47] (actual)
admin [Gestión de Contenedores]
Línea 16: Línea 16:
   * [[https://www.xataka.com/otros/docker-a-kubernetes-entendiendo-que-contenedores-que-mayores-revoluciones-industria-desarrollo|De Docker a Kubernetes: entendiendo qué son los contenedores y por qué es una de las mayores revoluciones de la industria del desarrollo]]   * [[https://www.xataka.com/otros/docker-a-kubernetes-entendiendo-que-contenedores-que-mayores-revoluciones-industria-desarrollo|De Docker a Kubernetes: entendiendo qué son los contenedores y por qué es una de las mayores revoluciones de la industria del desarrollo]]
   * [[https://www.javiergarzas.com/2015/07/entendiendo-docker.html|Entendiendo Docker. Conceptos básicos: Imágenes, Contenedores, Links…]]   * [[https://www.javiergarzas.com/2015/07/entendiendo-docker.html|Entendiendo Docker. Conceptos básicos: Imágenes, Contenedores, Links…]]
 +
 +===== Datos de servidores =====
 +
 +{{:clase:daw:daw:2eval:datos_proxmox.png?direct|}}
 +
 +===== Instalación =====
 +Para instalar docker , lanzar las siguientes órdenes en Ubuntu:
 +
 +  snap remove docker
 +  sudo apt-get remove docker docker-engine docker.io containerd runc
 +  sudo apt-get update
 +  sudo apt-get install apt-transport-https ca-certificates  curl   gnupg-agent    software-properties-common
 +  curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
 +  sudo apt-key fingerprint 0EBFCD88
 +  sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
 +  sudo apt-get update
 +  sudo apt-get install docker-ce docker-ce-cli containerd.io
 +
 +Las instrucciones actualizadas están en [[https://docs.docker.com/engine/install/ubuntu/|Install Docker Engine on Ubuntu]]
 +
 +Para comprobar que todo funciona , lanzar la siguiente orden:
 +
 +  sudo docker container run hello-world
 +
  
  
Línea 80: Línea 104:
 | [[https://docs.docker.com/engine/reference/commandline/container_exec/|docker container exec]] | Ejecutar una orden en el contenedor. Normalmente es el Shell | | [[https://docs.docker.com/engine/reference/commandline/container_exec/|docker container exec]] | Ejecutar una orden en el contenedor. Normalmente es el Shell |
 | [[https://docs.docker.com/engine/reference/commandline/container_stats/|docker container stats]] | Mostrar uso de CPU,memoria,etc de los contenedores | | [[https://docs.docker.com/engine/reference/commandline/container_stats/|docker container stats]] | Mostrar uso de CPU,memoria,etc de los contenedores |
 +| [[https://docs.docker.com/engine/reference/commandline/container_logs/|docker container logs]] | Muestra lo que sale por pantalla. Es decir lo que se llama en Linux ''stdout'' y ''stderr''. Normalmente los contenedores van sacando por pantalla lo que hacen.  |
  
 Las dos órdenes mas complejas e importantes para la gestión de los contenedores son: Las dos órdenes mas complejas e importantes para la gestión de los contenedores son:
Línea 87: Línea 111:
  
 ==== docker container run ==== ==== docker container run ====
-Pone en marcha la imagen creando un contenedor.Su forma mas sencilla de usar es ''docker run nombre_imagen''. Aunque prácticamente siempre se usan la mayoría de los siguientes parámetros: +Pone en marcha la imagen creando un contenedor.Su forma mas sencilla de usar es ''docker run container nombre_imagen''. Aunque prácticamente siempre se usan la mayoría de los siguientes parámetros: 
-  * **-d**: Indicar que es un servidor (demonio) +  * ''-d'': Indicar que es un servidor (demonio) 
-  * **-it**: Si queremos intereactuar en la consola con la aplicación (NO es un demonio). Las opciones **-d** y **-it** son excluyentes. +  * ''-it'': Si queremos interactuar en la consola con la aplicación (NO es un demonio). [[https://stackoverflow.com/questions/41916435/practically-what-is-the-difference-between-docker-run-dit-itd-vs-docker-run|Practically, what is the difference between docker run -dit(-itd) vs docker run -d?]] 
-  * **--restart always** : Añadiremos este flag si queremos que se vuelva a iniciar el contenedor si acaba dicho contenedor. Es útil ya que se iniciará el contenedor si se reinicia la máquina real. +  * ''--restart always'' : Añadiremos este flag si queremos que se vuelva a iniciar el contenedor si acaba dicho contenedor. Es útil ya que se iniciará el contenedor si se reinicia la máquina real. 
-  * **--name nombreContanedor**: Indica el nombre que va a tener el contenedor. Es muy útil ya que así sabemos cual es cada una de las imágenes. +  * ''--name nombreContanedor'': Indica el nombre que va a tener el contenedor. Es muy útil ya que así sabemos cual es cada una de las imágenes. 
-  * **-p puertoExterno:puertoInterno**: Indica en que puerto de la máquina real se "//mapea//" el puerto que usa el software servidor del contenedor. +  * ''--hostname nombreHost'': Indica el nombre DNS que va a tener la máquina. 
-  * **-e nombreVariableDeEntorno:valorVariableDeEntorno**: Permite indicar el valor de una variable de entorno. Es la forma mas común de configurar un contenedor. Se debe mirar la configuración de la imagen para saber las variables a usar ya que es específico de cada imagen. +  ''-p puertoExterno:puertoInterno'': Indica en que puerto de la máquina real se "//mapea//" el puerto que usa el software servidor del contenedor. 
-  * **-v carpetaMaquinaReal:carpetaInternaContenedor**: Indica que una carpeta de dentro del contenedor será realmente una carpeta real de nuestra máquina. Se usa para que no se pierdan los datos si borramos la máquina y la volvemos a crear. +  * ''-e nombreVariableDeEntorno:valorVariableDeEntorno'': Permite indicar el valor de una variable de entorno. Es la forma mas común de configurar un contenedor. Se debe mirar la configuración de la imagen para saber las variables a usar ya que es específico de cada imagen. 
 +  * ''-v carpetaMaquinaReal:carpetaInternaContenedor'': Indica que una carpeta de dentro del contenedor será realmente una carpeta real de nuestra máquina. Se usa para que no se pierdan los datos si borramos la máquina y la volvemos a crear.  
  
  
Línea 112: Línea 138:
  
   docker container run \   docker container run \
-     -+     -dit 
-     --restart always+     --restart always \
      -v /opt/mariadb:/var/lib/mysql  \      -v /opt/mariadb:/var/lib/mysql  \
      -e MYSQL_ROOT_PASSWORD=root  \      -e MYSQL_ROOT_PASSWORD=root  \
      -p 4000:3306  \      -p 4000:3306  \
      --name  prueba_mariadb \      --name  prueba_mariadb \
 +     --hostname prueba_mariadb \
      mariadb:10.1      mariadb:10.1
  
Línea 124: Línea 151:
 Lo mas complicado de la orden ''docker container run'' son los parámetros ''-v'' y ''-p'' Lo mas complicado de la orden ''docker container run'' son los parámetros ''-v'' y ''-p''
 </note> </note>
 +
 +=== Más opciones ===
 +Veamos ahora otras opciones de ''docker container exec''
 +
 +  * ''--rm'': Que se borre el contenedor si éste se para.
 +  * ''-w carpeta'': La carpeta en la que se estarán en el contenedor cuando se ejecute algo. Es como hacer un ''cd''
 +  * Otra opción que suelen tener los contenedores, es poder pasar argumentos después del nombre de la imagen. Eso argumentos a veces son realmente argumentos al programa que se va a ejecutar y otras veces es directamente el nombre del programa que se va a ejecutar junto a sus argumentos. Veremos ejemplos de ésto en el siguiente tema
 +
 +<sxh base>
 +  docker container run \
 +     -dit \
 +     --restart always \
 +     --rm \
 +     -w /var/lib/mysql \
 +     -v /opt/mariadb:/var/lib/mysql  \
 +     -e MYSQL_ROOT_PASSWORD=root  \
 +     -p 4000:3306  \
 +     --name  prueba_mariadb \
 +     --hostname prueba_mariadb \
 +     mariadb:10.1
 +</sxh>
 +
 +hemos añadido ''--rm'' para indicar que si el contenedor acaba y se para, que automáticamente también se borre.
 +Y también hemos añadido ''-w /var/lib/mysql'' para //estar// en esa carpeta. Y así por ejemplo si lanzásemos ''docker container exec -it prueba_mariadb ls'', se verían los ficheros de la carpeta ''/var/lib/mysql''.
  
  
Línea 143: Línea 194:
 Para hacer estos ejercicios deberás tener instalado una máquina virtual de VirtualBox con [[https://releases.ubuntu.com/18.04.5/|Ubuntu Server 18.04.5]]. Aunque no es necesario si ya usas Linux en tu equipo. Para hacer estos ejercicios deberás tener instalado una máquina virtual de VirtualBox con [[https://releases.ubuntu.com/18.04.5/|Ubuntu Server 18.04.5]]. Aunque no es necesario si ya usas Linux en tu equipo.
  
-<note important>Al instalar Ubuntu recuerda marcar "Docker"el servidor de SSH cuando te pida el software a instalar.</note>+<note important>Al instalar Ubuntu recuerda marcar  el servidor de SSH cuando te pida el software a instalar.</note>
  
 <note important>Al instalar Ubuntu si estás en el centro recuerda también indicar el proxy</note> <note important>Al instalar Ubuntu si estás en el centro recuerda también indicar el proxy</note>
Línea 172: Línea 223:
   * El puerto interno 8080 que se vea en la máquina en el puerto 11211   * El puerto interno 8080 que se vea en la máquina en el puerto 11211
   * Que los datos de configuración de Jenkins (en "/var/jenkins_home") se guarden en la carpeta "/opt/prueba_jenkins" de la máquina real en    * Que los datos de configuración de Jenkins (en "/var/jenkins_home") se guarden en la carpeta "/opt/prueba_jenkins" de la máquina real en 
-  * Que el nombre del contenedor sea "Prueba Jenkins"+  * Que el nombre del contenedor sea "prueba_jenkins" 
 +  * Que el nombre DNS sea "jenkins"
   * Que sea un demonio   * Que sea un demonio
  
clase/daw/daw/2eval/tema07.1607426384.txt.gz · Última modificación: 2020/12/08 12:19 por admin