Below are the following sections:
- Brief Image Overview - A brief overview of the images provided
- The images in detail - The next section describes this images more detailed.
- How To - This section demonstrates some use cases.
- Tag/Version Overview - Provides a full overview of the images provided and their related versions.
Provided are 3 images, which are differently tagged:
-
<version>
:
This is the runtime image. This image concludes only the libraries needed to run a FastRTPS application. -
<version>-dev
:
Use this image for developing and building FastRTPS applications. -
<version>-example
:
This image contains the eProsimas examples shipped with FastRTPS ready to use.
Where <version>
can be either latest
or the version tag of FastRTPS (v*.*.*
).
The runtime image based on Debian slim comprises runtime related libraries:
- libtinyxml2-6
- libssl1.1
- /usr/local/lib/libfastcdr.so
- /usr/local/lib/libfastrtps.so
Thus the image is as small as can be and well suited for final applications and their deployment. Only copy the binaries of an already build FastRTPS application into this image and set either CMD
or ENTRYPOINT
optionally.
The development image based on Debian slim comprises all header, libraries and tools to build FastRTPS applications or generate code:
- eProsima FastRTPS
- eProsima FastCDR
- eProsima FastRTPSGen
- Foonathan memory
- GIT
- GCC,
- G++
- CMake
- Colcon
- Gradle
- openJDK, openJRE
Thus the image is large and well suited for the development of applications but not their deployment. Use this image as builder in a multistage build, to generate code from IDL files using FastRTPSGen or build an application.
The related paths are:
- FastRTPS
- /usr/local/include/fastrtps
- /usr/local/lib/libfastrtps.so
- /usr/local/share/fastrtps
- FastCDR
- /usr/local/include/fastcdr
- /usr/local/lib/libfastcdr.so
- /usr/local/share/fastcdr
- FastRTPSGen
- /usr/local/share/fastrtpsgen/
- Foonathan memory
- /usr/local/bin/nodesize_dbg
- /usr/local/include/foonathan_memory
- /usr/local/lib/foonathan_memory
- /usr/local/lib/libfoonathan_memory-?.a
- /usr/local/share/foonathan_memory
- /usr/local/share/foonathan_memory_vendor
As the path to fastrtpsgen is set in PATH
, fastrtpsgen
can directly be used within the image.
The examples image based on the runtime image and comprises the examples which eProsima ships together with FastRTPS. As the binaries are built in a development container, this is a good demonstration how to do it and that all should work well. The examples are installed to:
/usr/local/examples/C++/
├── Benchmark
│ └── bin
│ └── Benchmark
├── ClientServerTest
│ └── bin
│ └── ClientServerTest
├── DeadlineQoSExample
│ └── bin
│ └── DeadlineQoSExample
├── DisablePositiveACKsQoS
│ └── bin
│ └── DisablePositiveACKsQoS
├── DynamicHelloWorldExample
│ └── bin
│ └── DynamicHelloWorldExample
├── FilteringExample
│ └── bin
│ └── FilteringExample
├── FlowControlExample
│ └── bin
│ └── FlowControlExample
├── HelloWorldExample
│ └── bin
│ ├── HelloWorldExample
│ └── StaticHelloWorldExample
├── HelloWorldExampleTCP
│ └── bin
│ └── HelloWorldExampleTCP
├── LifespanQoSExample
│ └── bin
│ └── LifespanQoSExample
├── LivelinessQoS
│ └── bin
│ └── LivelinessQoS
├── OwnershipStrengthQoSExample
│ └── bin
│ └── OwnershipStrengthQoSExample
├── RTPSTest_as_socket
│ └── bin
│ └── RTPSTest_as_socket
├── RTPSTest_persistent
│ └── bin
│ └── RTPSTest_persistent
├── RTPSTest_registered
│ └── bin
│ └── RTPSTest_registered
├── UseCaseDemonstrator
│ └── bin
│ ├── UseCasePublisher
│ ├── UseCaseSubscriber
│ ├── historykind
│ ├── keys
│ ├── latejoiners
│ ├── sampleconfig_controller
│ ├── sampleconfig_events
│ └── sampleconfig_multimedia
├── UserDefinedTransportExample
│ └── bin
│ └── UserDefinedTransportExample
└── XMLProfilesExample
└── bin
└── XMLProfiles
go to How to perform a multistage build?
go to How to generate code from IDL files?
To run the HelloWorldExample open a terminal, start a subscriber:
docker run --rm -it alex031544/fastrtps:latest-example /usr/local/examples/C++/HelloWorldExample/bin/HelloWorldExample subscriber
and open a second terminal and start a publisher:
docker run --rm -it alex031544/fastrtps:latest-example /usr/local/examples/C++/HelloWorldExample/bin/HelloWorldExample publisher
The complete output shall than look like this on the first terminal:
$ docker run --rm -it alex031544/fastrtps:latest-example /usr/local/examples/C++/HelloWorldExample/bin/HelloWorldExample subscriber
Unable to find image 'alex031544/fastrtps:latest-example' locally
latest-example: Pulling from alex031544/fastrtps
68ced04f60ab: Pull complete
b7ab2a749932: Pull complete
66a04b1fec19: Pull complete
7e17a648192c: Pull complete
c0b16ddf6abc: Pull complete
Digest: sha256:0b212faa46b54017f817e82e4a8a09f6d66cb5fb793b0f0897b7c3c60147ba74
Status: Downloaded newer image for alex031544/fastrtps:latest-example
Starting
Subscriber running. Please press enter to stop the Subscriber
Subscriber matched
Message HelloWorld 1 RECEIVED
Message HelloWorld 2 RECEIVED
Message HelloWorld 3 RECEIVED
Message HelloWorld 4 RECEIVED
Message HelloWorld 5 RECEIVED
Message HelloWorld 6 RECEIVED
Message HelloWorld 7 RECEIVED
Message HelloWorld 8 RECEIVED
Message HelloWorld 9 RECEIVED
Message HelloWorld 10 RECEIVED
Subscriber unmatched
and the second terminal:
$ docker run --rm -it alex031544/fastrtps:latest-example /usr/local/examples/C++/HelloWorldExample/bin/HelloWorldExample publisher
Starting
Publisher running 10 samples.
Publisher matched
Message: HelloWorld with index: 1 SENT
Message: HelloWorld with index: 2 SENT
Message: HelloWorld with index: 3 SENT
Message: HelloWorld with index: 4 SENT
Message: HelloWorld with index: 5 SENT
Message: HelloWorld with index: 6 SENT
Message: HelloWorld with index: 7 SENT
Message: HelloWorld with index: 8 SENT
Message: HelloWorld with index: 9 SENT
Message: HelloWorld with index: 10 SENT
Runtime Images | Development Images | Example Images | Base OS | FastRTPS | FastCDR | FastRTPSGen |
---|---|---|---|---|---|---|
Debian 10-slim | v2.0.1 | v1.0.15 | v1.0.4 | |||
Debian 10-slim | v2.0.1 | v1.0.15 | v1.0.4 | |||
Debian 10-slim | v2.0.0 | v1.0.14 | v1.0.4 | |||
Debian 10-slim | v1.10.0 | v1.0.13 | v1.0.4 | |||
Debian 10-slim | v1.9.4 | v1.0.13 | v1.0.3 |
I highly appreciate any contributions to this project. As a short summary here is what you could do:
- Improvements on documentation
- File issues against the project
- Open pull requests, for example
- add new version configurations
- add more examples
Any directly written content in this repository is licensed under the Apache-2.0. Software parts that are produced during the image build and resulting docker images are of course a composition of components that probably carry their own licenses.