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
Próxima revisiónAmbos lados, revisión siguiente
virtualizacion:docker [2019/03/27 14:47] lcvirtualizacion:docker [2021/02/22 20:08] lc
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> 
- 
- 
-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> 
- 
-Para que docker funciones hay que crear un grupo y darle permisos sobre /var/run/docker.sock 
- 
-<sxh bash>sudo groupadd docker 
-sudo chown root:docker /var/run/docker.sock</sxh> 
- 
-Añadimos nuestro usuario al grupo docker 
-<sxh bash>sudo usermod -a -G docker vagrant</sxh> 
-==== Instalación en Ubuntu ==== 
-Para instalar la últimar versión, ya que está en continuo desarrollo 
-<sxh> curl -sSL https://get.docker.com/ | sh</sxh> 
- 
-Si queremos instalarlo desde los repositorios oficiales 
-<sxh>sudo apt-get install docker vagrant</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> 
-==== Instalación en Windows ==== 
-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) 
- 
-=== Descargar y ejecutar una imagen utilizando vagrant=== 
-Para descargar una imagen, en nuestro caso de ubuntu  
-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> 
- 
- 
  
 ===== Comandos básicos ===== ===== Comandos básicos =====
Línea 82: Línea 39:
 === Listar las imágenes que tenemos descargadas === === Listar las imágenes que tenemos descargadas ===
 <sxh>sudo docker images </sxh> <sxh>sudo docker images </sxh>
- +=== Obtener información sobre una imagen concreta === 
-<sxh>sudo docker history</sxh>+<sxh>sudo docker history <imagen></sxh>
  
  
Línea 95: Línea 52:
 <sxh>sudo docker run -t -i kalilinux/kali-linux-docker /bin/bash</sxh> <sxh>sudo docker run -t -i kalilinux/kali-linux-docker /bin/bash</sxh>
 <note>la opción -i es modo interactivo .</note> <note>la opción -i es modo interactivo .</note>
 +
 +=== Arrancar un contenedor mapeando puertos ===
 +<sxh>docker run -p <puerto host>:<puerto contenedor< <imagen></sxh>
 +
 +Por ejemplo para exponer los puerto de un contenedor con ngnix
 +<sxh>docker run -p 80:80 -p 443:443 nginx:latest</sxh>
  
 === Ver los contenedores disponibles === === Ver los contenedores disponibles ===
Línea 105: Línea 68:
 O también: O también:
 <sxh>docker run -i -t ubuntu:14.04 /bin/bash</sxh> <sxh>docker run -i -t ubuntu:14.04 /bin/bash</sxh>
 +<note>Para salir de una imagen, debes presionar CTRL+D.</note>
 === Etiquetar === === Etiquetar ===
 También podemos poner una etiqueta a nuestros contenedores,  y llamarlo por dicha etiqueta, lo cual nos permitirá organizar mejor todos nuestros contenedores. También podemos poner una etiqueta a nuestros contenedores,  y llamarlo por dicha etiqueta, lo cual nos permitirá organizar mejor todos nuestros contenedores.
Línea 118: Línea 81:
 === Parar contenedor=== === Parar contenedor===
 Para parar un contenedor <sxh>docker stop imagenid_o nombre </sxh> Para parar un contenedor <sxh>docker stop imagenid_o nombre </sxh>
 +
 +Para parar todos los contenedores <sxh>docker stop $(docker ps -a -q)</sxh>
  
 === Salir === === Salir ===
Línea 123: Línea 88:
 Si queremos salir del contenedor pero que se siga ejecutando debemos presionar CTRL, después P y luego Q Si queremos salir del contenedor pero que se siga ejecutando debemos presionar CTRL, después P y luego Q
 === Guardar Contenedor === === Guardar Contenedor ===
-<sxh>docker rm imagenid_o nombre</sxh>+<sxh>docker commit imagenid_o nombre</sxh>
 === Borrar Contenedor === === Borrar Contenedor ===
 <sxh>docker rm <contenedor> </sxh> <sxh>docker rm <contenedor> </sxh>
 +
 +Para borrar todos los contenedores <sxh>docker rm $(docker ps -a -q)</sxh>
  
 === Copiar desde un contenedor === === Copiar desde un contenedor ===
Línea 144: Línea 111:
  
 === Estadísticas de uso === === Estadísticas de uso ===
-con el comando stats obtenemos estádisticas de uso y consumo de nuestro contenedor+con el comando stats obtenemos estadísticas de uso y consumo de nuestro contenedor
 <sxh>docker stats <nombre contenedor o id></sxh> <sxh>docker stats <nombre contenedor o id></sxh>
  
Línea 151: Línea 118:
   * los contenedores que no se usan   * los contenedores que no se usan
   * los volúmenes que no se usan    * los volúmenes que no se usan 
-  * las imágenes que no se estan usando +  * las imágenes que no se están usando 
-  * las redes que no se estan usando+  * las redes que no se están usando
 <note>Mucho ojo al ejecutar este comando en sistemas en producción </note> <note>Mucho ojo al ejecutar este comando en sistemas en producción </note>
  
Línea 165: Línea 132:
 export DOCKER_HOST=tcp://miservidor.aws.dckr.io:443 export DOCKER_HOST=tcp://miservidor.aws.dckr.io:443
 </file> </file>
 +
 +
 +=== Proxy ===
 +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>
 +
 +== Proxy en Centos 7 ==
 +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>
 +
 +Creamos el fichero de configuración del servicio  <sxh>vi /etc/systemd/system/docker.service.d/http-proxy.conf</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>
 +
 +Recargamos systemctl para que tome los cambios
 +<sxh>sudo systemctl daemon-reload</sxh>
 +
 +Verificamos si el entorno del servicio de docker carga correctamente
 +<sxh>sudo systemctl show docker --property Environment</sxh>
 +
 +Reiniciamos el servicio
 +<sxh>sudo systemctl restart docker</sxh>
 +
 +  * https://docs.docker.com/config/daemon/systemd/
 + 
 +
 ==== Recomendaciones de seguridad  ==== ==== Recomendaciones de seguridad  ====
 === Bastionado === === Bastionado ===
Línea 179: Línea 189:
   * https://github.com/google/cadvisor   * https://github.com/google/cadvisor
 ==== Referencias ==== ==== Referencias ====
 +  * https://recetas-docker.readthedocs.io/es/latest/capitulo_1.html
   * https://www.docker.com/community-edition   * https://www.docker.com/community-edition
   * https://docs.docker.com/installation/ubuntulinux/#installation   * https://docs.docker.com/installation/ubuntulinux/#installation