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 [2020/12/19 21:53] lcvirtualizacion:docker [2021/05/14 10:03] – [Gestionar imágenes] 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) 
-<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=== 
-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 38:
 <sxh>docker search centos</sxh> <sxh>docker search centos</sxh>
 === Listar las imágenes que tenemos descargadas === === Listar las imágenes que tenemos descargadas ===
-<sxh>sudo docker images </sxh>+<sxh>sudo docker images ls</sxh>
 === Obtener información sobre una imagen concreta === === Obtener información sobre una imagen concreta ===
 <sxh>sudo docker history <imagen></sxh> <sxh>sudo docker history <imagen></sxh>
 +=== Borrar una imagen ===
 +<sxh>docker image rm </sxh>
  
  
  
 ==== Gestionar Contenedores ==== ==== Gestionar Contenedores ====
-=== Instalar una imagen de Kali Linux ===+=== Descargar una imagen === 
 +<sxh>sudo docker pull <nombreimagen</sxh> 
 + 
 +Por ejemplo para descargar la imagen de kali linux
 <sxh>sudo docker pull kalilinux/kali-linux-docker</sxh> <sxh>sudo docker pull kalilinux/kali-linux-docker</sxh>
  
Línea 96: Línea 57:
 <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 ===
 +Para que nos muestre los contenedores en ejecución <sxh>docker ps</sxh>
 +
 <sxh>docker ps -a </sxh> <sxh>docker ps -a </sxh>
 +Los campos que muestra son:
 +  * CONTAINER ID = Identificador único del contenedor
 +  * IMAGE = La imagen utilizado para la creación del contenedor
 +  * COMMAND =   Comando ejecutado en el momento de crear el contenedor
 +  * CREATED = Muestra el tiempo de vida que tiene el contenedor
 +  * STATUS = Muestra el estado actual del contenedor
 +  * PORTS = Muestra el puerto que la aplicación dentro del contenedor utiliza para recibir conexiones
 +  * NAMES = Nombre del contenedor
 +
  
 === Acceder a un contenedor === === Acceder a un contenedor ===
Línea 106: Línea 84:
 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>
 +
 +=== Ver los volúmenes ===
 +Lista los volúmenes creados en Docker.
 +<sxh>docker volume ls</sxh>
 +
 + Un volume nos permite guardar información de forma persistente. Permite que podamos destruir un contenedor sin perder los datos. 
 +
  
 === Etiquetar === === Etiquetar ===
Línea 119: Línea 105:
 === 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 127: Línea 115:
 === 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 145: Línea 135:
  
 === 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 152: Línea 142:
   * 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 166: Línea 156:
 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 ===