cyclonedds/scripts/docker
Prasanna Bhat 8776c3213b Add README.md, which describes the usage of docker scripts
Signed-off-by: Prasanna Bhat <prasanna.yoga@gmail.com>
2020-05-12 06:49:34 +05:30
..
build_cyclonedds.sh Add README.md, which describes the usage of docker scripts 2020-05-12 06:49:34 +05:30
build_docker_image.sh Add build scripts & docker scripts 2020-05-12 06:48:09 +05:30
Dockerfile Add build scripts & docker scripts 2020-05-12 06:48:09 +05:30
DockerfileCycloneDds Add build scripts & docker scripts 2020-05-12 06:48:09 +05:30
README.md Add README.md, which describes the usage of docker scripts 2020-05-12 06:49:34 +05:30

Overview

This contains helper scripts to build & run cyclonedds core & example applications in docker.
Additionally you can also build a docker image with pre-built cyclonedds examples. This could be useful in quikly trying the examples (both IPC & network communication).

Bulid docker image

There are two docker images you can build.

  • ubuntu:cyclonedds : ubuntu bionic based image that contains dependencies to build cyclonedds.
  • cyclonedds:latest : ubuntu bionic based image with pre-built cyclonedds core & applications (based on the checked out revision).

How to build the images

Pre-requisites

  • Linux machine (native / runnin inside VM)
  • Docker (I have tested with 19.03.8, however past versions also would work, as there is no specific dependency)

Steps

You can use the helper script ./scripts/docker/build_docker_image.sh to build the docker images.

  • Navigate to root of the project.
  • Run the script with -h to display usage.
./scripts/docker/build_docker_image.sh [images]

The following images are supported.
ubuntu : Same as ubuntu:cyclonedds , mentioned above.
cyclonedds : Same as cyclonedds:latest, mentioned above.
You can run the script with -h option to display usage information.

  • Build cyclonedds core & examples (if you are using ubuntu:cyclonedds) Use the helper script ./scripts/docker/build_cyclonedds.sh to build using the currently checked out revision.
    NOTE : You need to run this script from the root of the project.

Run cyclonedds examples in docker

You can use either of the above docker images to run the examples.
If you use ubuntu:cyclonedds, you need to build cyclonedds inside container to build examples. Once you have built the cyclonedds , you are ready to run the examples inside docker container.

Let's do that !

Run examples inside the same container (uses IPC)

  • Launch docker container, from the root of the project docker run --name cyclonedds -it -v $(pwd):/cyclonedds --workdir /cyclonedds cyclonedds:latest /bin/bash This will open terminal connected to docker @ root of the project.
    It will look something like this
root@22ff409a33e1:/cyclonedds# 
  • Navigate to /build/bin to run the example applications.
  • To run another terminal , connected to same docker container, use the following command.
docker exec -it cyclonedds /bin/bash

Run the partner example here. This will establish communication over IPC channel.

Run examples in different containers (uses docker networking)

  • Follow the same steps as in the previous section , instead connecting to existing docker container create a new docker container. e.g.
    docker run --name cyclonedds1 -it -v $(pwd):/cyclonedds --workdir /cyclonedds cyclonedds:latest /bin/bash
    NOTE : You need to run this script from the root of the project.
    At this point you can inspect the traffic using wireshark.
    Open docker network interface (docker0 on my system) in wireshark.
    Good news is that wireshark has RTPS dissector.