Herramientas de usuario

Herramientas del sitio


informatica:sistemas_operativos:cursos:docker_avanzado

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
informatica:sistemas_operativos:cursos:docker_avanzado [2023/10/09 20:20] – [Hello, world] tempwininformatica:sistemas_operativos:cursos:docker_avanzado [2023/10/19 18:42] (actual) – [Recursos] tempwin
Línea 12: Línea 12:
 soluciones basadas en contenedores desde el punto de vista de la seguridad y la escalabilidad soluciones basadas en contenedores desde el punto de vista de la seguridad y la escalabilidad
  
-===== Temario =====+===== Temario oficial =====
  
   * 1. [[informatica:sistemas_operativos:cursos:docker_avanzado:seguridad_contenedores|Seguridad de los contenedores]]   * 1. [[informatica:sistemas_operativos:cursos:docker_avanzado:seguridad_contenedores|Seguridad de los contenedores]]
Línea 34: Línea 34:
     * Auditoría de la plataforma Docker     * Auditoría de la plataforma Docker
  
 +===== Temario real =====
 +
 +  * Módulo 1: [[informatica:sistemas_operativos:cursos:docker_avanzado:el_porque_de_los_contenedores|El porqué de los contenedores]]
 +  * Módulo 2: [[informatica:sistemas_operativos:cursos:docker_avanzado:instalacion|Instalación]]
 +  * Módulo 3: [[informatica:sistemas_operativos:cursos:docker_avanzado:primeros_pasos|Primeros pasos]]
 +  * Módulo 4: [[informatica:sistemas_operativos:cursos:docker_avanzado:fundamentos_docker|Fundamentos de Docker]]
 +  * Módulo 5: [[informatica:sistemas_operativos:cursos:docker_avanzado:uso_de_docker_en_desarrollo|Uso de Docker en Desarrollo]]
 +  * Módulo 6: [[informatica:sistemas_operativos:cursos:docker_avanzado:creacion_de_una_aplicacion_web_de_ejemplo|Creación de una aplicación web de ejemplo]]
 +  * Módulo 7: [[informatica:sistemas_operativos:cursos:docker_avanzado:distribucion_de_imagenes|Distribución de imágenes]]
 +  * Módulo 8: [[informatica:sistemas_operativos:cursos:docker_avanzado:integracion_continua_y_testing_con_docker|Integración continua y testing con Docker]]
 +  * Módulo 9: [[informatica:sistemas_operativos:cursos:docker_avanzado:despliegue_de_containers|Despliegue de containers]]
 +  * Módulo 10: [[informatica:sistemas_operativos:cursos:docker_avanzado:networking_y_service_discovery|Networking y Service Discovery]]
 +  * Módulo 11: [[informatica:sistemas_operativos:cursos:docker_avanzado:orquestacion_clustering_gestion|Orquestación, clustering y gestión]]
 +
 +  * [[informatica:sistemas_operativos:cursos:docker_avanzado:ejercicios_practicos|Ejercicios prácticos / guiados]].
 +  * [[informatica:sistemas_operativos:cursos:docker_avanzado:tests|Tests]]
 ===== Notas ===== ===== Notas =====
  
 Profesores: Profesores:
  
-  * Antonio Varela (está certificado en Docker)+  * Antonio Varela Nieto (antonio.varela@teslatechnologies.com) (está certificado en Docker)
   * ESTEBAN VAZQUEZ FERREIRO   * ESTEBAN VAZQUEZ FERREIRO
  
