Jump to: navigation, search

Linux Tools Project/Docker Tooling

Background

The Docker Tooling project is an effort to support Docker Containers in Eclipse. The project was started as a prototype by the Linux Tools group and has grown to be a joint work effort between the Red Hat Linux Tools Eclipse team and the Red Hat JBoss Eclipse team.

Goals

  • support management of Docker Images and Containers in Eclipse
  • support launching C/C++ applications in Docker Containers via Eclipse
  • support Linux Tools profiling in Docker Containers
  • make support accessible in package-based systems such as Fedora and possibly RHEL DTS
  • Proposed Features

Design

The tooling support uses the docker-client Java API library to communicate with the Docker daemon. At the time this project was started, there were two main Java API library efforts underway: docker-client and docker-java. As docker-client was the only one of the two to support Unix sockets (default on Linux), the choice was made.

There are two main plug-ins: org.eclipse.linuxtools.docker.core and org.eclipse.linuxtools.docker.ui which support Docker Image and Container management functionality. In the UI, there are three new views:

  1. Docker Explorer View (tree view showing Docker Connections plus their Images and Containers)
  2. Docker Images View (table view of all downloaded images for a selected connection)
  3. Docker Containers View (table view of all Containers for a selected connection (filter enabled))

Work is also underway on a CDT plug-in: org.eclipse.cdt.docker.launch which adds support for launching and debugging C/C++ applications built in the CDT into Docker Containers.

Dependencies

A full transitive closure of dependencies for docker-client may be seen at https://rgrunber.fedorapeople.org/docker-client-deps.svg

The docker-client package is made available at Eclipse through the Eclipse Orbit Project. As of Eclipse Mars M7 (May 08/2015) all dependency CQs have been approved and the dependency packages have been pushed into Orbit.

Source Code

The source for the Docker Tooling code can be found in the containers directory of the Linux Tools git repository:

User Guide

The user guide is available here.

Status

The following management functionality is working:

  • Docker Explorer View, Docker Images View, and Docker Containers View all working
  • ability to connect to Unix socket or to TCP connection (remote/local)
  • support for Linux, Mac, and Windows platforms
  • Connection support
    • create connection
    • delete connection
  • Image support
    • push image
    • pull image
    • create container from image
    • build image
    • tag image
    • remote image
    • properties view support for Image info
  • Container support
    • start container
    • stop container
    • pause container
    • unpause container
    • kill container
    • remove container
    • commit image from container
    • display logs
    • console stdin and tty support
    • properties view support for Container info
    • execute shell in a container (in the Terminal view)
  • CDT support
    • run C/C++ application in Container
    • debug C/C++ application in Container (assumes gdbserver installed in Docker Image)

Snapshot

DockerTooling05192015.png