Anteriormente hemos visto las instalaciones de hipervisores como Xen y middleware en la nube como openstack. Recientemente, una nueva tecnología llamada docker container se ha convertido en la tendencia más popular en el desarrollo de aplicaciones. En este artículo veremos qué es exactamente un docker, sus diferencias con las máquinas virtuales, la instalación de docker y su uso.
¿Qué es Docker?
Docker es un contenedor que envuelve una pieza de software en un sistema de archivos completo que contiene todo lo que necesita para ejecutarse:código, tiempo de ejecución, herramientas del sistema, bibliotecas del sistema, cualquier cosa que pueda instalar en un servidor. Los contenedores se virtualizan a nivel del sistema operativo, lo que los hace más eficientes que los hipervisores en el uso de los recursos del sistema. Hay muchas tecnologías de contenedores de Linux como LXC, Docker, etc.,
¿Cuál es la diferencia entre Docker y una Máquina Virtual?
Con un enfoque arquitectónico diferente, los contenedores son mucho más portátiles y eficientes, aunque tienen un aislamiento de recursos similar. La siguiente imagen muestra la diferencia arquitectónica entre un contenedor y máquinas virtuales.
¿Cómo instalar un contenedor Docker en CentOS 7?
El último lanzamiento oficial de Docker es v1.10. Las instrucciones a continuación son para instalar Docker Container en el servidor CentOS 7. Inicie sesión en el servidor CentOS 7 como raíz y siga los pasos a continuación.
# yum -y update
# tee /etc/yum.repos.d/docker.repo <<-'EOF'
> [dockerrepo]
> name=Docker Repository
> baseurl=https://yum.dockerproject.org/repo/main/centos/$releasever/
> enabled=1
> gpgcheck=1
> gpgkey=https://yum.dockerproject.org/gpg
> EOF
[dockerrepo]
name=Docker Repository
baseurl=https://yum.dockerproject.org/repo/main/centos/$releasever/
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg
Paso 3: Instale el paquete docker y el registro docker. El registro de Docker es una aplicación del lado del servidor altamente escalable y sin estado que almacena y le permite distribuir imágenes de Docker.
# yum -y install docker docker-registry
Paso 3: Tras la instalación exitosa de la ventana acoplable, inicie el servicio de la ventana acoplable.
# systemctl start docker.service
# systemctl enable docker.service
# systemctl status docker.service
docker.service - Docker Application Container Engine Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled) Active: active (running) since Tue 2016-03-22 16:29:00 IST; 20h ago Docs: http://docs.docker.com Main PID: 30108 (docker) CGroup: /system.slice/docker.service ââ30108 /usr/bin/docker daemon --selinux-enabled
Mar 22 17:10:12 vm1 docker[30108]: time="2016-03-22T17:10:12.541577770+05:3...1" Mar 22 17:11:05 vm1 docker[30108]: time="2016-03-22T17:11:05.429417681+05:3...0" Mar 22 17:11:05 vm1 docker[30108]: time="2016-03-22T17:11:05.429730128+05:3...s" Mar 22 17:11:05 vm1 docker[30108]: time="2016-03-22T17:11:05.429781346+05:3...04 Mar 22 17:11:13 vm1 docker[30108]: time="2016-03-22T17:11:13.020019713+05:3...0" Mar 22 17:11:23 vm1 docker[30108]: time="2016-03-22T17:11:23.021293894+05:3...e" Mar 22 17:11:28 vm1 docker[30108]: time="2016-03-22T17:11:28.600657892+05:3...n" Mar 22 17:11:35 vm1 docker[30108]: time="2016-03-22T17:11:35.938950613+05:3...0" Mar 22 17:11:45 vm1 docker[30108]: time="2016-03-22T17:11:45.939810804+05:3...e" Mar 22 17:11:57 vm1 docker[30108]: time="2016-03-22T17:11:57.720737864+05:3...n" Hint: Some lines were ellipsized, use -l to show in full.
¿Cómo usar Docker?
# docker pull centos
El comando anterior extrae la última versión estable de centos. Para extraer cualquier otra versión de la imagen de CentOS, por ejemplo, CentOS 6:
# docker pull centos:centos6
# docker images centos REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE docker.io/centos latest bb3d629a7cbc 2 weeks ago 196.6 MB
Paso 3: Para enumerar todas las imágenes descargadas disponibles:
# docker images
Cómo ejecutar un Contenedor Docker
# docker run -i -t centos /bin/bash
¡Eso es todo! Ahora aterrizará en un bash shell dentro de un contenedor acoplable de centos.
Comandos para trabajar con contenedores Docker
1. Para desconectar o separar del contenedor sin apagar el contenedor:
Ctrl-p + Ctrl-q
2. Ya hay muchos contenedores disponibles por comunidad. Para listar los contenedores de la comunidad:
# docker search centos INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATED docker.io docker.io/centos The official build of CentOS. 2042 [OK] docker.io docker.io/jdeathe/centos-ssh CentOS-6 6.7 x86_64 / CentOS-7 7.2.1511 x8... 18 [OK] docker.io docker.io/jdeathe/centos-ssh-apache-php CentOS-6 6.7 x86_64 / Apache / PHP / PHP M... 14 [OK] ... ...
# docker search ubuntu INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATED docker.io docker.io/ubuntu Ubuntu is a Debian-based Linux operating s... 3464 [OK] docker.io docker.io/ubuntu-upstart Upstart is an event-based replacement for ... 60 [OK] docker.io docker.io/torusware/speedus-ubuntu Always updated official Ubuntu docker imag... 25 [OK] docker.io docker.io/rastasheep/ubuntu-sshd Dockerized SSH service, built on top of of... 23 [OK] ... ...
3. Enumere todos los contenedores
# docker ps -a
4. Enumere solo contenedores en ejecución
# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 4293c8265d00 centos "/bin/bash" 22 hours ago Up 9 seconds agitated_poincare
5. Detener un contenedor
Obtenga el ID del contenedor de la lista anterior y utilícelo para detener el contenedor respectivo:
# docker stop 4293c8265d00
6:reinicie el servicio docker
# systemctl restart docker.service
Docker:Instalación y uso básico en Ubuntu 16.04
¿Cuál es la diferencia entre Linux y Unix?
¿Cuál es la diferencia entre las instrucciones COPY y ADD en Dockerfile?
¿Qué es un Hipervisor? ¿Cuál es la diferencia entre el tipo 1 y 2?
¿Cuál es la diferencia entre curl y Wget?
¿Cuál es la diferencia entre la llamada al sistema y la llamada a la biblioteca?