Saltar a contenido

Docker#

Instalar Docker#

Comandos Docker#

Notas:

  • Donde figura :TAG, suele ser opcional, por defecto es :latest.
  • Según URL, tendrás configurado unos permisos. Para autentificarse, puede ser necesario docker login URL (donde URL es opcional y por defecto es para )

Descargar image#

Descargar image ya creada y subida:

docker pull IMAGE_SOURCE:TAG

Listar images:

docker image ls

Crear y subir image#

Crear image (pon lo que quieras en NAME_IMAGE):

docker build -t NAME_IMAGE:TAG -f ./Dockerfile .

Asociar nueva tag a image existente (p.ej. para añadir una URL que sirva de prefijo y así poder subir vía docker push),

docker tag SOURCE_IMAGE:TAG TARGET_IMAGE:TAG

Subir image:

docker push IMAGE:TAG

Si subes a , dentro de GitHub aparecerá como paquete y podrás asociarlo a un repositorio vía interfaz web (técnicamente, configurar org.opencontainers.image.source).

Ejecucción#

Nótese que todos los ejemplos se muestran con /bin/bash, pero puede omitirse si existe comando por defecto, o modificarse en caso de ser necesario.

docker run -it --rm IMAGE:TAG /bin/bash
docker run -it --rm -e DISPLAY=${DISPLAY} -v /tmp/.X11-unix:/tmp/.X11-unix:rw IMAGE:TAG /bin/bash

Parámetros adicionales (véase https://docs.docker.com/engine/reference/commandline/run/):

  • --network host para comunicaciones en red
  • -e ENV_VAR=valor para variables de entorno
  • -v o --volume (separado por : si difiere en origen destino; p.ej. --volume /home/<USERNAME>/.vimrc:/home/<USERNAME>/.vimrc)

Ejecucción vía rocker#

Útil para gráficos y comunicaciones. Genera imagen cuasi-clon, que en la práctica ocupa sólo MBs en disco.

  • Con NVIDIA:

    rocker --home --user --nvidia --x11 --privileged IMAGE:TAG /bin/bash
    

  • Con intel integrated graphics support:

    rocker --home --user --devices /dev/dri/card0 --x11 --privileged IMAGE:TAG /bin/bash
    

Parámetros adicionales:

  • Se pueden emplear los de Docker de la sección anterior
  • --volume (-v):
    • La sintaxis cambia, se omite : y se pone -- al final. El ejemplo anterior resulta en: --volume /home/<USERNAME>/.vimrc /home/<USERNAME>/.vimrc --
    • No suele hacer falta si se está usando --home --user

Conectarse a container#

Listar containers:

docker container ls

Sustituye CONTAINER_ID por el hash corresponiente:

docker exec -it CONTAINER_ID /bin/bash

Limpieza#

Eliminar todo (images y containers):

docker system prune -a

Algunos images buenos#

En https://hub.docker.com salvo que se indique otro (e.g. https://ghcr.io de GitHub).

Public#

REPOSITORY TAG SIZE Comments
ghcr.io/roboticslab-uc3m/teo-demos-misc latest ~4 GB TEO OpenRAVE+YARP+Kinematics+...
cielavenir/openrave jammy ~3 GB OpenRAVE
palroboticssl/tiago_tutorials melodic ~5 GB TIAGo, Gazebo, ROS (sin distro PAL)
stephanecaron/lipm_walking_controller latest ~3 GB Choreonoid

Private#

REPOSITORY TAG SIZE Comments
ghcr.io/roboticslab-uc3m/roboasset-demo latest ~3 GB KukaIiwa+ROS2
ghcr.io/roboticslab-uc3m/tiago-2021-accessrobot latest ~5 GB TIAGo, Gazebo, ROS (sin distro PAL)
gitlab.com/pal-robotics/.../dockers/container_registry/... latest ~2 GB TIAGo, Gazebo, ROS (con Ferrum/Gallium)

Aún más#

Con visibilidad público/privado según permisos/login:

Más recursos#