|
||
---|---|---|
.. | ||
build_cyclonedds.sh | ||
build_docker_image.sh | ||
Dockerfile | ||
DockerfileCycloneDds | ||
README.md |
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 quickly 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.
NOTE : cyclonedds:latest depends on image ubuntu:cyclonedds. You need to build ubuntu:cyclonedds first, if you want to use cyclonedds:latest.
- 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 --workdir /cyclonedds/build/bin cyclonedds:latest /bin/bash
This will open terminal connected to docker @ bin of the project, which contains sample applications. It will look something like this
root@22ff409a33e1:/cyclonedds/build/bin#
- From here you can 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 --workdir /cyclonedds/build/bin 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.