CursosEmpresasBlogLiveConfPrecios

Datos en Docker

Clase 11 de 25 • Fundamentos de Docker 2018

Clase anteriorSiguiente clase

Contenido del curso

Introducción

  • 1
    Qué aprenderás sobre Docker

    Qué aprenderás sobre Docker

    03:11 min
  • 2
    Problemáticas del desarrollo de software profesional

    Problemáticas del desarrollo de software profesional

    06:49 min
  • 3
    Qué es Docker: containarization vs virtualization

    Qué es Docker: containarization vs virtualization

    00:00 min

Primeros pasos

  • 4
    Cómo instalar Docker

    Cómo instalar Docker

    10:13 min
  • 5
    Primeros pasos: Hola mundo y Docker Engine

    Primeros pasos: Hola mundo y Docker Engine

    03:44 min
  • 6
    Contenedores

    Contenedores

    04:54 min

Aprendiendo a usar los contenedores

  • 7
    Explorar el estado de docker

    Explorar el estado de docker

    08:42 min
  • 8
    El modo interactivo

    El modo interactivo

    08:04 min
  • 9
    Ciclo de vida de un contenedor

    Ciclo de vida de un contenedor

    07:34 min
  • 10
    Exponiendo contenedores al mundo exterior

    Exponiendo contenedores al mundo exterior

    08:20 min
  • 11
    Datos en Docker

    Datos en Docker

    Viendo ahora
  • 12
    Datos con Docker: Volumes

    Datos con Docker: Volumes

    08:51 min

Imágenes

  • 13
    Conceptos fundamentales de Docker: imágenes

    Conceptos fundamentales de Docker: imágenes

    09:54 min
  • 14
    Construyendo nuestras propias imágenes

    Construyendo nuestras propias imágenes

    09:34 min
  • 15
    Comprendiendo el sistema de capas

    Comprendiendo el sistema de capas

    07:54 min

Desarrollando con Docker

  • 16
    Usando docker para desarrollar aplicaciones

    Usando docker para desarrollar aplicaciones

    06:57 min
  • 17
    Reto

    Reto

    00:31 min
  • 18
    Entendiendo el cache de layers para estructurar correctamente tus imágenes

    Entendiendo el cache de layers para estructurar correctamente tus imágenes

    09:16 min
  • 19
    Docker networking: colaboración entre contenedores

    Docker networking: colaboración entre contenedores

    08:21 min

Docker compose

  • 20
    Docker-compose: la herramienta todo-en-uno

    Docker-compose: la herramienta todo-en-uno

    08:38 min
  • 21
    Trabajando con docker-compose

    Trabajando con docker-compose

    06:41 min
  • 22
    Docker-compose como herramienta de desarrollo

    Docker-compose como herramienta de desarrollo

    14:53 min

Docker Avanzado

  • 23
    Conceptos para imágenes productivas

    Conceptos para imágenes productivas

    11:17 min
  • 24
    Manejando docker desde un contenedor

    Manejando docker desde un contenedor

    09:41 min

Cierre

  • 25
    Cierre del curso

    Cierre del curso

    01:19 min
