meta data de esta página
  •  

Diferencias

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

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
virtualizacion:docker [2020/12/20 21:30] lcvirtualizacion:docker [2023/01/18 14:11] (actual) – editor externo 127.0.0.1
Línea 30: Línea 30:
   * contenedor -> es el resultado de ejecutar una imágen(instancia), se podría decir que un contenedor es como una máquina virtal ligera., aunque en realidad es un **proceso** totalmente asilado del resto de procesos de la máquina sobre la que se ejecuta.  Sus principales características son : su portabilidad, inmutabilidad y ligereza   * contenedor -> es el resultado de ejecutar una imágen(instancia), se podría decir que un contenedor es como una máquina virtal ligera., aunque en realidad es un **proceso** totalmente asilado del resto de procesos de la máquina sobre la que se ejecuta.  Sus principales características son : su portabilidad, inmutabilidad y ligereza
  
-===== Comandos básicos ===== 
-=== Comandos de información === 
-<sxh>docker info</sxh> 
-<sxh>docker version</sxh> 
-==== Gestionar imágenes ==== 
-=== Buscar una imagen === 
-<sxh>docker search centos</sxh> 
-=== Listar las imágenes que tenemos descargadas === 
-<sxh>sudo docker images </sxh> 
-=== Obtener información sobre una imagen concreta === 
-<sxh>sudo docker history <imagen></sxh> 
  
  
 +=== Source ===
 +Cuando tenemos varios entornos de docker y queremos gestionarlos desde una misma máquina podemos definir ficheros con las variables de entorno y usar el comando source para cargarlas con el comando 
 +<sxh>source /path/mificherovariables.sh</sxh>
  
-==== Gestionar Contenedores ==== +Un ejemplo de ficheros con variables sería : 
-=== Instalar una imagen de Kali Linux === +<file> 
-<sxh>sudo docker pull kalilinux/kali-linux-docker</sxh>+export DOCKER_TLS_VERIFY=
 +export DOCKER_CERT_PATH=/home/users/lc/certificados 
 +export DOCKER_HOST=tcp://miservidor.aws.dckr.io:443 
 +</file>
  
-=== Arrancar un Contendor === 
-<sxh>sudo docker run -opciones nombre_imagen o codigo_imagen </sxh> 
-<sxh>sudo docker run -t -i kalilinux/kali-linux-docker /bin/bash</sxh> 
-<note>la opción -i es modo interactivo .</note> 
  
-=== Arrancar un contenedor mapeando puertos === +=== Proxy === 
-<sxh>docker run -p <puerto host>:<puerto contenedor<imagen></sxh>+Para que docker haga uso de un proxy debemos de crear/modificar el fichero dentro de la carpeta home del usuario desde donde vamos a lanzar docker **~/.docker/config.json** y añadir las siguientes líneas  
 +<sxh> 
 +
 + "proxies": 
 + { 
 +   "default": 
 +   { 
 +     "httpProxy": "http://127.0.0.1:3001", 
 +     "httpsProxy": "http://127.0.0.1:3001", 
 +     "noProxy": "*.test.example.com,.example2.com" 
 +   } 
 + } 
 +
 +</sxh> 
 +Otra opción sería usar variables de entorno al llamar a docker, por ejemplo  
 +<sxh>docker run --env HTTP_PROXY="http://127.0.0.1:3001"</sxh>
  
-Por ejemplo para exponer los puerto de un contenedor con ngnix +== Proxy en Centos 7 == 
-<sxh>docker run -p 80:80 -p 443:443 nginx:latest</sxh>+Para que docker usara el proxy con Centos 7 
 +Creamos la arpeta para configurar el servicio de docker a través de systemd. 
 +<sxh> mkdir /etc/systemd/system/docker.service.d</sxh>
  
-=== Ver los contenedores disponibles === +Creamos el fichero de configuración del servicio  <sxh>vi /etc/systemd/system/docker.service.d/http-proxy.conf</sxh> 
-<sxh>docker ps -a </sxh>+Añadimos dicho fichero <sxh> 
 +[Service] 
 +Environment="HTTP_PROXY=http://miproxy:8080/" "NO_PROXY=localhost,127.0.0.0/8,10.0.0.0/8,192.168.0.0/16,172.16.0.0/12" 
 +</sxh>
  
-=== Acceder a un contenedor === +Recargamos systemctl para que tome los cambios 
-Para acceder al contenedor, además de crearlo, se puede hacer de dos maneras. Una es haciendo referencia al IMAGE ID y otra al repositorio (REPOSITORY) y la etiqueta (TAG). +<sxh>sudo systemctl daemon-reload</sxh>
-<sxh>docker run -i -t b72879fa579a /bin/bash</sxh>+
  
