[ros-users] Givving ROS an Official DockerHub Image

Tully Foote tfoote at osrfoundation.org
Tue Feb 10 09:17:28 UTC 2015


Hi Ruffin,

That's great to see the ability to use full graphical tools inside docker.
We'll need to follow up more on that.

In the mean time I've thrown together a proof of concept of the Dockerfile
generator for bootstrapping which leverages the ongoing ros_buildfarm work.
You can see the basic script and template in this pull request. Lets move
the continuing discussion into the PR.

https://github.com/ros-infrastructure/ros_buildfarm/pull/37

Tully


On Sat, Feb 7, 2015 at 4:35 PM, Ruffin White <roxfoxpox at gmail.com> wrote:

> I made a quick video showing gazebo and rviz running inside docker.
> Check it out if your interested:
> http://www.youtube.com/watch_popup?v=djLKmDMsdxM&vq=hd1080
> The video shows some flickering with unity,
> but that's just a bug between SimpleScreenRecorder and nvidia's flip
> setting, it never shows on my display.
>
> Ruffin
>
> On Sat, Feb 7, 2015 at 4:27 AM, Ruffin White <roxfoxpox at gmail.com> wrote:
>
>> Awesome,
>>
>> I should have known you'd already added this tool to your toolbox.
>>
>> @William
>>
>> Docker can defiantly be useful for end users who what or need to use
>> graphical interfaces.
>> In fact that was one of the points I spent most of my time getting nailed
>> down before I decided I'd approach the community as I wanted a proof of
>> concept working first. If you take I look at my Dockerfile setup
>> <https://github.com/CognitiveRobotics/omnimapper/tree/master/docker>, I
>> followed OpenCog's approach, and built up a series of base images for our
>> project ranging from a simple ros desktop install all the way to a
>> functional GUI demo app, with a few degrees in between depending on whats
>> only required for my lab mates to develop in.
>>
>> The last bit in getting the x-server to play nice with my container was a
>> bit tricky, but its not hard to implement once you've got a solution. I
>> remember playing with docker-desktop, but I was a little disappointed with
>> the frame-rates using x11 forwarding over an ssh tunnel, especially  for
>> stuff like video, 3D GUI apps or any other bandwidth intensive display
>> scenarios. So I tried a different approach, similar to docker-browser-box
>> <https://github.com/sameersbn/docker-browser-box>, where instead of
>> piping the display over a network I could mount my host's xserver unix
>> socket to the container directly instead. I also have PulseAudio working
>> with this, not that my ros app uses it now, but I'm sure others certainty
>> do.
>>
>> From there you can also give the container access to graphical hardware
>> acceleration, so with a short start up script
>> <https://github.com/CognitiveRobotics/omnimapper/blob/master/docker/nvidia/run.sh>,
>> you can have gazebo using the Nvidia driver in the container to accesses
>> the Nvidia driver of the host, to use the GPU for all of the OpenGL
>> rendering. So with this, I can get the same FPS in the container as would
>> if I ran the instructions on my host's shell. This allows me to play around
>> with newer versions of gazebo without constantly breaking my host's stable
>> development environment. I think I have this working for Intel's HD
>> graphics as we'll, so I'll have push that Dockerfile and script. Maybe I
>> could post a youtube video of an example.
>>
>> @Tully
>>
>> Although I've gotten my lab's project working under an automated build
>> setup now, such that when I push new commits to the project's public
>> release repo, the web-hook for the dockerhub registry triggers, and the
>> image(s) are rebuilt using the newest source/packages, the same posses for
>> official repos looks to be a bit more involved. But there seems to be a
>> tool called Bashbrew
>> <https://github.com/docker-library/official-images/blob/master/bashbrew/README.md>
>> for automating the process.
>>
>> As an aside: I think the minimum naming isn't an issue for official repo
>> names, as they are not tagged under any user, e.x. the official PHP repo is
>> simply "php", so a repo name like "ros" should be fine there.
>>
>> I agree rosdistro is probably too busy, as it might cause some trouble
>> with all the web-hooks poking about. Could we make a new repo under ros
>> specific to just Dockerfiles, duly named "docker"?
>> Here is the list of images I had in mind so far:
>> https://github.com/ruffsl/docs/tree/master/ros
>>
>> Ruffin
>>
>>
>>
>> On Sat, Feb 7, 2015 at 12:58 AM, Tully Foote <tfoote at osrfoundation.org>
>> wrote:
>>
>>> Hi Ruffin,
>>>
>>> I think there would definitely be intest in making an official ROS repo
>>> on Docker Hub. Docker does provide a nice platform for making reproducible
>>> environments. We've been using it heavily in our next generation of the ROS
>>> buildfarm. [1]
>>>
>>> There's a minimum organization length so we've been using an osrf
>>> organization for our recent use. [2]
>>>
>>> In the new buildfarm work we have the ability to generate Dockerfiles
>>> for arbitrary combinations of ROS packages, arches, and distributions. I
>>> think leveraging that capability such that we can maintain the many
>>> Dockerfiles we would need. From that we can clean it up and make sure we
>>> meet all the requirements for an Official Repository. With the number of
>>> Dockerfiles we will need we should not be maintaining them manually and I'd
>>> suggest we setup a parallel repository into which we can generate the
>>> Dockerfiles for Dockerhub to pick up. The rosdistro repo is already super
>>> busy.
>>>
>>> Tully
>>>
>>>
>>> [1] http://wiki.ros.org/buildfarm
>>> [2] https://registry.hub.docker.com/repos/osrf/
>>>
>>>
>>>
>>> On Fri, Feb 6, 2015 at 8:50 PM, Ruffin White <roxfoxpox at gmail.com>
>>> wrote:
>>>
>>>> Hello everyone,
>>>>
>>>> I wanted to ask the community and the admins if there would be any
>>>> interest in making an official ROS repo for the Docker Hub Registry
>>>> <https://registry.hub.docker.com/>?
>>>>
>>>> I've been using ROS with Docker <https://www.docker.com/> for a while
>>>> now, and I've found it really helpful for my ROS projects. Learning how to
>>>> use Linux containers takes a bit of a learning curve but once you get a
>>>> hang of it, its like you can't stop thinking inside the container
>>>> <http://en.wikipedia.org/wiki/Thinking_outside_the_box>.
>>>>
>>>> So I've been using it as development environment tool as well as a
>>>> platform for sharing working demos, as well as the a perfect tool for
>>>> deploying apps to robots. For one of my research lab's projects,
>>>> OmniMapper
>>>> <http://www.cogrob.org/2014/05/omnimapper-modular-multimodal-mapping-framework/>, I've
>>>> been documenting my progress in our github wiki pages. I made a docker
>>>> image for the demo, allowing novices users to skip much of the tedious
>>>> build and dependency processes, and get straight to running and playing
>>>> with the project, as I explain in this tutorial
>>>> <https://github.com/CognitiveRobotics/omnimapper/wiki/Tutorial-%7C-OmniMapper-&-Docker>
>>>> .
>>>>
>>>> I have to say, I'm not the first to do this, it seem to be trending
>>>> here and there, so just to cite a few:
>>>>
>>>>    - Gernot Klingler <http://gernotklingler.com/blog/> and his a
>>>>    detailed post: How docker replaced my virtual machines and chroots
>>>>    <http://gernotklingler.com/blog/docker-replaced-virtual-machines-chroots/>,
>>>>    a guide in how to enable a container to connect to an x-server and
>>>>    graphical hardware acceleration.
>>>>    - opencog <https://github.com/opencog> with examples
>>>>    <https://github.com/opencog/ros> in the use of Docker for research
>>>>    and collaboration within the robotics community.
>>>>    - quantumobject / docker-ros-base
>>>>    <https://registry.hub.docker.com/u/quantumobject/docker-ros-base/>
>>>>
>>>> This sort of reminds me how I got into using ROS when first playing
>>>> with it in virtual machines, like these ones
>>>> <http://nootrix.com/2014/09/ros-indigo-virtual-machine/>, way back
>>>> when. But know I can get bare metal performance, mount any arbitrary
>>>> directories or hardware from my host, and keep my images tiny on disk.
>>>> Plus, I get to pick any modern Linux distro to use as a host, not just
>>>> Ubuntu.
>>>>
>>>> So I've followed the Guidelines for Creating and Documenting Official
>>>> Repositories <https://docs.docker.com/docker-hub/official_repos/>, and
>>>> have a few proposed images for both Indigo and Hydro. I have a fork of
>>>> rosdistro <https://github.com/ruffsl/rosdistro> with the necessary
>>>> Dockerfiles (just my first though on where to pull request them into), and
>>>> a fork of docker-library/docs <https://github.com/ruffsl/docs> with
>>>> the appropriate entry for ROS image conforming to the registry's standards.
>>>>
>>>> I can contact the Docker Hub admins to get the project added, I just
>>>> wanted to get in touch with the admins first and get the community's
>>>> blessing.
>>>>
>>>> Feedback welcome!
>>>>
>>>> Ruffin
>>>>
>>>> _______________________________________________
>>>> ros-users mailing list
>>>> ros-users at lists.ros.org
>>>> http://lists.ros.org/mailman/listinfo/ros-users
>>>>
>>>>
>>>
>>> _______________________________________________
>>> ros-users mailing list
>>> ros-users at lists.ros.org
>>> http://lists.ros.org/mailman/listinfo/ros-users
>>>
>>>
>>
>
> _______________________________________________
> ros-users mailing list
> ros-users at lists.ros.org
> http://lists.ros.org/mailman/listinfo/ros-users
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ros.org/pipermail/ros-users/attachments/20150210/dcbfc3ae/attachment.html>


More information about the ros-users mailing list