intro-docker



intro-docker

0 0


intro-docker

Presentación de introducción a docker

On Github ahvargas / intro-docker

Docker

Introducción

¿Que es Docker?

¿Que es docker?

  • Plataforma abierta para construir , distribuir y ejecutar aplicaciones.
  • Contenedores ligeros.

Contenedores Ligeros

Se pueden pensar en los contenedores como un sistema operativo dentro del sistema operativo en el cual se pueden instalar y ejecutar aplicaciones.

Los contenedores desacoplan las aplicaciones del Sistema Operativo. Esto hace que los contenedores sean potables entre todas los sistemas que soporten Docker.

Contenedores Ligeros

Debido a que las aplicaciones y cargas de trabajo están aisladas se pueden ejecutar múltiples versiones de PHP, Python , Apache, etc. conviviendo en sus contenedores.

También estos contenedores puedes ser clonados , respaldados y desplegados de manera rápida.

¿Pero entonces cual es la diferencia entre una máquina virtual?

Docker vs Maquinas Virtuales

Docker vs Maquinas Virtuales

Una maquina virtual emula un hardware. Todas las peticiones de CPU, memoria , disco y otros recursos son manejados por una capa de virtualización que se las traslada al hardware real.

Docker vs Maquinas Virtuales

La virtualización puede realizar lo mismo que Docker pero sin la misma flexibilidad, los contenedores no emulan una capa de hardware , usan el características del kernel de Linux para crear contenedores virtualizados ligeros.

Los contenedores simplemente son mas rápidos , portables y pueden escalar mas eficientemente que la virtualización de hardware.

Arquitectura Docker

Arquitectura Docker

Docker utiliza una arquitectura cliente-servidor. El cliente de Docker se comunica con el servidor que es es encargado de administrar los contenedores.

Ambos pueden ejecutarse en la misma maquina o el cliente puede acceder al demonio de Docker de forma remota. La comunicación entre ambos es mediante una API RESTful.

Arquitectura Docker

Por ejemplo:

» docker-machine inspect default
{
    "ConfigVersion": 3,
    "Driver": {
        "IPAddress": "192.168.99.100",
        "MachineName": "default",
        "SSHUser": "docker",
        "SSHPort": 57894,
        "SSHKeyPath": "C:\\Users\\user\\.docker\\machine\\machines\\default\\id_rsa",
        "StorePath": "C:\\Users\\user\\.docker\\machine",
        "SwarmMaster": false,
        "SwarmHost": "tcp://0.0.0.0:3376",
        "SwarmDiscovery": "",
        "VBoxManager": {},
        "CPU": 1,
        "Memory": 1024,
        "DiskSize": 20000,
        "Boot2DockerURL": "",
        "Boot2DockerImportVM": "",
        "HostDNSResolver": false,
        "HostOnlyCIDR": "192.168.99.1/24",
        "HostOnlyNicType": "82540EM",
        "HostOnlyPromiscMode": "deny",
        "NoShare": false,
        "DNSProxy": false,
        "NoVTXCheck": false
    },
    "DriverName": "virtualbox",
    "HostOptions": {
        "Driver": "",
        "Memory": 0,
        "Disk": 0,
        "EngineOptions": {
            "ArbitraryFlags": [],
            "Dns": null,
            "GraphDir": "",
            "Env": [],
            "Ipv6": false,
            "InsecureRegistry": [],
            "Labels": [],
            "LogLevel": "",
            "StorageDriver": "",
            "SelinuxEnabled": false,
            "TlsVerify": true,
            "RegistryMirror": [],
            "InstallURL": "https://get.docker.com"
        },
        "SwarmOptions": {
            "IsSwarm": false,
            "Address": "",
            "Discovery": "",
            "Master": false,
            "Host": "tcp://0.0.0.0:3376",
            "Image": "swarm:latest",
            "Strategy": "spread",
            "Heartbeat": 0,
            "Overcommit": 0,
            "ArbitraryFlags": [],
            "Env": null
        },
        "AuthOptions": {
            "CertDir": "C:\\Users\\user\\.docker\\machine\\certs",
            "CaCertPath": "C:\\Users\\user\\.docker\\machine\\certs\\ca.pem",
            "CaPrivateKeyPath": "C:\\Users\\user\\.docker\\machine\\certs\\ca-key.pem",
            "CaCertRemotePath": "",
            "ServerCertPath": "C:\\Users\\user\\.docker\\machine\\machines\\default\\server.pem",
            "ServerKeyPath": "C:\\Users\\user\\.docker\\machine\\machines\\default\\server-key.pem",
            "ClientKeyPath": "C:\\Users\\user\\.docker\\machine\\certs\\key.pem",
            "ServerCertRemotePath": "",
            "ServerKeyRemotePath": "",
            "ClientCertPath": "C:\\Users\\user\\.docker\\machine\\certs\\cert.pem",
            "ServerCertSANs": [],
            "StorePath": "C:\\Users\\user\\.docker\\machine\\machines\\default"
        }
    },
    "Name": "default"
}

Imágenes Docker

  • Una imagen de Docker es una plantilla solo lectura.
  • Por ejemplo , una imagen podría contener un sistema operativo CentOS con Java instalado.
  • Las imágenes se utilizan para crear contenedores Docker.
  • Las imágenes de Docker son los bloques de construcción de Docker.

Contenedores Docker

  • Un contenedor tiene todo lo que se necesita para que se ejecute una aplicación.
  • Cada contenedor es creado por una imagen Docker.
  • Estos pueden ejecutarse, detenerse, moverse, borrarse e iniciarse.
  • Cada contenedor es aislado por la plataforma .

Registros Docker

  • Son repositorios de imágenes de Docker
  • Pueden ser públicos o privados.
  • Docker Hub es el repositorio por defecto de Docker y tiene contiene una gran colección de imágenes Docker.
Docker Introducción