Línea 198: Línea 214:
     * En la actualidad los principales actores cloud ofrecen completísimas opciones de despliegue de contenedores en sus infraestructuras (Amazon Web Services, Microsoft Azure, Google Compute Engine)     * En la actualidad los principales actores cloud ofrecen completísimas opciones de despliegue de contenedores en sus infraestructuras (Amazon Web Services, Microsoft Azure, Google Compute Engine)
     * Todos ellos soportan Kubernetes para permitir despliegues más complejos de múltiples contenedores orquestados para trabajar y escalar de forma independiente.     * Todos ellos soportan Kubernetes para permitir despliegues más complejos de múltiples contenedores orquestados para trabajar y escalar de forma independiente.
 +
 +
 +<WRAP center round info 60%>
 +Podman, Buildah y skopeo es la alternativa que ofrece Red Hat a Docker containers. Docker y Podman respetan el estándar [[https://es.wikipedia.org/wiki/Open_Container_Initiative|OCI]]. La gran diferencia es que en Podman no existe un demonio como Docker Engine.
 +</WRAP>
  
 ===== Instalación ===== ===== Instalación =====
Línea 377: Línea 398:
  
 <WRAP center round info 60%> <WRAP center round info 60%>
-Como las imágenes, los contenedores también nombres / identificadores únicos.+Como las imágenes, los contenedores también tienen nombres / identificadores únicos.
 </WRAP> </WRAP>
  
Línea 387: Línea 408:
  
 De esta manera, si volvemos a ejecutar el comando, no nos dejará porque no podemos tener dos contenedores con el mismo nombre. Recordemos que tanto el nombre como el ID identifica un contenedor. De esta manera, si volvemos a ejecutar el comando, no nos dejará porque no podemos tener dos contenedores con el mismo nombre. Recordemos que tanto el nombre como el ID identifica un contenedor.
 +
 +Crear un contenedor en modo "background" (de fondo) y ejecutando un bucle infinito para que no se pare:
 +<code>
 +docker run --name mydaemon -d ubuntu /bin/sh -c "while true; do echo hello world; sleep 1; done"
 +</code>
 +
 +Miramos que esté en ejecución el contenedor anterior:
 +
 +<code>
 +docker ps
 +</code>
 +
 +Podemos ver la salida del contenedor:
 +
 +<code>
 +docker logs mydaemon
 +</code>
 +
 +Para ver en tiempo real la salida:
 +
 +<code>
 +docker logs -ft 10 mydaemon
 +</code>
 +
 +Para ver la lista de procesos dentro del contendor (sin tener que entrar en él):
 +
 +<code>
 +docker top mydaemon
 +</code>
 +
 +==== docker inspect ====
 +
 +Comando que da información extendida sobre un contenedor.
 +
 +<code>
 +docker inspect mi-contenedor
 +</code>
 +
 +Ejemplo de salida:
 +
 +<code>
 +[
 +    {
 +        "Id": "08d1311242a61620b8dd03b951ef66f5dc63d82d35ba17fda9cdf80d3d9844d6",
 +        "Created": "2023-10-09T18:26:20.92818159Z",
 +        "Path": "/bin/sh",
 +        "Args": [
 +            "-c",
 +            "while true; do echo hello world; sleep 1; done"
 +        ],
 +        "State": {
 +            "Status": "running",
 +            "Running": true,
 +            "Paused": false,
 +            "Restarting": false,
 +            "OOMKilled": false,
 +            "Dead": false,
 +            "Pid": 192214,
 +            "ExitCode": 0,
 +            "Error": "",
 +            "StartedAt": "2023-10-09T18:26:21.354420029Z",
 +            "FinishedAt": "0001-01-01T00:00:00Z"
 +        },
 +        "Image": "sha256:3565a89d9e81a4cb4cb2b0d947c7c11227a3f358dc216d19fc54bfd77cd5b542",
 +        "ResolvConfPath": "/srv/dev-disk-by-uuid-d8848615-8168-4fba-8cce-d868e42e9fdb/docker/containers/08d1311242a61620b8dd03b951ef66f5dc63d82d35ba17fda9cdf80d3d9844d6/resolv.conf",
 +        "HostnamePath": "/srv/dev-disk-by-uuid-d8848615-8168-4fba-8cce-d868e42e9fdb/docker/containers/08d1311242a61620b8dd03b951ef66f5dc63d82d35ba17fda9cdf80d3d9844d6/hostname",
 +        "HostsPath": "/srv/dev-disk-by-uuid-d8848615-8168-4fba-8cce-d868e42e9fdb/docker/containers/08d1311242a61620b8dd03b951ef66f5dc63d82d35ba17fda9cdf80d3d9844d6/hosts",
 +        "LogPath": "/srv/dev-disk-by-uuid-d8848615-8168-4fba-8cce-d868e42e9fdb/docker/containers/08d1311242a61620b8dd03b951ef66f5dc63d82d35ba17fda9cdf80d3d9844d6/08d1311242a61620b8dd03b951ef66f5dc63d82d35ba17fda9cdf80d3d9844d6-json.log",
 +        "Name": "/mydaemon",
 +        "RestartCount": 0,
 +        "Driver": "overlay2",
 +        "Platform": "linux",
 +        "MountLabel": "",
 +        "ProcessLabel": "",
 +        "AppArmorProfile": "",
 +        "ExecIDs": null,
 +        "HostConfig": {
 +            "Binds": null,
 +            "ContainerIDFile": "",
 +            "LogConfig": {
 +                "Type": "json-file",
 +                "Config": {}
 +            },
 +            "NetworkMode": "default",
 +            "PortBindings": {},
 +            "RestartPolicy": {
 +                "Name": "no",
 +                "MaximumRetryCount": 0
 +            },
 +            "AutoRemove": false,
 +            "VolumeDriver": "",
 +            "VolumesFrom": null,
 +            "ConsoleSize": [
 +                36,
 +                188
 +            ],
 +            "CapAdd": null,
 +            "CapDrop": null,
 +            "CgroupnsMode": "private",
 +            "Dns": [],
 +            "DnsOptions": [],
 +            "DnsSearch": [],
 +            "ExtraHosts": null,
 +            "GroupAdd": null,
 +            "IpcMode": "private",
 +            "Cgroup": "",
 +            "Links": null,
 +            "OomScoreAdj": 0,
 +            "PidMode": "",
 +            "Privileged": false,
 +            "PublishAllPorts": false,
 +            "ReadonlyRootfs": false,
 +            "SecurityOpt": null,
 +            "UTSMode": "",
 +            "UsernsMode": "",
 +            "ShmSize": 67108864,
 +            "Runtime": "runc",
 +            "Isolation": "",
 +            "CpuShares": 0,
 +            "Memory": 0,
 +            "NanoCpus": 0,
 +            "CgroupParent": "",
 +            "BlkioWeight": 0,
 +            "BlkioWeightDevice": [],
 +            "BlkioDeviceReadBps": [],
 +            "BlkioDeviceWriteBps": [],
 +            "BlkioDeviceReadIOps": [],
 +            "BlkioDeviceWriteIOps": [],
 +            "CpuPeriod": 0,
 +            "CpuQuota": 0,
 +            "CpuRealtimePeriod": 0,
 +            "CpuRealtimeRuntime": 0,
 +            "CpusetCpus": "",
 +            "CpusetMems": "",
 +            "Devices": [],
 +            "DeviceCgroupRules": null,
 +            "DeviceRequests": null,
 +            "MemoryReservation": 0,
 +            "MemorySwap": 0,
 +            "MemorySwappiness": null,
 +            "OomKillDisable": null,
 +            "PidsLimit": null,
 +            "Ulimits": null,
 +            "CpuCount": 0,
 +            "CpuPercent": 0,
 +            "IOMaximumIOps": 0,
 +            "IOMaximumBandwidth": 0,
 +            "MaskedPaths": [
 +                "/proc/asound",
 +                "/proc/acpi",
 +                "/proc/kcore",
 +                "/proc/keys",
 +                "/proc/latency_stats",
 +                "/proc/timer_list",
 +                "/proc/timer_stats",
 +                "/proc/sched_debug",
 +                "/proc/scsi",
 +                "/sys/firmware"
 +            ],
 +            "ReadonlyPaths": [
 +                "/proc/bus",
 +                "/proc/fs",
 +                "/proc/irq",
 +                "/proc/sys",
 +                "/proc/sysrq-trigger"
 +            ]
 +        },
 +        "GraphDriver": {
 +            "Data": {
 +                "LowerDir": "/srv/dev-disk-by-uuid-d8848615-8168-4fba-cc8e-d868e42e9fdb/docker/overlay2/befdb5ff531519676951b62dcbaa449dc9a2fce322b05ba049f13475bc8132cf-init/diff:/srv/dev-disk-by-uuid-d8848615-8168-4fba-8cce-d868e42e9fdb/docker/overlay2/37e0fab9210ae886a0eff914fa60be829e336c6f4b201dd5141d6839f5898d79/diff",
 +                "MergedDir": "/srv/dev-disk-by-uuid-d8848615-8168-4fba-cc8e-d868e42e9fdb/docker/overlay2/befdb5ff531519676951b62dcbaa449dc9a2fce322b05ba049f13475bc8132cf/merged",
 +                "UpperDir": "/srv/dev-disk-by-uuid-d8848615-8168-4fba-cc8e-d868e42e9fdb/docker/overlay2/befdb5ff531519676951b62dcbaa449dc9a2fce322b05ba049f13475bc8132cf/diff",
 +                "WorkDir": "/srv/dev-disk-by-uuid-d8848615-8168-4fba-cc8e-d868e42e9fdb/docker/overlay2/befdb5ff531519676951b62dcbaa449dc9a2fce322b05ba049f13475bc8132cf/work"
 +            },
 +            "Name": "overlay2"
 +        },
 +        "Mounts": [],
 +        "Config": {
 +            "Hostname": "08d1311242a6",
 +            "Domainname": "",
 +            "User": "",
 +            "AttachStdin": false,
 +            "AttachStdout": false,
 +            "AttachStderr": false,
 +            "Tty": false,
 +            "OpenStdin": false,
 +            "StdinOnce": false,
 +            "Env": [
 +                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
 +            ],
 +            "Cmd": [
 +                "/bin/sh",
 +                "-c",
 +                "while true; do echo hello world; sleep 1; done"
 +            ],
 +            "Image": "ubuntu",
 +            "Volumes": null,
 +            "WorkingDir": "",
 +            "Entrypoint": null,
 +            "OnBuild": null,
 +            "Labels": {
 +                "org.opencontainers.image.ref.name": "ubuntu",
 +                "org.opencontainers.image.version": "22.04"
 +            }
 +        },
 +        "NetworkSettings": {
 +            "Bridge": "",
 +            "SandboxID": "4a5cbec72d8ed785cab1167730d4872c9c5bf627b435566dee54548ea74cc8e9",
 +            "HairpinMode": false,
 +            "LinkLocalIPv6Address": "",
 +            "LinkLocalIPv6PrefixLen": 0,
 +            "Ports": {},
 +            "SandboxKey": "/var/run/docker/netns/4a5cbec72d8e",
 +            "SecondaryIPAddresses": null,
 +            "SecondaryIPv6Addresses": null,
 +            "EndpointID": "5cc996b631769af9085216ccc8ec1009c676e5033b7126612d72317482aa313c",
 +            "Gateway": "172.17.0.1",
 +            "GlobalIPv6Address": "",
 +            "GlobalIPv6PrefixLen": 0,
 +            "IPAddress": "172.17.0.2",
 +            "IPPrefixLen": 16,
 +            "IPv6Gateway": "",
 +            "MacAddress": "02:42:ac:11:00:02",
 +            "Networks": {
 +                "bridge": {
 +                    "IPAMConfig": null,
 +                    "Links": null,
 +                    "Aliases": null,
 +                    "NetworkID": "3030bfecb10961fecc8ea4930975a55e4c4a7f5bd6e36bbf6682c5b1c8896696",
 +                    "EndpointID": "5cc996b631769af90cc8e6c161ac1009c676e5033b7126612d72317482aa313c",
 +                    "Gateway": "172.17.0.1",
 +                    "IPAddress": "172.17.0.2",
 +                    "IPPrefixLen": 16,
 +                    "IPv6Gateway": "",
 +                    "GlobalIPv6Address": "",
 +                    "GlobalIPv6PrefixLen": 0,
 +                    "MacAddress": "02:42:ac:11:00:02",
 +                    "DriverOpts": null
 +                }
 +            }
 +        }
 +    }
 +]
 +</code>
 +
 +Para coger una parte de esa salida, por ejemplo, la dirección IP del contenedor:
 +
 +<code>
 +docker inspect -f='{{.NetworkSettings.IPAddress}}'  mydaemon 
 +</code>
 +
 +La sintaxis es [[https://support.smartbear.com/alertsite/docs/monitors/api/endpoint/jsonpath.html|JSONPath]].
 ==== Busybox ==== ==== Busybox ====
  
Línea 539: Línea 812:
  
  
 +===== Recursos =====
 +
 +  * https://www.redhat.com/en/interactive-labs: laboratorios gratuitos de Red Hat
 +  * https://killercoda.com: laboratorios con contenedores.
 +  * [[https://labs.play-with-docker.com/|Play with Docker]]: probar Docker desde el navegador.
 +  * [[https://dockerlabs.collabnix.com/|Getting Started with Docker]]: laboratorios guiados de Docker.
informatica/sistemas_operativos/cursos/docker_avanzado.1696875640.txt.gz · Última modificación: por tempwin