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

06 Tu Equipo de Cómputo

xihh87
June 08, 2020
44

06 Tu Equipo de Cómputo

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

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