-O también: +Verificamos si el entorno del servicio de docker carga correctamente 
-<sxh>docker run --t ubuntu:14.04 /bin/bash</sxh>+<sxh>sudo systemctl show docker --property Environment</sxh>
  
-=== Etiquetar === +Reiniciamos el servicio 
-También podemos poner una etiqueta a nuestros contenedores,  y llamarlo por dicha etiqueta, lo cual nos permitirá organizar mejor todos nuestros contenedores. +<sxh>sudo systemctl restart docker</sxh>
-Para poner una etiqueta +
-<sxh>docker tag id_imagen repositorio:etiqueta</sxh>+
  
-Para llamar a dicho contenedor por la etiqueta, hacemos lo mismo que cuando lo llamamos por el  id pero poniendo ahora la etiqueta  +  * https://docs.docker.com/config/daemon/systemd
-<sxh>docker tun -i -t repositorio:etiqueta /bin/bash</sxh> + 
-=== Iniciar contenedor ==== +
-<sxh>docker start imagenid</sxh> o bien con <sxh>docker start nombre</sxh> +
-Con estos comandos arrancamos el contenedor pero no nos conectamos al mismo. Si queremos acceder ejecutamos <sxh>docker attach id</sxh> +
-=== Parar contenedor=== +
-Para parar un contenedor <sxh>docker stop imagenid_o nombre </sxh>+
  
-=== Salir === 
-Escribiendo **exit** en nuestro contenedor, o Pulsando CTRL+D salimos del mismo pero **parando la ejecución del mismo**. 
-Si queremos salir del contenedor pero que se siga ejecutando debemos presionar CTRL, después P y luego Q 
-=== Guardar Contenedor === 
-<sxh>docker commit imagenid_o nombre</sxh> 
-=== Borrar Contenedor === 
-<sxh>docker rm <contenedor> </sxh> 
- 
-=== Copiar desde un contenedor === 
-Para copiar un fichero desde un contenedor a nuestra máquina hacemos 
-<sxh>docker cp <nombre_contenedor o id>:<ruta_al_fichero> <directorio_local_a_donde_copiar></sxh> 
- 
-También podemos hacerlo a la inversa. Desde la máquina local al contenedor 
- 
-=== Ejecutar comando === 
-Podemos ejecutar un comando dentro de un contenedor con  
-<sxh>docker exec <nombre o id contenedor> <comando></sxh> 
- 
-Por ejemplo para iniciar un shell intereactivo  
-<sxh>docker exec -it  micontenedor sh</sxh> 
- 
-=== logs === 
-Para ver los logs que está generando un contenedor, ejecutaríamos el comando <sxh>docker logs <nombre contenedor o id></sxh> 
- 
-=== Estadísticas de uso === 
-con el comando stats obtenemos estadísticas de uso y consumo de nuestro contenedor 
-<sxh>docker stats <nombre contenedor o id></sxh> 
- 
-=== Borrar contenedores sin uso === 
-con el comando <sxh>docker system prune </sxh> con la opción -a elimina_ 
-  * los contenedores que no se usan 
-  * los volúmenes que no se usan  
-  * las imágenes que no se están usando 
-  * las redes que no se están usando 
-<note>Mucho ojo al ejecutar este comando en sistemas en producción </note> 
- 
-=== Source === 
-Cuando tenemos varios entornos de docker y queremos gestionarlos desde una misma máquina podemos definir ficheros con las variables de entorno y usar el comando source para cargarlas con el comando  
-<sxh>source /path/mificherovariables.sh</sxh> 
- 
-Un ejemplo de ficheros con variables sería : 
-<file> 
-export DOCKER_TLS_VERIFY=1 
-export DOCKER_CERT_PATH=/home/users/lc/certificados 
-export DOCKER_HOST=tcp://miservidor.aws.dckr.io:443 
-</file> 
 ==== Recomendaciones de seguridad  ==== ==== Recomendaciones de seguridad  ====
 === Bastionado === === Bastionado ===
Línea 156: Línea 113:
   * https://platzi.com/blog/multiples-contedenores-docker/   * https://platzi.com/blog/multiples-contedenores-docker/
   * https://www.gitbook.com/book/jsitech1/meet-docker/details   * https://www.gitbook.com/book/jsitech1/meet-docker/details
 +  * https://iesgn.github.io/curso_docker_2021/
 +  * https://fp.josedomingo.org/iawgs/u06/