Publicado el 7 de Noviembre del 2018
1.631 visualizaciones desde el 7 de Noviembre del 2018
4,5 MB
69 paginas
Creado hace 8a (28/03/2016)
Meet Docker
Tabla de contenido
Introducción
Acerca del Autor
Fundamentos de Docker
Arquitectura de Docker
Instalando Docker
Primeros Pasos con Docker
Creando Imágenes
DockerFiles
Mejores Prácticas DockerFiles
Comando Docker Run
Otros Comandos
Docker Compose
Archivo docker-compose en detalle
Cierre
0
1
2
2.1
3
4
5
5.1
5.2
6
7
8
8.1
9
2
Meet Docker
Acerca del Libro
Muchos han escuchado hablar de Docker pero no muchos sabe exactamente de que se
trata, por que es tan popular y en que nos puede beneficiar según nuestro ambiente.
Esta guía fue creada con el fin de introducir el tema de una manera sencilla y fácil de
entender, sacada de la serie de entradas en el Blog de Jsitech. A lo largo de esta guía
veremos
Qué es Docker
Entiendiendo la Arquitectura
Como se compara Docker con las Máquinas Virtuales
Instalando Docker
Usando Docker
Cuando termine de leer esta guía será capaz de entender lo que es docker y como utilizarlo.
Introducción
3
Meet Docker
Acerca del Autor
Jason Soto, Profesional InfoSec/Linux, Penetration Tester, Ethical Hacking, Gestión de la
Seguridad, SysAdmin, Creador del blog Jsitech, Security Feed y IT Talks.
Experiencia
Mas de 10 años de Experiencia en el Area de TI, en la Administración de sistemas Linux y
algunos años en Seguridad de Información.En Ocasiones da consultorías en el area de
Linux/Windows hardening, Seguridad y realiza test de Penetración. Actualmente es el
Encargado de Seguridad de información y Linux SysAdmin en una organización.
Experiencia Informática
Sistemas Operativos: UNIX, GNU/Linux, Windows, Windows Server, Oracle Solaris,
FreeBSD
Desarrollo: Bash Scripting, Python
IT Security/Ethical Hacking: Penetration Testing, Metasploit Framework, Ethical Hacking,
Linux/Windows Hardening, Wireless Security, Network Security
DevOps: Chef, Jenkins, Docker, Puppet
Cloud: OpenStack, CloudU Certification
Proyectos
Constantemente hace publicaciones sobre Seguridad, Ethical Hacking, Linux entre otros, en
su blog JsiTech . La Idea es compartir el conocimiento con todos los profesionales del área
de la Tecnología de la Información especialmente en Seguridad informática. Cuenta además
con otros proyectos:
IT-Talks
Aquí creamos Hangouts periódicamente sobre temas del área de TI, que incluyen,
Seguridad, Desarrollo, Hacking, Administración de Sistemas, entre otros.
Acerca del Autor
4
Meet Docker
Security Feed
Aquí Recopilamos los titulares de los Blogs más conocidos de Seguridad y Ethical Hacking.
GitHub
En su cuenta de GitHub pueden ver los Scripts y otros proyectos en los que anda
trabajando. Aquí encontrarán los repo de JShielder, Otros Scripts y mas contribuciones a
diversas herramientas de Seguridad.
Pueden seguir sus proyectos en Twitter
@JsiTech
@InfoSecFeed
@InfoSecFeed_EN
@TecnoTalks
Acerca del Autor
5
Meet Docker
Fundamentos de Docker
Que es Docker?
Docker es un proyecto Open Source basado en contenedores de Linux, es básicamente un
motor de contenedores que usa características del Kernel de Linux como espacios de
nombres y controles de grupos para crear contenedores encima del Sistema operativo y
automatizar el despliegue de aplicaciones en estos contenedores. Nos permite además un
flujo de trabajo bastante eficiente al momento de mover nuestras aplicaciones desde un
ambiente de desarrollo, a pruebas y finalmente a producción.
Hablamos de Espacios de nombres y Control de Grupos,
pero que son estos?
Espacios de Nombres (namespaces)
Un espacio de nombre envuelve un recurso de Sistema global en una abstracción que le
hace parecer al proceso dentro del espacio de nombre, que tiene su propia instancia aislada
del recurso. Los cambios al recurso global son visibles para los proceso dentro del espacio
de nombre pero invisible para otros procesos. Una de las implementaciones mas utilizada
son los contenedores.
Linux provee los espacios de nombre:
Fundamentos de Docker
6
Meet Docker
IPC (Interprocess Communication Mechanism): Mecanismo de comunicación
Interproceso, aisle ciertos recursos IPC, específicamente System V IPC y cola de mensajes
POSIX.
NETWORK: Provee aislamiento de los recursos del Sistema asociados con las
comunicaciones de red, Dispositivos de red, Stack de protocolos IPv4 e IPv6, tablas de
enrutamiento, firewalls, directorio /proc/net, sockets de comunicación entre otros.
PID: Aisla el espacio de nombre del ID de proceso, que significa que procesos en otros
espacios de nombres PID, pueden tener el mismo PID. Esto le permite a los contenedores
proveer funcionalidades de suspension y recuperación de procesos en el contenedor y la
migración del contenedor a otro host manteniendo el mismo PID.
User: Aisla atributos e identificadores relacionados con la seguridad, particularmente los
ID’s de usuarios y grupos, el direcorio raíz, permisos, etc. El usuario y el grupo de un
proceso puede ser distinto dentro y fuera del espacio de nombre de usuario, Quiere decir
que un proceso puede tener un ID no privilegiado fuera del espacio de nombre y un ID de 0
dentro del espacio de nombre.
UTS: Provee aislamiento de dos identificadores de Sistema. El hostname y el nombre del
dominio NIS.
Control de Grupos
Los recursos usados por un contenedor son controladores por el control de grupos. Se
puede configurar cuanto CPU y memoria usa un contenedor hacienda uso de ellos.
Docker VS Máquinas Virtuales
La diferencia mas notable es que las Máquinas Virtuales son sistemas operativos completos
por lo que tendríamos que contar con muchos recursos. Docker en cambio aprovecha los
recursos del sistema operativo sobre el cual se ejecuta, como el Kernel y librerias. Es por
esta razón que terminanos con imágenes que ocupan muy poco espacio.
Fundamentos de Docker
7
Meet Docker
Fundamentos de Docker
8
Meet Docker
Arquitectura de Docker
Docker usa una arquitectura cliente-servidor. El cliente de Docker habla con el Daemon
de Docker que hace el trabajo de crear, correr y distribuir los contenedores. Tanto el cliente
como el Daemon pueden ejecutarse en el mismo Sistema, o puede conectar un cliente
remoto a un daemon de docker.
El cliente de Docker es la principal interfaz de usuario para docker, acepta los comandos
del usuario y se comunica con el daemon de docker.
Para entender como funciona docker internamente debemos conocer tres componentes.
Imágenes de Docker (Docker Images)
Las imágenes de Docker son plantillas de solo lectura, es decir, una imagen puede contener
el Sistema operativo de CentOS o Ubuntu con apache instalados, pero esto solo nos
permitirá crear los contenedores basados en esta configuración. SI hacemos cambios en el
contenedor ya lanzado, al detenerlo esto no se verá reflejado en la imagen. Mas adelante
entenderemos esta parte.
Registros de Docker (Docker Registries)
Los registros de Docker guardan las imágenes, estos son repos públicos o privados donde
podemos subir o descargar imágenes. El registro público lo provee el Hub de Docker que
sirve una colección de imágenes para nuestro uso. Los registros de dockers básicamente
son el componente de Distribución de Docker.
Contenedores de Docker (Docker Containers)
El contenedor de docker aloja todo lo necesario para ejecutar una aplicación. Cada
contenedor es creado de una imagen de docker. Cada contenedor es una plataforma
aislada.
Veamos gráficamente la arquitectura
Arquitectura de Docker
9
Meet Docker
Arquitectura de Docker
10
Meet Docker
Instalando Docker
En esta guía veremos la instalación de Docker en CentOS, Ubuntu y Debian.
CentOS 6
Instalamos el Repo EPEL
$ rpm –Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
CentOS 7
$ yum update
$ vi /etc/yum.repos.d/docker.repo
[dockerrepo]
name=Docker Repository
baseurl=https://yum.dockerproject.org/repo/main/centos/$releasever/
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg
Procedemos con la instalación de Docker
CentOS 6
$ yum install docker-io
CentOS 7
$ yum install docker-engine
Ubuntu 14.04/15.04
$ apt-get update
$ apt-get install apt-transport-https ca-certificates
Instalando Docker
11
Meet Docker
Agregamos la nueva llave gpg
$ sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
Agregamos los repos de Docker
$ nano /etc/apt/sources.list.d/docker.list
** Ubuntu 14.04
```deb https://apt.dockerproject.org/repo ubuntu-trusty main
** Ubuntu 15.04
```deb https://apt.dockerproject.org/repo ubuntu-wily main
**Procedemos con la Instalación
$ apt-get purge lxc-docker
$ apt-get install docker-engine
Debian 7/8
$ apt-get purge lxc-docker*
$ apt-get purge docker.io*
Agregamos la nueva llave gpg
$ apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
Agregamos los repos de Docker
$ nano /etc/apt/sources.list.d/docker.list
Debian 7
deb https://apt.dockerproject.org/repo debian-wheezy main
Instalando Docker
12
Meet Docker
Debian 8
deb https://apt.dockerproject.org/repo debian-jessie main
$ apt-get update
$ apt-get install docker-engine
Una vez instalamos vamos asegurarnos que el servicio de Docker suba cada vez que
booteemos nuestros servers.
Centos 6
$ chkconfig docker on
Centos 7
$ systemctl enable docker.service
Ubuntu 14.04/15.04
$ chkconfig docker on
Iniciamos los servicios para asegurarnos que todo anda bien.
CentOS 6
$ service docker start
Centos 7
$ systemctl start docker.service
Ubuntu 14.04/15.04
$ service docker start
Instalando Docker
13
Meet Docker
Debian 7/8
$ service docker start
Ya que tenemos el ambiente listo. Vamos a ejecutar el commando Docker a ver que nos
trae.
$ docker
Instalando Docker
14
Meet Docker
Nos trae información sobre las opciones que le podemos pasar a docker. Recuerdan que el
post anterior hablamos de los registros de Docker o Docker Registries que es un repo con
diversas imágenes para descargar, para probar que todo anda bien, vamos a realizar
Comentarios de: Meet Docker - Guía para iniciarte (0)
No hay comentarios