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/04/10 22:36] – [Referencias] lcvirtualizacion:docker [2023/01/18 14:11] (actual) – editor externo 127.0.0.1
Línea 29: Línea 29:
   * Dockerfile-> es un archivo donde definimos las reglas para crear una imagen   * Dockerfile-> es un archivo donde definimos las reglas para crear una imagen
   * 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
-==== Instalación en Centos 7 ==== 
-Instalamos primero los siguientes paquetes necesarios <sxh>sudo yum install -y yum-utils device-mapper-persistent-data lvm2</sxh> 
  
-<sxh>sudo yum install docker</sxh> 
  
-Tambien podemos utilizar el script de instalación  <sxh>    curl -fsSL https://get.docker.com/ | sh</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>
  
-Si queremos ponerlo como servicio <sxh bash>sudo systemctl start docker </sxh> y para que arranque en el inicio <sxh bash>sudo systemctl enable docker</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>
  
-Para que docker funciones hay que crear un grupo y darle permisos sobre /var/run/docker.sock 
  
-<sxh bash>sudo groupadd docker +=== Proxy === 
-sudo chown root:docker /var/run/docker.sock</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>
  
-Añadimos nuestro usuario al grupo docker +== Proxy en Centos 7 == 
-<sxh bash>sudo usermod -a -G docker vagrant</sxh> +Para que docker usara el proxy con Centos 7 
-==== Instalación en Ubuntu ==== +Creamos la arpeta para configurar el servicio de docker a través de systemd. 
-Para instalar la últimar versión, ya que está en continuo desarrollo +<sxh> mkdir /etc/systemd/system/docker.service.d</sxh>
-<sxh> curl -sSL https://get.docker.com/ | sh</sxh>+
  
-Si queremos instalarlo desde los repositorios oficiales +Creamos el fichero de configuración del servicio  <sxh>vi /etc/systemd/system/docker.service.d/http-proxy.conf</sxh> 
-<sxh>sudo apt-get install docker vagrant</sxh>+Añadimos a 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>
  
-<note>Vagrant no es necesario, pero me permite gestionar y configurar mis contenedores, por ejemplo  cuando quiero duplicar entornos o desplegar imágenes con configuraciones determinadas </note> +Recargamos systemctl para que tome los cambios 
-==== Instalación en Windows ==== +<sxh>sudo systemctl daemon-reload</sxh>
-Para la instalación en windows necesitamos: +
-  descargar e instalar oracle virtualbox en caso de no tenerlo ya instalado +
-  - descargar e instalar docker toolbox (www.docker.com/toolbox) +
-<note>Ahora si tienens windows 10 ya no es necesario tener virtualbox. Basta con descargar desde la página oficial Docker  Desktop for Windows Docker</note>+
  
-=== Descargar y ejecutar una imagen utilizando vagrant=== +Verificamos si el entorno del servicio de docker carga correctamente 
-Para descargar una imagen, en nuestro caso de ubuntu  +<sxh>sudo systemctl show docker --property Environment</sxh>
-creamos una carpeta <code>mkdir proyectosdocker/ubuntu</code> +
-<code>cd proyectosdocker/ubuntu +
-vagrant init ubuntu/trusty64</code> +
-<note>si nos da un mensaje de que no encuentra la imagen, debemos desinstalar vagrant, bajarnos el fichero de instalación de vagrant desde su página web e instalar el fichero deb correspondiente  +
-<code> +
-sudo apt-get remove vagrant +
-wget https://dl.bintray.com/mitchellh/vagrant/vagrant_1.7.4_x86_64.deb +
-sudo dpkg -i vagrant_1.7.4_x86_64.deb  +
-</code></note>+
  
 +Reiniciamos el servicio
 +<sxh>sudo systemctl restart docker</sxh>
  
 +  * https://docs.docker.com/config/daemon/systemd/
 + 
  
-===== 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> 
- 
-<sxh>sudo docker history</sxh> 
- 
- 
- 
-==== Gestionar Contenedores ==== 
-=== Instalar una imagen de Kali Linux === 
-<sxh>sudo docker pull kalilinux/kali-linux-docker</sxh> 
- 
-=== 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> 
- 
-=== Ver los contenedores disponibles === 
-<sxh>docker ps -a </sxh> 
- 
-=== Acceder a un contenedor === 
-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>docker run -i -t b72879fa579a /bin/bash</sxh> 
- 
-O también: 
-<sxh>docker run -i -t ubuntu:14.04 /bin/bash</sxh> 
- 
-=== Etiquetar === 
-También podemos poner una etiqueta a nuestros contenedores,  y llamarlo por dicha etiqueta, lo cual nos permitirá organizar mejor todos nuestros contenedores. 
-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  
-<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 estádisticas 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 estan usando 
-  * las redes que no se estan 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 194: 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/