Tomar el examen del curso
    Schenier Aldair López Uriarte

    Schenier Aldair López Uriarte

    student•
    hace 6 años

    Para los de windows. Al lanzar el comando docker run --name db -d -v c:/User/mine/MongoData:/data/db mongo esto a lo mejor te tira algún error o no, pero el contener no está "up" y siempre te tira Exited(14). Para solucionar lo que hice fue crear un 'volumen' con el comando docker volume create --name=mongodata luego volvemos a lanzar el comando anterior pero en vez de poner la ruta de nuestra carpeta, escribimos el nombre que le hemos dado al volumen docker run --name db -d -v mongodata:/data/db mongo. Y listo, ya está todo funcionando. Ahora, ¿Dónde está esa carpeta? Pues se encuentra en C:/data. Aún tengo que probar a crear mas contenedores y otros "volúmenes" para ver si estos no interfieren en el 'bind' de otros contenedores. Decir que aún no estoy muy seguro de cómo funcionan los volúmenes, a lo mejor en vídeos posteriores lo llega a explicar. Saludos gente!

      Julian Henao Henao

      Julian Henao Henao

      student•
      hace 6 años

      gracias !

      Sebastián Palacio

      Sebastián Palacio

      student•
      hace 6 años

      Gracias!!!

    Daniel Chambi Aguilar

    Daniel Chambi Aguilar

    student•
    hace 6 años

    Segunda ejecución... persistiendo la data en el disco duro, fuera del contenedor

    • Borramos contenedor de mongo q está en ejecución
    docker rm -f db

    ahora un poco de Linux

    • Creación de un directorio/carpeta en donde se guardará la data generada por mongo
    mkdir mongodata

    Este directorio es creado en la misma ubicación desde donde ejecuta docker. Para ver la ruta completa del lugar de dónde se está ejecutando docker (q es el directorio en donde se creó también el nuevo directorio, mongodata) utilizamos:

    pwd

    El resultado obtenido lo utilizaremos para dar la ruta completa para hacer el montaje del directorio usado dentro del contenedor, sobre el directorio recientemente creado fuera del contenedor.

    Volvemos ahora a docker

    • Ejecutaremos ahora nuevamente el contendor de mongo, con el nombre db, pero además se agregará el parámetro -v para realizar el montaje: en primera instancia va el directorio externo donde se montará el directorio interno, y después de los dos puntos (:) se coloca el directorio interno q será montado en el directorio externo
    docker run --name db -d -v /Users/gvilarina/Dev/platzi/mongodata:/data/db mongo
    • Verificar si el contendor ejecutado ya está dejando sus archivos en el directorio externo (comando linux)
    ls mongodata
    • Luego de esto, repetir la creación de usuario, la inserción de datos, luego salir del bash, salir del contenedor, ,matar el contenedor, volver a levantanr el contenedor. verificar q la data esté allí. La desventaja de esta manera de persistir la información, es q,si por alguna razón, un proceso externo juega dentro del directorio creado para guardar la data de mongo, puede q este juego altere mi información.
      Liza Pamela Luque Flores

      Liza Pamela Luque Flores

      student•
      hace 5 años

      Gracias, buen aporte :)

    Daniel Chambi Aguilar

    Daniel Chambi Aguilar

    student•
    hace 6 años

    Primera ejecución de Mongo sin persistir datos en disco, sólo en el contenedor

    • Levantando contenedor de Base de Datos Mongo ignorando los inputs que pueda generar la ejecución de dicho contenedor (-d). Se colocará al contendor el nombe de db. Esto descargará el contenedor de la internet.
    docker run -d --name db mongo
    • Visualizar los logs generados al momento de ejecutar
    docker logs db
    • Ejecutamos un bash (una consola para Linux) dentro del contendedor db (mongo). Esto nos muestra que cada proceso ejecutado necesita de algunos procesos Linux, y sobre esos procesos Linux se ejecuta, en este caso, el Mongo. Todos estos procesos, tanto de Linux como de Mongo, están dentro del contenedor levantado db.
    docker exec -it db bash
    • Ya dentro del bash ingresamos al proceso (cliente mongo en modo bash/consola) mongo.
    • Creación (dentro del cliente mongo) de un usuario
    use platzi
    • Insertar un usuario en mongo
    db.users.insert({ "name": "Jenson"})
    • Listar los usuarios ingresados
    db.users.find()
    • Ahora saldremos del cliente con exit, y de la misma manera, saldremos del bash del contenedor.
    • "Matar" el contenedor mongo.
    docker rm -f db
    • Volvemos a ejecutar un nuevo contenedor de mongo con el mismo nombre db
    • Ingresar al bash del contenedor db, y luego a mongo (desde el bash)
    • Luego, crear usuario platzi y buscar los datos. No hay datos ya que, cuando se "mató" el contenedor anterior, se fue con toda la información generada.
    Manuel  Alfonso Illidge Ramírez

    Manuel Alfonso Illidge Ramírez

    student•
    hace 7 años

    Docker para Windows: Sesiones interactivas en MinTTY Git Bash
    Recientemente instalé Docker para Windows en mi computadora portátil. Cuando intenté ejecutar la docker run -it ubuntu bashdemostración predeterminada de Git Bash, me encontré con un problema que no había visto antes.

    1
    2
    $ docker run -it ubuntu bash
    the input device is not a TTY. If you are using mintty, try prefixing the command with 'winpty’
    Resulta que, siguiendo las instrucciones y prefijando el comando con winptyfunciona

    1
    2
    $ winpty docker run -it ubuntu bash
    root@88448b75631d:/#
    Sin embargo, nunca estoy satisfecho con solo solucionar un problema, así que hice más excavaciones. Resulta que el problema aquí es el uso de MinTTY para alojar el indicador de Git Bash. Si ha instalado Git para Windows, recordará la siguiente ventana de configuración.

    Configuración de Git Bash MinTTY

    Si selecciona la opción “Usar MinTTY”, su pompa de Bash se alojará en el emulador de terminal de MinTTY, en lugar de la consola CMD que se envía con Windows. El emulador de terminal MinTTY no es compatible con los programas de la consola de Windows a menos que prefieras tus comandos con winpty.

    Personalmente, prefiero la consola CMD predeterminada, especialmente en Windows 10, donde se han mejorado drásticamente las funciones como el cambio de tamaño de la ventana y la selección de texto. Si desea volver a ese modo, simplemente vuelva a ejecutar el instalador de Git para Windows y elija la opción que no sea MinTTY. Si desea seguir con MinTTY, solo tiene que prefijar sus comandos interactivos Docker (y Python, y Node, y …) con winpty.

      Ruben Dario

      Ruben Dario

      student•
      hace 7 años

      También considero una solución utilizar PowerShell que viene en las nuevas versiones de Windows 10, a mi me ha funcionado de maravilla, ya que se pueden unir resultados de comandos a través de tuberías

    Edward Orlando Hurtado

    Edward Orlando Hurtado

    student•
    hace 7 años

    En Windows 10 con la powershell tuve que usar

    docker run --name db -d -v /C/Users/Jose/mongodata:/data/db mongo
      Paolo Ricardo Ortega Ramirez

      Paolo Ricardo Ortega Ramirez

      student•
      hace 7 años

      buen dato, mi ruta al usar c:/..., como unidad de disco, estaba ingresando esos ":" que hacen conflicto con la sintaxis, ademas del "/" inicial.

      Bryam Herrera

      Bryam Herrera

      student•
      hace 5 años

      Está solución me da el mismo problema, la máquina inicia pero inmediatamente se cae.

    Amilcar Rey

    Amilcar Rey

    student•
    hace 6 años

    Para los que estuvieron probando y usaron docker for windows el path del host se pone sin el nombre del disco.

    docker run --name db -v /Docker/mongodata:/data/db mongo
      Hersson Guerrero Amésquita

      Hersson Guerrero Amésquita

      student•
      hace 6 años

      Gracias por el aporte. A mi me funcionó haciéndolo en una ruta corta cerca a la unidad inicial (c). Si le coloco una ruta mas larga, como por ejemplo el escritorio del usuario, no sostiene el contenedor encendido; en cuanto se crea se apaga.

    Carlos Andrés Charris S

    Carlos Andrés Charris S

    student•
    hace 7 años

    Crear volumenes (Persistencia) a un contenedor

    docker run -d --name <nombre del contenedor> -v <path carpeta host>:<carpeta datos contenedor> <nombre de la imagen>

    Ej: docker run -d --name mongo-db -v /Users/gdaimon/docker/mongodata:/data/db mongo

    Alexis Otaño

    Alexis Otaño

    student•
    hace 6 años

    Dejame de joder! y yo levantando maquinas virtuales! 😌

      Christian Rivera

      Christian Rivera

      student•
      hace 6 años

      El futuro es ahora, imaginate cuando aprendamos kubernetes.

    Grover Franklin Vargas Vasquez

    Grover Franklin Vargas Vasquez

    student•
    hace 6 años

    Recomiendo realice los laboratorios con este servicio gratuito https://labs.play-with-docker.com/#

      Lk Rodi

      Lk Rodi

      student•
      hace 5 años

      Muchas gracias, la verdad me he dado cuenta que trabajar docker bajo windows trae consigo un sin fin de problemas. Esta herramienta servirá mucho para el aprendizaje.

    Christian Rivera

    Christian Rivera

    student•
    hace 6 años

    Probando en windows 10 y tratar de montar una carpeta en /data/db el servidor mongo se detiene con falla 14 por falta de sincronización, pueden comprobarlo con docker logs contenedor. Probé creando un volumen con docker volume create mongodata y luego: docker run --name db -d -v mongodata:/data/db mongo, para el fin del ejercicio esto funciona ya que los datos persisten al detener o reiniciar un contenedor. Habrá que estudiar más sobre volúmenes.

      Erickson Quintana

      Erickson Quintana

      student•
      hace 6 años

      esto funciona pero no seria el ejecicio, ya que Guido lo monta en una ruta, y como lo indicas tu es un volumen, esto lo levanta correcto y no sale el erro 14

    Jose Miguel Diaz

    Jose Miguel Diaz

    student•
    hace 6 años

    Buenos días, estoy usando Windows y al tratar de ejecutar el comando docker run --name db -d -v ruta_host:/data/db mongo me crea el contenedor sin problema. El detalle esta en que el contenedor queda como "exited (14)" . Si en vez de poner /data/db pongo por ejemplo /data/lib/db si que me lo crea sin problemas.

    Adjunto los logs del error:

    PS C:\WINDOWS\system32> docker logs db 2019-08-08T08:33:00.579+0000 I CONTROL [main] Automatically disabling TLS 1.0, to force-enable TLS 1.0 specify --sslDisabledProtocols 'none' 2019-08-08T08:33:00.583+0000 I CONTROL [initandlisten] MongoDB starting : pid=1 port=27017 dbpath=/data/db 64-bit host=c707ecc47e59 2019-08-08T08:33:00.583+0000 I CONTROL [initandlisten] db version v4.0.11 2019-08-08T08:33:00.583+0000 I CONTROL [initandlisten] git version: 417d1a712e9f040d54beca8e4943edce218e9a8c 2019-08-08T08:33:00.583+0000 I CONTROL [initandlisten] OpenSSL version: OpenSSL 1.0.2g 1 Mar 2016 2019-08-08T08:33:00.583+0000 I CONTROL [initandlisten] allocator: tcmalloc 2019-08-08T08:33:00.583+0000 I CONTROL [initandlisten] modules: none 2019-08-08T08:33:00.583+0000 I CONTROL [initandlisten] build environment: 2019-08-08T08:33:00.583+0000 I CONTROL [initandlisten] distmod: ubuntu1604 2019-08-08T08:33:00.583+0000 I CONTROL [initandlisten] distarch: x86_64 2019-08-08T08:33:00.583+0000 I CONTROL [initandlisten] target_arch: x86_64 2019-08-08T08:33:00.583+0000 I CONTROL [initandlisten] options: { net: { bindIpAll: true } } 2019-08-08T08:33:00.592+0000 I STORAGE [initandlisten] wiredtiger_open config: create,cache_size=478M,session_max=20000,eviction=(threads_min=4,threads_max=4),config_base=false,statistics=(fast),log=(enabled=true,archive=true,path=journal,compressor=snappy),file_manager=(close_idle_time=100000),statistics_log=(wait=0),verbose=(recovery_progress), 2019-08-08T08:33:01.062+0000 E STORAGE [initandlisten] WiredTiger error (1) [1565253181:62098][1:0x7f7e7ea08a80], connection: __posix_open_file, 715: /data/db/WiredTiger.wt: handle-open: open: Operation not permitted Raw: [1565253181:62098][1:0x7f7e7ea08a80], connection: __posix_open_file, 715: /data/db/WiredTiger.wt: handle-open: open: Operation not permitted 2019-08-08T08:33:01.075+0000 E STORAGE [initandlisten] WiredTiger error (17) [1565253181:75544][1:0x7f7e7ea08a80], connection: __posix_open_file, 715: /data/db/WiredTiger.wt: handle-open: open: File exists Raw: [1565253181:75544][1:0x7f7e7ea08a80], connection: __posix_open_file, 715: /data/db/WiredTiger.wt: handle-open: open: File exists 2019-08-08T08:33:01.080+0000 I STORAGE [initandlisten] WiredTiger message unexpected file WiredTiger.wt found, renamed to WiredTiger.wt.1 2019-08-08T08:33:01.082+0000 E STORAGE [initandlisten] WiredTiger error (1) [1565253181:82181][1:0x7f7e7ea08a80], connection: __posix_open_file, 715: /data/db/WiredTiger.wt: handle-open: open: Operation not permitted Raw: [1565253181:82181][1:0x7f7e7ea08a80], connection: __posix_open_file, 715: /data/db/WiredTiger.wt: handle-open: open: Operation not permitted 2019-08-08T08:33:01.096+0000 E STORAGE [initandlisten] WiredTiger error (17) [1565253181:96982][1:0x7f7e7ea08a80], connection: __posix_open_file, 715: /data/db/WiredTiger.wt: handle-open: open: File exists Raw: [1565253181:96982][1:0x7f7e7ea08a80], connection: __posix_open_file, 715: /data/db/WiredTiger.wt: handle-open: open: File exists 2019-08-08T08:33:01.100+0000 I STORAGE [initandlisten] WiredTiger message unexpected file WiredTiger.wt found, renamed to WiredTiger.wt.2 2019-08-08T08:33:01.102+0000 E STORAGE [initandlisten] WiredTiger error (1) [1565253181:102853][1:0x7f7e7ea08a80], connection: __posix_open_file, 715: /data/db/WiredTiger.wt: handle-open: open: Operation not permitted Raw: [1565253181:102853][1:0x7f7e7ea08a80], connection: __posix_open_file, 715: /data/db/WiredTiger.wt: handle-open: open: Operation not permitted 2019-08-08T08:33:01.105+0000 W STORAGE [initandlisten] Failed to start up WiredTiger under any compatibility version. 2019-08-08T08:33:01.105+0000 F STORAGE [initandlisten] Reason: 1: Operation not permitted 2019-08-08T08:33:01.105+0000 F - [initandlisten] Fatal Assertion 28595 at src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.cpp 704 2019-08-08T08:33:01.105+0000 F - [initandlisten]

    ***aborting after fassert() failure

      Erickson Quintana

      Erickson Quintana

      student•
      hace 6 años

      Gracias josemdiaza eres un crack data/lib/db si que funciona lo mantiene en ejecucion el contenedor sin problemas

      Luis Urdiales

      Luis Urdiales

      student•
      hace 6 años

      Gracias, esto funciona, aunque me queda la duda de por que con la otra ruta no funcionaba.

    CRISTIAN MAURICIOO LEITON VALENCIA

    CRISTIAN MAURICIOO LEITON VALENCIA

    student•
    hace 6 años

    se puede instalar docker dentro de un contenedor?

      Juan Castro

      Juan Castro

      teacher•
      hace 6 años

      Docker dentro de docker, dockerception. :joy:

      Este artículo te puede explicar cómo funciona eso: https://weekly-geekly-es.github.io/articles/477464/index.html.

      (por cierto, para qué lo necesitas?)

    Luis Jeanpier Monserrate

    Luis Jeanpier Monserrate

    student•
    hace 6 años

    para los que usan docker toolbox, recuerden que en realidad estan usando una máquina virtual en virtualbox para correr el daemon de docker, por lo cual no les va a aparecer en los directorios de su máquina principal los archivos del vólumen, el directorio que le pasamos al flag "-v" debe ser uno de la máquina virtual, me puse a buscar como relacionar mi máquina virtual con mi principal y encontré lo que parece ser una carpeta compartida entre ambas, se llama host_mnt, entonces como ruta del flag "-v" se pondria "/host_mnt/c/temp/mongo-data:/data/db". al final cree el contenedor de la siguiente forma: docker run --name db4 -d -v /host_mnt/c/temp/mongo-data:/data/db mongo

    espero les sirva a los que tengan estos problemas, a mi me sirvió

      Luis Jeanpier Monserrate

      Luis Jeanpier Monserrate

      student•
      hace 6 años

      corrijo el término apropiado no es volumen sino bind mounts

    Jorge Mojica Huerta

    Jorge Mojica Huerta

    student•
    hace 6 años

    Para windows: docker run --name db -d -v C:/MyRoute/mongodata:/data/db mongo

    Intercambie las diagonales de "&quot; por "/" y se ejecuto correctamente, pero el status no queda en UP sino que queda en Exited(14). Si a alguien le paso y sabe como corregirlo o por decirme en que me equivoque se lo agradecería.

    Gustavo Wilgenhoff

    Gustavo Wilgenhoff

    student•
    hace 6 años

    Con Windows 10 no pude iniciar el contenedor montando un volumen asociado a una carpeta. Tuve que crear primero un volumen de Docker.

    docker volume create --name=mongodata docker run --name db -d -v mongodata:/data/db mongo
      Carlos Frostte

      Carlos Frostte

      student•
      hace 6 años

      Creo que con esto, lo que se está haciendo es montar un volumen en el sistema de archivos de la docker-machine.

      Erickson Quintana

      Erickson Quintana

      student•
      hace 6 años

      Esto funciona, pero no es el ejercico, yo hice el montaje lo ejecuta pero se cae y sale un error 14 en el dashboard, algo falta aqui lo que no entiendo

    Mitchell Sierralta Valdivia

    Mitchell Sierralta Valdivia

    student•
    hace 6 años

    Para los que usamos Window$: Recuerden activar primero el File Sharing en la configuración de docker. Luego como dicen otros comentarios en ves de usar C:\MyPrivateFolder\mongodata:/data/db usan /D/MyPrivateFolder/mongodata:/data/db

    mas info: https://docs.docker.com/docker-for-windows/troubleshoot/#volume-mounting-requires-shared-drives-for-linux-containers

    Gustavo Adolfo Ramírez Apache

    Gustavo Adolfo Ramírez Apache

    student•
    hace 7 años

    Na que frustrantre si logro que se cree la data en la carpeta local no corre el contenedor, si corre el contenedor no crea la dataq que rayos pasa?

      Nicolás Díaz

      Nicolás Díaz

      student•
      hace 7 años

      idem

    kevin velasco

    kevin velasco

    student•
    hace 7 años

    Para usuarios de windows me a funcionado de la siguiente manera

    docker run --name db -d -v C:\Users\nombreusuario\mongodata:/data/db mongo
    Carlos Frostte

    Carlos Frostte

    student•
    hace 6 años

    Dejo esto por aca arriba si están usando Windows lo más probable es que:

    1. No puedan usar /d:/rutaX:rutaY en el comando sino más bien /d/rutaX:rutaY, es decir, sin los dos puntos en la ruta nuestra, para que la consola no se confunda.
    2. Y por lo dicho en el punto anterior, tampoco podrán usar $pwd:/rutaY
    3. Si usan Docker Toolbox, por más que la info del contenedor diga que el "bind" está montado en nuestro sistema de archivos, eso puede que no sea cierto; es decir: en realidad se monta un volumen en la máquina virtual que docker.
    4. Y por lo anterior, en las siguientes clases, cada vez que usen -v en el comando esperaran que los archivos que cambien en su disco lo tome el contenedor, pero eso no va a suceder.

    Si alguien sabe alguna alternativa para solucionar lo que sucede en los puntos 3 y 4, estaria bueno que lo compartiera; yo ya probe compartir la carpeta con VirtualBox, pero no da resultado.

    Fanor Camacho

    Fanor Camacho

    student•
    hace 6 años

    windows:

    docker run --name db3 -d -v /data:/data/db mongo```

Escuelas

  • Desarrollo Web
    • Fundamentos del Desarrollo Web Profesional
    • Diseño y Desarrollo Frontend
    • Desarrollo Frontend con JavaScript
    • Desarrollo Frontend con Vue.js
    • Desarrollo Frontend con Angular
    • Desarrollo Frontend con React.js
    • Desarrollo Backend con Node.js
    • Desarrollo Backend con Python
    • Desarrollo Backend con Java
    • Desarrollo Backend con PHP
    • Desarrollo Backend con Ruby
    • Bases de Datos para Web
    • Seguridad Web & API
    • Testing Automatizado y QA para Web
    • Arquitecturas Web Modernas y Escalabilidad
    • DevOps y Cloud para Desarrolladores Web
  • English Academy
    • Inglés Básico A1
    • Inglés Básico A2
    • Inglés Intermedio B1
    • Inglés Intermedio Alto B2
    • Inglés Avanzado C1
    • Inglés para Propósitos Específicos
    • Inglés de Negocios
  • Marketing Digital
    • Fundamentos de Marketing Digital
    • Marketing de Contenidos y Redacción Persuasiva
    • SEO y Posicionamiento Web
    • Social Media Marketing y Community Management
    • Publicidad Digital y Paid Media
    • Analítica Digital y Optimización (CRO)
    • Estrategia de Marketing y Growth
    • Marketing de Marca y Comunicación Estratégica
    • Marketing para E-commerce
    • Marketing B2B
    • Inteligencia Artificial Aplicada al Marketing
    • Automatización del Marketing
    • Marca Personal y Marketing Freelance
    • Ventas y Experiencia del Cliente
    • Creación de Contenido para Redes Sociales
  • Inteligencia Artificial y Data Science
    • Fundamentos de Data Science y AI
    • Análisis y Visualización de Datos
    • Machine Learning y Deep Learning
    • Data Engineer
    • Inteligencia Artificial para la Productividad
    • Desarrollo de Aplicaciones con IA
    • AI Software Engineer
  • Ciberseguridad
    • Fundamentos de Ciberseguridad
    • Hacking Ético y Pentesting (Red Team)
    • Análisis de Malware e Ingeniería Forense
    • Seguridad Defensiva y Cumplimiento (Blue Team)
    • Ciberseguridad Estratégica
  • Liderazgo y Habilidades Blandas
    • Fundamentos de Habilidades Profesionales
    • Liderazgo y Gestión de Equipos
    • Comunicación Avanzada y Oratoria
    • Negociación y Resolución de Conflictos
    • Inteligencia Emocional y Autogestión
    • Productividad y Herramientas Digitales
    • Gestión de Proyectos y Metodologías Ágiles
    • Desarrollo de Carrera y Marca Personal
    • Diversidad, Inclusión y Entorno Laboral Saludable
    • Filosofía y Estrategia para Líderes
  • Diseño de Producto y UX
    • Fundamentos de Diseño UX/UI
    • Investigación de Usuarios (UX Research)
    • Arquitectura de Información y Usabilidad
    • Diseño de Interfaces y Prototipado (UI Design)
    • Sistemas de Diseño y DesignOps
    • Redacción UX (UX Writing)
    • Creatividad e Innovación en Diseño
    • Diseño Accesible e Inclusivo
    • Diseño Asistido por Inteligencia Artificial
    • Gestión de Producto y Liderazgo en Diseño
    • Diseño de Interacciones Emergentes (VUI/VR)
    • Desarrollo Web para Diseñadores
    • Diseño y Prototipado No-Code
  • Contenido Audiovisual
    • Fundamentos de Producción Audiovisual
    • Producción de Video para Plataformas Digitales
    • Producción de Audio y Podcast
    • Fotografía y Diseño Gráfico para Contenido Digital
    • Motion Graphics y Animación
    • Contenido Interactivo y Realidad Aumentada
    • Estrategia, Marketing y Monetización de Contenidos
  • Desarrollo Móvil
    • Fundamentos de Desarrollo Móvil
    • Desarrollo Nativo Android con Kotlin
    • Desarrollo Nativo iOS con Swift
    • Desarrollo Multiplataforma con React Native
    • Desarrollo Multiplataforma con Flutter
    • Arquitectura y Patrones de Diseño Móvil
    • Integración de APIs y Persistencia Móvil
    • Testing y Despliegue en Móvil
    • Diseño UX/UI para Móviles
  • Diseño Gráfico y Arte Digital
    • Fundamentos del Diseño Gráfico y Digital
    • Diseño de Identidad Visual y Branding
    • Ilustración Digital y Arte Conceptual
    • Diseño Editorial y de Empaques
    • Motion Graphics y Animación 3D
    • Diseño Gráfico Asistido por Inteligencia Artificial
    • Creatividad e Innovación en Diseño
  • Programación
    • Fundamentos de Programación e Ingeniería de Software
    • Herramientas de IA para el trabajo
    • Matemáticas para Programación
    • Programación con Python
    • Programación con JavaScript
    • Programación con TypeScript
    • Programación Orientada a Objetos con Java
    • Desarrollo con C# y .NET
    • Programación con PHP
    • Programación con Go y Rust
    • Programación Móvil con Swift y Kotlin
    • Programación con C y C++
    • Administración Básica de Servidores Linux
  • Negocios
    • Fundamentos de Negocios y Emprendimiento
    • Estrategia y Crecimiento Empresarial
    • Finanzas Personales y Corporativas
    • Inversión en Mercados Financieros
    • Ventas, CRM y Experiencia del Cliente
    • Operaciones, Logística y E-commerce
    • Gestión de Proyectos y Metodologías Ágiles
    • Aspectos Legales y Cumplimiento
    • Habilidades Directivas y Crecimiento Profesional
    • Diversidad e Inclusión en el Entorno Laboral
    • Herramientas Digitales y Automatización para Negocios
  • Blockchain y Web3
    • Fundamentos de Blockchain y Web3
    • Desarrollo de Smart Contracts y dApps
    • Finanzas Descentralizadas (DeFi)
    • NFTs y Economía de Creadores
    • Seguridad Blockchain
    • Ecosistemas Blockchain Alternativos (No-EVM)
    • Producto, Marketing y Legal en Web3
  • Recursos Humanos
    • Fundamentos y Cultura Organizacional en RRHH
    • Atracción y Selección de Talento
    • Cultura y Employee Experience
    • Gestión y Desarrollo de Talento
    • Desarrollo y Evaluación de Liderazgo
    • Diversidad, Equidad e Inclusión
    • AI y Automatización en Recursos Humanos
    • Tecnología y Automatización en RRHH
  • Finanzas e Inversiones
    • Fundamentos de Finanzas Personales y Corporativas
    • Análisis y Valoración Financiera
    • Inversión y Mercados de Capitales
    • Finanzas Descentralizadas (DeFi) y Criptoactivos
    • Finanzas y Estrategia para Startups
    • Inteligencia Artificial Aplicada a Finanzas
    • Domina Excel
    • Financial Analyst
    • Conseguir trabajo en Finanzas e Inversiones
  • Startups
    • Fundamentos y Validación de Ideas
    • Estrategia de Negocio y Product-Market Fit
    • Desarrollo de Producto y Operaciones Lean
    • Finanzas, Legal y Fundraising
    • Marketing, Ventas y Growth para Startups
    • Cultura, Talento y Liderazgo
    • Finanzas y Operaciones en Ecommerce
    • Startups Web3 y Blockchain
    • Startups con Impacto Social
    • Expansión y Ecosistema Startup
  • Cloud Computing y DevOps
    • Fundamentos de Cloud y DevOps
    • Administración de Servidores Linux
    • Contenerización y Orquestación
    • Infraestructura como Código (IaC) y CI/CD
    • Amazon Web Services
    • Microsoft Azure
    • Serverless y Observabilidad
    • Certificaciones Cloud (Preparación)
    • Plataforma Cloud GCP

Platzi y comunidad

  • Platzi Business
  • Live Classes
  • Lanzamientos
  • Executive Program
  • Trabaja con nosotros
  • Podcast

Recursos

  • Manual de Marca

Soporte

  • Preguntas Frecuentes
  • Contáctanos

Legal

  • Términos y Condiciones
  • Privacidad
  • Tyc promociones
Reconocimientos
Reconocimientos
Logo reconocimientoTop 40 Mejores EdTech del mundo · 2024
Logo reconocimientoPrimera Startup Latina admitida en YC · 2014
Logo reconocimientoPrimera Startup EdTech · 2018
Logo reconocimientoCEO Ganador Medalla por la Educación T4 & HP · 2024
Logo reconocimientoCEO Mejor Emprendedor del año · 2024
De LATAM conpara el mundo
YoutubeInstagramLinkedInTikTokFacebookX (Twitter)Threads