Upgrade to Pro — share decks privately, control downloads, hide ads and more …

06 Tu Equipo de Cómputo

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for xihh87 xihh87
June 08, 2020
53

06 Tu Equipo de Cómputo

Sexto módulo de la primera edición del curso «Bioinformática Aplicada a Tu Proyecto».

Avatar for xihh87

xihh87

June 08, 2020
Tweet

Transcript

  1. Si haces sencillo que otras personas ejecuten tu análisis también

    será fácil para ti. • Funciona en otra computadora. 4
  2. Si haces sencillo que otras personas ejecuten tu análisis también

    será fácil para ti. • Funciona en otra computadora. • No funciona fuera del curso. 4
  3. Si haces sencillo que otras personas ejecuten tu análisis también

    será fácil para ti. • Funciona en otra computadora. • No funciona fuera del curso. • Yo futuro olvidó en 2 semanas. 4
  4. Si haces sencillo que otras personas ejecuten tu análisis también

    será fácil para ti. • Funciona en otra computadora. • No funciona fuera del curso. • Yo futuro olvidó en 2 semanas. • Documentación, bitácora, control de versiones 4
  5. Si haces sencillo que otras personas ejecuten tu análisis también

    será fácil para ti. • Funciona en otra computadora. • No funciona fuera del curso. • Yo futuro olvidó en 2 semanas. • Documentación, bitácora, control de versiones • Automatización 4
  6. Si haces sencillo que otras personas ejecuten tu análisis también

    será fácil para ti. • Funciona en otra computadora. • No funciona fuera del curso. • Yo futuro olvidó en 2 semanas. • Documentación, bitácora, control de versiones • Automatización • 4
  7. Especificar el software usado es un paso en favor de

    la reproducibilidad (Fehr et al. 2016) • Documenta el software. 5
  8. Especificar el software usado es un paso en favor de

    la reproducibilidad (Fehr et al. 2016) • Documenta el software. • Puedes versionar. 5
  9. Especificar el software usado es un paso en favor de

    la reproducibilidad (Fehr et al. 2016) • Documenta el software. • Puedes versionar. • Puedes usarlo en cualquier lado. 5
  10. Especificar el software usado es un paso en favor de

    la reproducibilidad (Fehr et al. 2016) • Documenta el software. • Puedes versionar. • Puedes usarlo en cualquier lado. • Conviene empezar tu proyecto especificando el entorno (Bull 2016). 5
  11. Existen varias alternativas para instalar tu software y usarlo en

    cualquier computadora. • Sistemas de configuración (ansible, terraform, …). 6
  12. Existen varias alternativas para instalar tu software y usarlo en

    cualquier computadora. • Sistemas de configuración (ansible, terraform, …). • Máquinas virtuales (vagrant, VirtualBox, …). 6
  13. Existen varias alternativas para instalar tu software y usarlo en

    cualquier computadora. • Sistemas de configuración (ansible, terraform, …). • Máquinas virtuales (vagrant, VirtualBox, …). • Contenedores (docker, singularity, …). 6
  14. Elegimos los contenedores (docker) porque: • El espacio en disco

    es barato. • Es autocontenido. • Funciona en muchos lugares. 7
  15. Elegimos los contenedores (docker) porque: • El espacio en disco

    es barato. • Es autocontenido. • Funciona en muchos lugares. • Contenedores listos para usar. 7
  16. Elegimos los contenedores (docker) porque: • El espacio en disco

    es barato. • Es autocontenido. • Funciona en muchos lugares. • Contenedores listos para usar. • Podemos construirlas desde GitLab. 7
  17. Configurar docker para funcionar desde /home: • Hacer un directorio

    para docker. $ sudo mkdir -p /home/docker 8
  18. Configurar docker para funcionar desde /home: • Hacer un directorio

    para docker. $ sudo mkdir -p /home/docker • Borrar todo lo que docker está usando. $ docker ps -aq | xargs docker rm $ docker image ls -q | xargs docker image rm $ sudo rm -rf /var/lib/docker 8
  19. Configurar docker para funcionar desde /home: • Hacer un directorio

    para docker. $ sudo mkdir -p /home/docker • Borrar todo lo que docker está usando. $ docker ps -aq | xargs docker rm $ docker image ls -q | xargs docker image rm $ sudo rm -rf /var/lib/docker • Acomodar docker en el directorio que hicimos $ sudo ln -s /home/docker /var/lib/docker 8
  20. Es bueno usar imágenes pequeñas para nuestros experimentos (“Best Prac-

    tices for Writing Dockerfiles” 2020). • Para compilar usar un contenedor temporal. 9
  21. Es bueno usar imágenes pequeñas para nuestros experimentos (“Best Prac-

    tices for Writing Dockerfiles” 2020). • Para compilar usar un contenedor temporal. • Usar la menor cantidad de pasos. 9
  22. Es bueno usar imágenes pequeñas para nuestros experimentos (“Best Prac-

    tices for Writing Dockerfiles” 2020). • Para compilar usar un contenedor temporal. • Usar la menor cantidad de pasos. • Borrar archivos que agregaste. 9
  23. Actividad 1: Buscar o construir una imagen que funcione •

    Buscar la imagen. $ docker search mi-programa NAME DESCRIPTION STARS OFFICIAL pici/mi-programa Docker imag… 1 zlskidmore/mi-programa Docker imag… 1 cbcrg/mi-programa-nf A nextflow … 1 10
  24. Actividad 1: Buscar o construir una imagen que funcione •

    Buscar la imagen. $ docker search mi-programa NAME DESCRIPTION STARS OFFICIAL pici/mi-programa Docker imag… 1 zlskidmore/mi-programa Docker imag… 1 cbcrg/mi-programa-nf A nextflow … 1 • Verificar la imagen en https://hub.docker.com/r/${imagen-de-docker} (p.e https://hub.docker.com/r/pici/mi-programa) 10
  25. Actividad 1: Buscar o construir una imagen que funcione •

    Si nos convence alguna, descargarla: $ docker pull pici/mi-programa 11
  26. Actividad 1: Buscar o construir una imagen que funcione •

    Si nos convence alguna, descargarla: $ docker pull pici/mi-programa • En caso contrario: Hacer una. $ $EDITOR Dockerfile $ docker build . | tee $(date -Is).log | less 11
  27. A veces instalar software es frustrante porque nos enfrentamos a

    estos problemas: • El software no está en repositorios. 12
  28. A veces instalar software es frustrante porque nos enfrentamos a

    estos problemas: • El software no está en repositorios. • No está documentado el proceso. 12
  29. A veces instalar software es frustrante porque nos enfrentamos a

    estos problemas: • El software no está en repositorios. • No está documentado el proceso. • No existe makefile. 12
  30. A veces instalar software es frustrante porque nos enfrentamos a

    estos problemas: • El software no está en repositorios. • No está documentado el proceso. • No existe makefile. • No tenemos instaladas las dependencias. 12
  31. A veces instalar software es frustrante porque nos enfrentamos a

    estos problemas: • El software no está en repositorios. • No está documentado el proceso. • No existe makefile. • No tenemos instaladas las dependencias. • Error en el código. 12
  32. Si el software no está en repositorios hay que descargarlo

    y compilarlo. • Puedes descargar el software directamente en el Dockerfile: FROM python:3.9.0b1-alpine3.12 ADD https://github.com/…/kallisto/…/v0.46.0.tar.gz /tmp 16
  33. Si el software no está en repositorios hay que descargarlo

    y compilarlo. • Puedes descargar el software directamente en el Dockerfile: FROM python:3.9.0b1-alpine3.12 ADD https://github.com/…/kallisto/…/v0.46.0.tar.gz /tmp • Puedes usar un gestor de software de un lenguaje: FROM python:3.9.0b1-alpine3.12 RUN pip install kb-python 16
  34. Las dependencias no instaladas pueden buscarse en la página de

    la dis- tribución o el gestor de paquetes que usas. 17
  35. Las dependencias no instaladas pueden buscarse en la página de

    la dis- tribución o el gestor de paquetes que usas. 18
  36. Las dependencias no instaladas pueden buscarse en la página de

    la dis- tribución o el gestor de paquetes que usas. 19
  37. Las dependencias no instaladas pueden buscarse en la página de

    la dis- tribución o el gestor de paquetes que usas. 20
  38. Podemos guardar versiones de nuestras imágenes y construirlas automáti- camente:

    • Configurar .gitlab-ci.yml. • Generar Dockerfile. 22
  39. Actividad 2: Si no encontraste un buen contenedor para tu

    software, hacer un Dockerfile FROM [imagen]:[versión] RUN [comandos para instalar tu software] https://docs.docker.com/engine/reference/builder/ https://docs.docker.com/develop/develop-images/dockerfile_best- practices/ 23
  40. Actividad 3: configurar gitlab para construir tu imagen de docker:

    • Copiar el archivo que voy a mandar en el verificador de configuración del repositorio. image: docker:19.03.8 variables: # Connect docker and docker-dind, see # https://docs.gitlab.com/ee/ci/docker/using_docker_bui DOCKER_TLS_CERTDIR: ”/certs” IMAGEN: $CI_REGISTRY_IMAGE/nombre:$CI_COMMIT_REF_SLUG […] 24
  41. Actividad 3: configurar gitlab para construir tu imagen de docker:

    • Copiar el archivo que voy a mandar en el verificador de configuración del repositorio. image: docker:19.03.8 variables: # Connect docker and docker-dind, see # https://docs.gitlab.com/ee/ci/docker/using_docker_bui DOCKER_TLS_CERTDIR: ”/certs” IMAGEN: $CI_REGISTRY_IMAGE/nombre:$CI_COMMIT_REF_SLUG […] • Cuando el verificador diga que está bien, copiar el archivo en tu repositorio. 24
  42. El material de este módulo está basado en: “Best Practices

    for Writing Dockerfiles.” 2020. Docker Documentation. June 3, 2020. https://docs.docker.com/develop/develop-images/dockerfile_best- practices/. Bull, Peter. 2016. “Data Analysis Is a DAG.” April 23, 2016. https://drivendata.github.io/cookiecutter-data-science/#build-from-the- environment-up. Fehr, Jörg, Jan Heiland, Christian Himpe, Jens Saak, and 1 Institute of Engineering and Computational Mechanics at the University of Stuttgart, Pfaffenwaldring 9, D-70569 Stuttgart, Germany. 2016. “Best Practices for Replicability, Reproducibility and Reusability of Computer-Based Experiments Exemplified by Model Reduction Software.” AIMS Mathematics 1 (3): 261–81. https://doi.org/10.3934/math.2016.3.261. 25