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

Difference between revisions of "Linux Tools Project/Docker Tooling"

(Dependencies)
m (adding link to user guide, mentioning support for "exec shell")
 
(13 intermediate revisions by 2 users not shown)
Line 10: Line 10:
 
* support launching C/C++ applications in Docker Containers via Eclipse
 
* support launching C/C++ applications in Docker Containers via Eclipse
 
* support Linux Tools profiling in Docker Containers
 
* support Linux Tools profiling in Docker Containers
* get support into Eclipse Mars release
 
 
* make support accessible in package-based systems such as Fedora and possibly RHEL DTS
 
* make support accessible in package-based systems such as Fedora and possibly RHEL DTS
 +
* [https://bugs.eclipse.org/bugs/buglist.cgi?bug_severity=enhancement&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&classification=Tools&component=Docker&list_id=12687997&product=Linux%20Tools&query_format=advanced Proposed Features]
  
 
== Design ==
 
== Design ==
  
The tooling support has based itself on the docker-client Java API library.  At the time this project
+
The tooling support uses the [https://github.com/spotify/docker-client 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.
 
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
 
As docker-client was the only one of the two to support Unix sockets (default on Linux), the choice
Line 32: Line 32:
 
== Dependencies ==
 
== Dependencies ==
  
The docker-client package currently selected: 2.7.18 has a number of dependencies not currently in Eclipse.
+
A full transitive closure of dependencies for docker-client may be seen at https://rgrunber.fedorapeople.org/docker-client-deps.svg
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
+
The docker-client package is made available at Eclipse through the Eclipse Orbit Project. As of Eclipse Mars M7 (May 08/2015)
* 9104 approved P3 unde emo-ip-... RESO FIXE jackson-dataformat-yaml Version: 2.5.0
+
all dependency CQs have been approved and the dependency packages have been pushed into Orbit.
* 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 ==
 
== Source Code ==
 +
The source for the Docker Tooling code can be found in the containers directory of the Linux Tools git repository:
  
At present, the source code resides in a private github repo accessible to the Linux Tools and JBoss teams.
+
* [http://git.eclipse.org/c/linuxtools/org.eclipse.linuxtools.git/ http://git.eclipse.org/c/linuxtools/org.eclipse.linuxtools.git/] web
When the last of the Orbit dependencies have been approved by the Eclipse IP team, the code will be migrated
+
* git://git.eclipse.org/gitroot/linuxtools/org.eclipse.linuxtools.git (anonymous)
to the Linux Tools git repository.
+
* http://git.eclipse.org/gitroot/linuxtools/org.eclipse.linuxtools.git (anonymous)
 +
* ssh://<committerId>@git.eclipse.org/gitroot/linuxtools/org.eclipse.linuxtools.git (committers)
  
 +
== User Guide ==
 +
 +
The user guide is available [https://wiki.eclipse.org/Linux_Tools_Project/Docker_Tooling/User_Guide here].
 
== Status ==
 
== Status ==
  
As of April 17/2015, the following management functionality is working:
+
The following management functionality is working:
  
 
* Docker Explorer View, Docker Images View, and Docker Containers View all 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)
 
* ability to connect to Unix socket or to TCP connection (remote/local)
 
* support for Linux, Mac, and Windows platforms
 
* support for Linux, Mac, and Windows platforms
 +
* Connection support
 +
** create connection
 +
** delete connection
 
* Image support
 
* Image support
 
** push image
 
** push image
Line 88: Line 65:
 
** tag image
 
** tag image
 
** remote image
 
** remote image
 +
** properties view support for Image info
 
* Container support
 
* Container support
 
** start container
 
** start container
Line 96: Line 74:
 
** remove container
 
** remove container
 
** commit image from container
 
** commit image from container
* Properties View support for Container info
+
** 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 ==
  
In addition, run and debug support is working for invoking C/C++ applications under Containers.
+
[[File:DockerTooling05192015.png]]
For debugging, the Docker Image used must have gdbserver installed.
+

Latest revision as of 02:48, 20 May 2016

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

Back to the top