12.07.2021 Views

Docker for robotics

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Docker

for

robotics


Problema 1

Múltiples sistemas operativos

Problema

Replicación de ambientes

de desarrollo

Problema 2

Diferentes versiones de componentes

como bases de datos, versión del software,

máquinas virtuales

Problema 3

Configuraciones propias por proyecto


PITCH DECK V 1.0

Diferentes

soluciones,

mayores

problemas


Llega Docker!!!

y sus ballenitas ❤





Virtual Machines != Containers

Virtual Machines

Container


Una solución

incremental


Docker Hub

Docker compose

Container

Docker-Machine

Docker swarm


APPROACH 1

Instalación

Let’s

practice

APPROACH 2

Imagenes

APPROACH 3

Contenedores


APPROACH 4

Volúmenes

APPROACH 5

Redes

APPROACH 6

Docker-compose


Windows:

https://hub.docker.com/editions/community/dock

er-ce-desktop-windows/

Instalación

Linux:

https://docs.docker.com/install/linux/dockerce/ubuntu/


Verificando la instalación

$ Docker run hello-world


Imagénes

Apartir de ellas podemos crear diferentes ambientes de desarrollo


Comandos

Listar imagenes

$docker images

$docker image ls

Construir desde Dockerfile

$docker image build .

Inspeccionar una imagen

$docker image inspect <id> || <name>

Jalar una imagen de Docker Hub

$docker image pull <user>/<image-name>


Comandos

Eliminar imagenes

$docker image rm <image>

Guardar imagenes

$docker image save .


Dockerfile

Podemos crear una imagen desde

un archivo llamado Dockerfile


Estructura

FROM

La imagen base de donde vamos a

contruir una

MAINTAINER

Opcional, contiene el nombre de la

persona que mantiene la imagen

RUN

Ejecuta un commando durante la instalación

ADD

Copia un archivo del host a la imagen


Estructura

ENV

Define variables de entorno

CMD

Ejecuta commandos cuando ya halla

construido el contenedor

ENTRYPOINT

Un comando por defecto que se ejecuta cuando

el container está corriendo

WORKDIR

Este será el directorio de trabajo


Estructura

ENV

Define variables de entorno

CMD

Ejecuta commandos cuando ya halla

construido el contenedor

ENTRYPOINT

Un comando por defecto que se ejecuta cuando

el container está corriendo

WORKDIR

Este será el directorio de trabajo


Estructura

USER

Indica que usuario estará creado con el

contenedor

VOLUME

Indica el volumen que vincularemos con

el contenedor


Hagamos una build

Vamos a crear un contenedor de Ubuntu con

Apache


Contenedores

Dentro de ellas va todo el software contenido y puede ser

transportado y usado en cualquier lugar


Crear

contenedores

a partir de

imágenes


Comandos

Correr un contenedor

$docker run <image-name>

Correr contenedor en background

$docker run –d <name-image>

Modo interactivo

$docker run –it <name-image>

Redirección de puerto

$docker run –p <host-port>:<container-port> <nameimage>


Comandos

Asignar un nombre

$docker run –name <name> <image-name>

Agregar un dispositivo

Compartir volumen

$docker run --device=/dev/sdc:/dev/xvdc <name-image>

$docker run –v <host-dir>:<container-dir> <nameimage>

Agregar a una red

$docker run –-net=<network-name> <name-image>

Eliminar después de usar

$docker run –rm <image-name>


Comandos

Listar contenedores

$docker ps

Mostrar todos los contenedores

$docker ps –all

Ver el ultimo contendor

$Docker ps -l

Mostrar contenedores y sus tamaños

$docker ps -s


De los más importantes

Conectarnos a un contenedor en ejecución

$docker exec <name-image> <command>


Volumenes

Dentro de ellas va todo el software contenido y puede ser

transportado y usado en cualquier lugar


Definir un volumen

$ docker volume create --name DataVolume1

Asignar volumen a un container

Como

usarlos

$ docker run -ti --rm -v DataVolume1:/datavolume1 ubuntu

Verificar que funciona

