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/User Guide

< Linux Tools Project‎ | Docker Tooling
Revision as of 15:34, 28 May 2015 by Jjohnstn.redhat.com (Talk | contribs) (Create Container)

Overview

The Linux Tools Docker Tooling plug-ins allow a user to manage Docker Images and Containers with similar functionality found in the command-line docker command.

For details on Docker and the docker command, see the Docker web-site at http://www.docker.com

Docker Tooling Perspective

A new perspective known as the Docker Tooling Perspective is added.

LinuxToolsDockerPerspective.png

This perspective brings up three new views added:

  • Docker Explorer View - view for creating/managing connections to Docker daemons
  • Docker Images View - view for managing Docker Images
  • Docker Containers View - view for managing Docker Containers

In addition, the Docker Tooling Perspective adds the Console View and the Properties View.

The Console View is used to display logs of stdout/stderr output from Containers and in some instances, allow input to stdin. The Properties View allows clicking on various elements such as Connections, Images, and Containers and getting detailed info not readily shown in the various views mentioned above.

For example, clicking on a connection shows the following:

LinuxToolsDockerConnectionProperties.png

Docker Explorer View

The first view is a tree view of the various connections to Docker daemons. A connection to a Docker daemon is needed before any management of Docker Images or Containers can be performed. On initial start-up, there will be no connections and the Docker Explorer View will display a message regarding this. Note that the Docker Images View and Docker Containers View are controlled by the connection selected in the Docker Explorer View. They will also note there are no connections established yet.

LinuxToolsDockerExplorerViewInit.png

Clicking on the message will bring up the New Connection Wizard.

LinuxToolsNewConnectionWizard.png

The wizard allows the user to select a name for the connection and specify its location. For Linux users that have a local daemon running, this will be defaulted to the Unix socket: unix:///var/run/docker.sock. If a custom connection is desired, clicking the "Use custom connection settings" checkbox will allow the user to fill in either a unix socket address or a TCP address. On Mac or Windows systems, a TCP address will be required. Authentication may be required in which case the user should click on the "Enable authentication" check-box and fill in a path to the authentication files to use.

Once the data is filled, the user can test the connection by clicking on the "Test Connection" button or simply hit the "Finish" button.

More than one connection can be specified. To add more connections, click on the LinuxToolsNewConnectionIcon.png icon to bring up the wizard again. To delete a connection, click on the LinuxToolsRemoveConnectionIcon.png icon. To refresh the tree view, click on the LinuxToolsRefreshConnectionIcon.png icon. Refreshing may be required if the user has performed management outside of Eclipse using the docker command.

The Explorer View shows a tree view with the main nodes being the connections. Each connection opens up to reveal Images and Containers nodes which have children nodes for Images and Containers that the connection knows about. Filtering is provided. Simply click on the generic Menu options (down arrow) and click on "Customize View...". This will bring up the following dialog:

LinuxToolsExplorerFilter.png

From here one can filter out:

  • Dangling Images (intermediate images that are no longer referred to)
  • Intermediate Images (images with no repo tags that are parents of named images)
  • Stopped Containers (this includes paused Containers)
  • Top-level Images (only show the first repo tag for an Image with multiple tags)

Docker Images View

The Docker Images View is used to manage Docker Images.

LinuxToolsDockerImagesView.png

The connection used for the Docker Images View is determined by the latest selection in the Docker Explorer View. Whatever was last selected in the Docker Explorer View is queried for its connection and this is used for the Docker Images View. If there is only one connection, it is defaulted.

There are a number of toolbar actions supported in the Docker Images View:

There are also context menu actions supported:

  • Tag Image - same as the toolbar tag image action
  • Remove Tag - remove a tag from an Image with multiple repo tags

Pull Image

Pulling a Docker Image consists of requesting a repo tag or repository specification. Specifying a repository but no tag will pull all Images from that repo (for example: fedora).

The pull Wizard is used to specify the repository or repo:tag specification.

LinuxToolsDockerPullWizard.png

Once complete, the user hits the "Finish" button or hits "Cancel" to abort.

The pull of an Image may take a long time. This is because an Image may use several intermediate Images each of which may be several bytes. The Linux Tools Docker Tooling provides status jobs to monitor the download of the various Images and has an overall job created to monitor the status of the pull itself. When complete, refreshing of the Docker Explorer View and Docker Images View is automatic.

Push Image

Pushing a Docker Image consists of specifying an existing repo tag to push. By default, Images will be pushed to the default Docker registry, but if a tag contains a registry specifier in addition to repo:tag, it will be pushed to the specified registry. To specify an external or local registry, use the Tag Image function to add a new tag to an existing Image which has the registry specifier and then push that tag.

The push Wizard is used to specify the tag to push.

LinuxToolsDockerPushWizard.png

Like a pull of an Image, pushing an Image may take a long time. The Linux Tools Docker Tooling provides status jobs for the various Images being pushed (may include needed intermediate Images) and an overall job is created to monitor the status of the push job.

Create Container

Creating a Container takes an Image template and with additional options, starts a Container running a specified command. The action is only enabled when an Image has been selected in the Docker Images View.

LinuxToolsDockerCreateContainer.png

There a number of fields that can be filled in.

  • Image - the Image name to base the Container on
    • This will be filled in for you by default, but you have the option of changing it in the dialog.
  • Command - this is the command to run in the Container
    • Some Images will have a default command and this field does not have to be filled in. The Image needs to have pre-installed all the requirements of the command.
  • User - by default commands run as "root" in the Container, but you can specify another user.
    • Note that the user uid is the one set up in the Image and may overlap with uids in your host environment.
  • Working Directory - this is the working directory in the Container where the command will run
  • Environment - this is a set of NAME=VALUE pairs to set the environment in the Container (e.g. PATH=/usr/bin)
  • Host Name - desired host name for the Container
  • Domain Name - desired domain name for the Container
  • Memory - memory limit to allocate (bytes)
    • Specification can use suffixes: k,K,m,M,g,G,t,T (e.g. 10M or 5k) where capital suffixes are binary (e.g. K=1024) and lower-case are decimal (k=1000).
  • Memory Swap - total memory limit (memory + swap)
    • This must be used with memory specification and must be larger than memory. Set -1 to disable swap.
  • CPU Shares - number of CPU shares (relative weight vs other Containers)
  • CPU Set - string specifying the cgroups Cpuset to use
  • Volumes - volumes to mount in the Container
    • You can mount any host volume paths to host container paths using HOST_PATH:CONTAINER_PATH. Specifying just a path is mounting CONTAINER_PATH.
    • This can be used to access host files in the Container, essentially copying them over.
  • Port Specs - port mappings
    • Specify HOST_PORT:CONTAINER_PORT or :CONTAINER_PORT if you want the same port mapped over. A port is specified as port/protocol (e.g. 2345/tcp)
  • Exposed Ports - ports in Container to expose to the host
  • On Build - no longer used (Deprecated)
  • Entry Point - sets the entry point for the Container
  • Network Mode - allows you to select different network modes
    • Supported values are "bridge", "host", or container:<name|id>
  • Attach Stdin - attach stdin to Container
  • Attach Stdout - attach stdout to Container
  • Attach Stderr - attach stderr to Container
  • TTY - attach std streams of Container to a TTY
  • Open Stdin - open stdin on Container start
    • This is needed if you want to type input via the Console or are using a TTY.
  • Stdin Once - close stdin after the one attached client disconnects
  • Network Disabled - disable the network for the Container
  • Privileged - run in privileged mode
    • This should be used carefully as it gives the Container full access to the host.
  • Publish All Ports - allocate a random host port for all exposed ports

Back to the top