Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

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
  • be part of Eclipse Mars release
  • make support accessible in package-based systems such as Fedora and possibly RHEL DTS

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

The docker-client package currently selected: 2.7.18 has a number of dependencies not currently in Eclipse. At the moment, the Linux Tools group is working to push all needed dependencies into Orbit. The following CQs are opened and the following status: (April 17/2015):

  • 9119 approved P3 new emo-ip-... RESO FIXE hk2-locator Version: 2.3.0
  • 9104 approved P3 unde emo-ip-... RESO FIXE jackson-dataformat-yaml Version: 2.5.0
  • 9112 approved P3 new emo-ip-... RESO FIXE jersey-guava Version: 2.14 (PB Orbit CQ 9031)
  • 9103 approved P3 awai emo-ip-... RESO FIXE jackson-core Version: 2.5.0
  • 9111 approved P3 awai emo-ip-... RESO FIXE jersey-common Version: 2.14
  • 9102 approved P3 awai emo-ip-... RESO FIXE jackson-annotations Version: 2.5.0
  • 9420 approved P3 new emo-ip-... RESO FIXE SLF4J API Version: 1.7.6 (PB CQ7927)
  • 9110 approved P3 new emo-ip-... RESO FIXE jersey-apache-connector Version: 2.14
  • 9116 approved P3 new emo-ip-... RESO FIXE hk2-utils Version: 2.3.0
  • 9101 approved P3 awai emo-ip-... RESO FIXE jackson-databind Version: 2.5.0
  • 9419 approved P3 awai emo-ip-... RESO FIXE Google Guava Version: 17.0
  • 9109 approved P3 new emo-ip-... RESO FIXE jersey-client Version: 2.14
  • 9456 approved P3 new emo-ip-... RESO FIXE javax.ws.rs Version: 2.0.1 (Subset Spec License Removed)
  • 9115 approved P3 new emo-ip-... RESO FIXE hk2-osgi-resourcelocator Version: 2.3.0
  • 9100 approved P3 new emo-ip-... RESO FIXE jackson-datatype-guava Version: 2.5.0
  • 9418 approved P3 new emo-ip-... RESO FIXE commons-compress Version: 1.8.1
  • 9106 approved P3 new emo-ip-... RESO FIXE jackson-jaxrs-base Version: 2.5.0
  • 9114 approved P3 new emo-ip-... RESO FIXE hk2-api Version: 2.3.0
  • 9099 approved P3 awai emo-ip-... RESO FIXE jackson-jaxrs-providers Version: 2.5.0
  • 9214 approved P3 unde emo-ip-... RESO FIXE docker-client Version: 2.7.18
  • 9105 approved P3 awai emo-ip-... RESO FIXE jackson-module-jaxb-annotations Version: 2.5.0
  • 9113 approved P3 new emo-ip-... RESO FIXE jersey-media-json-jackson Version: 2.14
  • 9422 awaiting_anal P3 new emo-ip-... NEW bcpkix-jdk15on Version: 1.51 (PB CQ 9164)
  • 9095 new P3 awai emo-ip-... NEW jffi Version: 1.2.7
  • 9094 under_review P3 new emo-ip-... NEW jnr-x86asm Version: 1.0.2
  • 9421 under_review P3 new emo-ip-... NEW bcprov-jdk15on Version: 1.51
  • 9093 under_review P3 new emo-ip-... NEW jnr-enxio Version: 0.6
  • 9092 under_review P3 new emo-ip-... NEW jnr-posix Version: 3.0.9
  • 9091 under_review P3 new emo-ip-... NEW jnr-constants Version: 0.8.6
  • 9090 under_review P3 new emo-ip-... NEW jnr-ffi Version: 2.0.1
  • 9089 under_review P3 new emo-ip-... NEW jnr-unixsocket Version: 0.5

Source Code

At present, the source code resides in a private github repo accessible to the Linux Tools and JBoss teams. When the last of the Orbit dependencies have been approved by the Eclipse IP team, the code will be migrated to the Linux Tools git repository.

Status

As of April 17/2015, 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
  • Image support
    • push image
    • pull image
    • create container from image
    • build image
    • tag image
    • remote image
  • 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
  • CDT support
    • run C/C++ application in Container
    • debug C/C++ application in Container (assumes gdbserver installed in Docker Image)

Back to the top