root@28a83ef:/# echo "Example1" > /datavolume1/Example1.txt

Como usamos –.rm el contenedor se eliminará

root@28a83ef:/# exit


Inspeccionamos el volumen

$ docker volume inspect DataVolume1

Iniciamos otro contenedor y le asignamos DataVolume1

$ docker run -ti --rm -v DataVolume1:/datavolume1 ubuntu

Verificar el contenido

root@28a83ef:/# cat /datavolume1/Example1.txt


Asignarlo directamente

$ docker run -ti --rm -v c:\user\arkan:/volume1 ubuntu

Revisar si el folder existe

Volumen

entre

host-container

root@28a83ef:/# ls

Cambiar al directorio

root@28a83ef:/# cd /volumen1

Crear un nuevo archivo

root@28a83ef:/# echo “Hola desde el contenedor” > hello.txt


Salimos del contenedor

root@28a83ef:/# exit

Y revisamos si existe en nuestro host

$ cat hello.txt


Crear contenedor1 con volumen

$ docker run -ti --name=Container1 -v DataVolume1:/datavolume1 ubuntu

Generar un nuevo archive dentro del contenedor1

Volumen

entre

$ echo “Este archive viene del C1 y será compartido" > /datavolume1/Example.txt

Crear el contenedor2 con el volumen “DataVolume1”

containers

$ docker run -ti --name=Container2 --volumes-from Container1 ubuntu

Agregar texto desde el contenedor2

$ echo “Este texto va a aparecer en el archive del volumen" >>

/datavolume1/Example.txt


Revisar en ambos contenedores

Contenedor 1

root@28a83ef:/# cat /datavolume1/example.txt

Contenedor 2

root@9eabd33:/# cat /datavolume1/example.txt

Para terminar salimos de los 2 contenedores


Redes

Con ellas podemos conectar todos nuestros servicios


Tipos de redes

• Host

• Bridge

• Null

• Macvlan

• Overlay


Host

For standalone containers, remove network

isolation between the container and the

Docker host, and use the host’s networking

directly. host is only available for swarm

services on Docker 17.06 and higher.


Bridge

The default network driver. If you don’t specify

a driver, this is the type of network you are

creating. Bridge networks are usually used

when your applications run in standalone

containers that need to communicate.


None

For this container, disable all networking.

Usually used in conjunction with a custom

network driver. none is not available for swarm

services.


Overlay

Overlay networks connect multiple Docker daemons together and enable swarm services to communicate with

each other. You can also use overlay networks to facilitate communication between a swarm service and a

standalone container, or between two standalone containers on different Docker daemons. This strategy

removes the need to do OS-level routing between these containers.


Mcvlan

Macvlan networks allow you to assign a MAC address to a container, making it appear as a physical

device on your network


Conectar a una red

Conectar

$docker network connect <network> <container>

Con ipv4 fija

$docker network connect -ip <ip-address>

<network> <container>

Agregar un alias a la red

$docker network connect --alias <alias-name>

<network> <name-image>

A otro contenedor

$docker network connect --link <container-1>:<container-2>

<network> <name-image>


Crear una red

Crear la red

$docker network create

Asignar driver

$docker network create –d <driver-type> <net-name>

Rango de ip’s

$docker network create –-ip-range=<ipaddres>/<submask>

<net-name>

Crear subred

$ docker network create –-subnet=<ip-addres>/<submask> <netname>


Desconectar de una red

Desconectarse

$docker network disconnect [OPTIONS]

<NETWORK> <CONTAINER>

Forzar la desconexion

$docker network disconnect --force <NETWORK>

<CONTAINER>


Inspeccionar red

Inspeccionar una red especifica

$docker network inspect <NETWORK>

Asignar formato al resultado

$$docker network inspect –format <NETWORK>


Listar redes

$docker network ls

Eliminar redes

$docker network rm <NETWORK>


Docker Compose


Contacto

Whatsapp: +52 414 111 3020

Correo: arkantos72.lol@gmail.com

Twitter: AntonioVelaz72

GitHub: Antonio072

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!