Skip to main content
aboutsummaryrefslogtreecommitdiffstats
blob: 608a93f8dae1842eb70750f80f5b572f187a0fdb (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
<?xml version='1.0' encoding='utf-8' ?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
		<title>Docker Tooling User Guide - Docker Tooling Perspective</title>
		<link type="text/css" rel="stylesheet" href="../../../book.css"/>
	</head>
	<body>
		<table class="navigation" style="width: 100%;" border="0" summary="navigation">
			<tr>
				<th style="width: 100%" align="center" colspan="3">Docker Tooling Perspective</th>
			</tr>
			<tr>
				<td style="width: 20%" align="left">
					<a href="User-Guide.html" title="Docker Tooling User Guide">
						<img alt="Previous" border="0" src="../../../images/prev.gif"/>
					</a>
				</td>
				<td style="width: 60%" align="center"></td>
				<td style="width: 20%" align="right">
					<a href="Updating-This-Document.html" title="Updating This Document">
						<img alt="Next" border="0" src="../../../images/next.gif"/>
					</a>
				</td>
			</tr>
			<tr>
				<td style="width: 20%" align="left" valign="top">Docker Tooling User Guide</td>
				<td style="width: 60%" align="center"></td>
				<td style="width: 20%" align="right" valign="top">Updating This Document</td>
			</tr>
		</table><hr class="navigation-separator"/>
		<h1 id="Docker_Tooling_Perspective">Docker Tooling Perspective</h1>
		<p>A new perspective known as the Docker Tooling Perspective is added.</p>
		<p>
			<img border="0" src="images/LinuxToolsDockerPerspective.png"/>
		</p>
		<p>This perspective brings up three new views added:</p>
		<ul>
			<li>
				<a href="#Docker_Explorer_View">Docker Explorer View</a> - view for creating/managing connections to Docker daemons
			</li>
			<li>
				<a href="#Docker_Images_View">Docker Images View</a> - view for managing Docker Images
			</li>
			<li>
				<a href="#Docker_Containers_View">Docker Containers View</a> - view for managing Docker Containers
			</li>
		</ul>
		<p>In addition, the Docker Tooling Perspective adds the Console View and the Properties View.</p>
		<p>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.</p>
		<p>For example, clicking on a connection shows the following:</p>
		<p>
			<img border="0" src="images/LinuxToolsDockerConnectionProperties.png"/>
		</p>
		<h2 id="Docker_Explorer_View">Docker Explorer View</h2>
		<h3 id="Overview">Overview</h3>
		<p>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.</p>
		<p>
			<img border="0" src="images/LinuxToolsDockerExplorerViewInit.png"/>
		</p>
		<p>Clicking on the message will bring up the New Connection Wizard.</p>
		<h3 id="New_Connection_Wizard">New Connection Wizard</h3>
		<p>
			<img border="0" src="images/LinuxToolsNewConnectionWizard.png"/>
		</p>
		<p>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.</p>
		<p>Once the data is filled, the user can test the connection by clicking on the "Test Connection" button or simply hit
			the "Finish" button.</p>
		<p>More than one connection can be specified.  To add more connections, click on the 
			<img border="0" src="images/LinuxToolsNewConnectionIcon.png"/> icon
			to bring up the wizard again.  To delete a connection, click on the 
			<img border="0" src="images/LinuxToolsRemoveConnectionIcon.png"/> icon.  To
			refresh the tree view, click on the 
			<img border="0" src="images/LinuxToolsRefreshConnectionIcon.png"/> icon.  Refreshing may be required if the user
			has performed management outside of Eclipse using the docker command.
		</p>
		<p>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.  If a connection gets dropped
			(e.g. the daemon is stopped), it will be marked in view using a gray disabled icon.  To enable the connection,
			use the 
			<img border="0" src="images/LinuxToolsDockerToolingEnableConnection.png"/> icon on the toolbar to re-enable the connection.  If the connection
			can be enabled, it will change color to denote this. 
		</p>
		<h3 id="Edit_Connection_Wizard">Edit Connection Wizard</h3>
		<p>A connection can also be edited after it is created.  Simply select the connection in the Docker Explorer View and right-click for
			the context menu to select "Edit Connection...".  This will bring up the Edit Connection Wizard:</p>
		<p>
			<img border="0" src="images/LinuxToolsEditConnection.png"/>
		</p>
		<h3 id="Filtering">Filtering</h3>
		<p>Filtering is provided for the Docker Explorer View.
			Simply click on the generic Menu options (down arrow) and click on "Customize View...".  This will bring up the following dialog:</p>
		<p>
			<img border="0" src="images/LinuxToolsExplorerFilter.png"/>
		</p>
		<p>From here one can filter out:</p>
		<ul>
			<li>Dangling Images (intermediate images that are no longer referred to)</li>
			<li>Intermediate Images (images with no repo tags that are parents of named images)</li>
			<li>Stopped Containers (this does not include paused Containers)</li>
			<li>Top-level Images (only show the first repo tag for an Image with multiple tags)</li>
		</ul>
		<h3 id="Docker_Explorer_Context_Menu">Docker Explorer Context Menu</h3>
		<p>For both Containers and Images in the Docker Explorer View, right-clicking on a selection brings up the context menu with tasks to
			perform on the selected item(s).  Actions applying to multiple items are only enabled if the action can be performed on all selected items.</p>
		<p>
			<img border="0" src="images/LinuxToolsExplorerContainerContextMenu.png"/>
		</p>
		<p>For Containers, one can:</p>
		<ul>
			<li>Start - start a stopped Container</li>
			<li>Pause - pause a running Container</li>
			<li>Unpause - continue a paused Container</li>
			<li>Stop - stop running Containers</li>
			<li>Kill - kill running Containers</li>
			<li>Show in - show in Properties View</li>
			<li>Execute Shell - run a shell in the Terminal View (running Container only)</li>
			<li>Remove - delete stopped Containers</li>
			<li>
				<a href="#Commit_Container">Commit</a> - commit the Container to an Image
			</li>
			<li>
				<a href="#Display_Log">Display Log</a> - display the log for the Container
			</li>
			<li>Remove Log - removes the log for the Container from Eclipse Console View</li>
		</ul>
		<p>
			<img border="0" src="images/LinuxToolsExplorerImageContextMenu.png"/>
		</p>
		<p>For Images, one can:</p>
		<ul>
			<li>
				<a href="#Run_Image">Run</a> - build a Container and run it
			</li>
			<li>Show in Properties View</li>
			<li>Remove - delete selected Images</li>
			<li>
				<a href="#Push_Image">Push</a> - push an Image to a registry
			</li>
			<li>
				<a href="#Add_Tag">Add Tag</a> - add a tag to an Image
			</li>
			<li>
				<a href="#Remove_Tag">Remove Tag</a> - remove a tag from an Image with multiple tags
			</li>
		</ul>
		<h2 id="Docker_Images_View">Docker Images View</h2>
		<h3 id="Overview_2">Overview</h3>
		<p>The Docker Images View is used to manage Docker Images.  By default, the View shows only top-level Images that have at least one repo:tag name.  The menu options allows you to see all Images by clicking the "Show all images" check-box.</p>
		<p>
			<img border="0" src="images/LinuxToolsDockerImagesView.png"/>
		</p>
		<p>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.</p>
		<p>There are a number of toolbar actions supported in the Docker Images View:</p>
		<ul>
			<li>
				<img border="0" src="images/LinuxToolsDockerImageViewPull.png"/> - 
				<a href="#Pull_Image">pull an Image from the Repository</a>
			</li>
			<li>
				<img border="0" src="images/LinuxToolsDockerImageViewPush.png"/> - 
				<a href="#Push_Image">push an Image to the Repository</a>
			</li>
			<li>
				<img border="0" src="images/LinuxToolsDockerContainerCreate.png"/> - 
				<a href="#Run_Image">create a Container from an Image</a>
			</li>
			<li>
				<img border="0" src="images/LinuxToolsDockerImageBuild.png"/> - 
				<a href="#Build_Image">build an Image from a Dockerfile</a>
			</li>
			<li>
				<img border="0" src="images/LinuxToolsDockerTagImage.png"/> - 
				<a href="#Add_Tag">tag an Image</a>
			</li>
			<li>
				<img border="0" src="images/LinuxToolsDockerDeleteImage.png"/> - delete one or more Images (requires confirmation)
			</li>
			<li>
				<img border="0" src="images/LinuxToolsDockerRefreshImage.png"/> - refresh Images list
			</li>
		</ul>
		<p>There are also context menu actions supported:</p>
		<ul>
			<li>
				<img border="0" src="images/LinuxToolsDockerContainerCreate.png"/> - 
				<a href="#Run_Image">Run an Image and create a Container</a>
			</li>
			<li>
				<a href="#Add_Tag">Add Tag</a> - same as the toolbar tag image action
			</li>
			<li>
				<a href="#Remove_Tag">Remove Tag</a> - remove a tag from an Image with multiple repo tags
			</li>
		</ul>
		<p>The text entry below the Connection name is used to search/filter the contents of the list.
			Anything typed in the filter text widget is used to match items in the list (any column) and
			any row without a match is excluded.</p>
		<h3 id="Pull_Image">Pull Image</h3>
		<p>Pulling a Docker Image consists of requesting a repo tag or repository specification from
			a registry.  Specifying a repository with no tag will pull all Images from that repo (for example: fedora).</p>
		<p>The pull Wizard is used to specify the repository or repo:tag specification and the registry to use.</p>
		<p>
			<img border="0" src="images/LinuxToolsDockerPullWizard.png"/>
		</p>
		<p>By default, the Docker Hub registry will be used, however, a user may
			specify an additional private registry if desired.  Additional registries are added using
			Windows -&gt; Preferences -&gt; Docker -&gt; Registry Accounts.</p>
		<p>The user can either fill in the complete name of the image to download or a search can be performed
			using the Search button.  This brings up the Search Image Wizard.</p>
		<p>
			<img border="0" src="images/LinuxToolsDockerSearchImageWizard.png"/>
		</p>
		<p>Hitting the Search button will cause a search to list all repositories with the given search term.
			Hitting Next... shows the various tags that can be selected.</p>
		<p>
			<img border="0" src="images/LinuxToolsDockerSearchImageWizard2.png"/>
		</p>
		<p>A search is performed only on the official Docker registry.  If a user needs to download an image from a
			private registry, then the full specification of the image, including registry, needs to be made
			manually in the initial Wizard text box.</p>
		<p>Once complete, the user hits the "Finish" button or hits "Cancel" to abort.</p>
		<p>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.</p>
		<h3 id="Push_Image">Push Image</h3>
		<p>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.</p>
		<p>The latest version of the Push Image Wizard allows one to specify a registry/account that has been added
			via Window -&gt; Preferences -&gt; Docker -&gt; Registry Accounts.  This is needed when authorization is required
			by the registry for the specified repo.  Using the aforementioned tag method assumes no authorization
			required.</p>
		<p>
			<img border="0" src="images/LinuxToolsDockerPushWizard.png"/>
		</p>
		<p>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.</p>
		<h3 id="Run_Image">Run Image</h3>
		<p>The Run Image Wizard is used to create a Container based on an Image.</p>
		<p>The first page of the Wizard allows a number of common settings:</p>
		<p>
			<img border="0" src="images/LinuxToolsRunImageWizard1.png"/>
		</p>
		<ul>
			<li>Image - this field is filled in based on the user's selection
				<ul>
					<li>Other images are available from the pull-down or the user can type in an Image not currently loaded and click on the Pull Image link.</li>
				</ul>
			</li>
			<li>Name - this field must be filled in as this is the name of the new Image</li>
			<li>EntryPoint - this allows configuring the Container to run as an executable
				<ul>
					<li>The entry point is an executable to run plus arguments.  On the command-line, additional arguments can be specified.</li>
				</ul>
			</li>
			<li>Command - this is the command to run in the Container when it starts
				<ul>
					<li>This field may be left blank if the Image has a default command to run.</li>
				</ul>
			</li>
			<li>Ports - the user can choose to expose ports from the Container (self-explanatory)</li>
			<li>Links - the user can choose to link to other Containers</li>
			<li>Keep Stdin Open - used to allow input from the Console</li>
			<li>Allocate pseudo-tty - used to allocate a TTY for the Container (needed if running a shell)</li>
			<li>Automatically remove the Container on exit - this is used to remove the Container when finished</li>
			<li>Give extended privileges to this container - this is used to give the container additional privileges</li>
		</ul>
		<p>The second page of the Wizard also has a number of needed settings:</p>
		<p>
			<img border="0" src="images/LinuxToolsRunImageWizard2.png"/>
		</p>
		<ul>
			<li>Data Volumes - the user can mount Host volumes in the Container or mount other Container volumes
				<ul>
					<li>This is useful for copying data from the Host into the Container (e.g. an executable).</li>
				</ul>
			</li>
			<li>Environment Variables - way of specifying Env variables to use in the Container</li>
			<li>Enable Resource Limits - this is used to restrict memory or CPU priority for the Container</li>
		</ul>
		<p>As of Docker Tools 1.2.0, the Run Image settings are stored in a Run Launch Configuration.  You can
			optionally use the Run Configurations Dialog (Run -&gt; Run Configurations...) to edit or create a
			Run Image configuration.  The same data that appears in the Run Image Wizard is broken up into
			launch configuration tabs:</p>
		<p>
			<img border="0" src="images/LinuxToolsRunImageLaunchConfig.png"/>
		</p>
		<ul>
			<li>Main - this tab contains the Connection name, Image name, Container name, entry-point, command, and flags such as remove on exit, use STDIN, and allocate a pseudo-TTY</li>
			<li>Volumes - this tab allows a user to mount Host volumes in the Container or mount other Container volumes</li>
			<li>Ports - this tab allows a user to expose ports from the Container</li>
			<li>Links - this tab allows links to other Containers</li>
			<li>Environment - this tab allows specification of environment variables for the Container</li>
			<li>Resources - this tab allows the user to restrict memory or CPU priority for the Container</li>
		</ul>
		<h3 id="Build_Image">Build Image</h3>
		<p>Building an Image takes an existing Image and modifies it to create a new Image.  Typically this
			involves installing new packages.  The specification of the new Docker Image is done via
			a special file which is always named: "Dockerfile".  Clicking on the Build Image icon starts the
			Build Image Wizard:</p>
		<p>
			<img border="0" src="images/LinuxToolsDockerBuildImage.png"/>
		</p>
		<p>There are two fields that need to be filled in:</p>
		<ul>
			<li>Name - this is the name that will be given to the new Image
				<ul>
					<li>Note that this name must follow correct repo:tag format.</li>
				</ul>
			</li>
			<li>Directory - this is the directory that contains or will contain the Dockerfile</li>
		</ul>
		<p>The directory can be specified using the "Browse" button.  Once a valid existing directory
			is specified, the "Edit" button will be enabled, allowing creation and modification of the
			Dockerfile using a 
			<a href="#Dockerfile_Editor">basic editor dialog</a>.
		</p>
		<p>When the Dockerfile is considered complete, hitting the "Finish" button will start the
			Image build action.  When the build is complete, the Docker Images View will be refreshed
			automatically.</p>
		<h4 id="Dockerfile_Editor">Dockerfile Editor</h4>
		<p>
			<img border="0" src="images/LinuxToolsDockerfileEditor.png"/>
		</p>
		<p>The Dockerfile editor is a specialized text editor for Dockerfiles that was added to the
			Neon release.  The editor supports
			completion and offers help on the basic Dockerfile constructs.  Completion occurs using the
			CTRL + space sequence as in any other text editor.  Reverting fixes and saving are also supported plus
			full colorization.  The editor can be brought up from the Build Image Wizard or by double-clicking on
			a Dockerfile file in an Eclipse View such as the Project Explorer.</p>
		<p>A Dockerfile is used to specify how to build the new Docker Image.  The file contains
			a set of commands used to build the Image:</p>
		<ul>
			<li>FROM xxxxxx - this must be the first line and specifies the Image xxxxxx to base off of (e.g. FROM fedora:20)
				<ul>
					<li>The first line of the file must be: FROM: xxxxxx where xxxxxx is the Docker Image name/id to base the Image off of (e.g. FROM: fedora:20).</li>
				</ul>
			</li>
			<li>MAINTAINER name - this sets the Author field of the Image and is optional</li>
			<li>RUN &lt;cmd | ["executable", "arg0", "arg1" ...]&gt; - this is a command that is run to modify the base Image in either the cmd format or the executable format
				<ul>
					<li>The cmd form is run in a shell (/bin/sh -c cmd). </li>
					<li>Typically, this is how you install new packages (e.g. RUN yum install -y gdb).  It can also be used to modify the configuration (e.g. sed operations on a config file).</li>
					<li>These commands are run in the build stage prior to any Container being run and there can be multiple RUN commands specified.</li>
				</ul>
			</li>
			<li>CMD - this is the default command that the new Image will run if one isn't specified on 
				<a href="#Container_Create">Container create</a>.
				<ul>
					<li>There are three forms:
						<ul>
							<li>["executable", "param1", "param2"] - executable form</li>
							<li>["param1", "param2"] - default parameters to Entrypoint (see 
								<a href="#Create_Container">Entrypoint parameter of Create Container</a>
							</li>
							<li>command param1 param2 - command form</li>
						</ul>
					</li>
					<li>The CMD is not run in build, but only when the Container is created and started.</li>
				</ul>
			</li>
			<li>ENV - this specifies one of more environment variables
				<ul>
					<li>There are two forms:
						<ul>
							<li>&lt;NAME&gt; &lt;VALUE&gt;</li>
							<li>&lt;NAME&gt;=&lt;VALUE&gt; &lt;NAME2&gt;=&lt;VALUE2&gt; ...</li>
						</ul>
					</li>
					<li>The second format allows multiple environment variables at once.  There can be multiple ENV specifiers.</li>
					<li>Once specified, the environment variable may be referred to later on using the $NAME syntax (e.g. HOME=/home/$USER)</li>
				</ul>
			</li>
			<li>LABEL - adds metadata to the Image</li>
			<li>ONBUILD - use this to specify commands to add to any Image building from this one
				<ul>
					<li>This is useful for configuration stuff that needs to be done repeatedly in each child Image.</li>
				</ul>
			</li>
			<li>ADD - add a file from the host into the Container file system
				<ul>
					<li>There are two forms:
						<ul>
							<li>ADD &lt;src&gt; ... &lt;dest&gt;</li>
							<li>ADD ["&lt;src&gt;" ... "&lt;dest&gt;"]</li>
						</ul>
					</li>
					<li>The second form is used to quote names that have white-space.</li>
				</ul>
			</li>
			<li>COPY - copy a file from host into the Container file system
				<ul>
					<li>There are two forms:
						<ul>
							<li>COPY &lt;src&gt; ... &lt;dest&gt;</li>
							<li>COPY ["&lt;src&gt;"... "&lt;dest&gt;"]</li>
						</ul>
					</li>
					<li>The second form is used to quote names that have white-space.</li>
				</ul>
			</li>
		</ul>
		<p>For more details, see 
			<a href="http://docs.docker.com/reference/builder">the official Dockerfile reference</a>
		</p>
		<h4 id="Build_Image_Run_Configuration">Build Image Run Configuration</h4>
		<p>A Dockerfile can also be run by right-clicking on it in an Eclipse project and choosing
			Run as -&gt; Docker Image Build.  For the first time the file is built, you will get the following
			dialog:</p>
		<p>
			<img border="0" src="images/LinuxToolsDockerBuildImageFirstDialog.png"/>
		</p>
		<p>Here, the connection and the repository name for the new image can be supplied.  An image created
			without a name will default to be: dockerfile:xxxxxxxxxxxx where xxxxxxxxxxx is a unique hex value.  </p>
		<p>After building, a Run configuration will be created that can be inspected, modified, or run using
			the Run-&gt;Run Configurations... menu option.</p>
		<p>
			<img border="0" src="images/LinuxToolsDockerBuildImageConfiguration2.png"/>
		</p>
		<p>Note there are additional options in the configuration that can be specified for the image build that
			are not available by right-clicking on the Dockerfile.  A new Run configuration can be created from the
			Run Configurations dialog by double-clicking on the Build Docker Image category.</p>
		<h3 id="Add_Tag">Add Tag</h3>
		<p>The Tag Image dialog can be brought up directly from the Docker Images View toolbar or using the
			context menu by right-clicking on an Image.</p>
		<p>
			<img border="0" src="images/LinuxToolsDockerTagImageDialog.png"/>
		</p>
		<p>The dialog is simple and asks for a new tag to add to the Image.  The tag should be of one of two forms:</p>
		<ul>
			<li>&lt;repository&gt;:&lt;tag&gt; where &lt;repository&gt; may be &lt;username/reponame&gt; or &lt;reponame&gt;</li>
			<li>&lt;registry&gt;:&lt;repository&gt;:&lt;tag&gt; where &lt;registry&gt; contains a "." or ends with a port specifier (":port")</li>
		</ul>
		<p>Adding a tag with a registry is the way to push existing Images to local or external registries.  By default,
			Docker pushes Images to its default registry.  When pushing to the default registry, a username needs to be
			specified in the repository specifier because write privileges are prohibited for the base Images (e.g.
			fedora:20 is the official Docker Image for F20 whereas a user may have a user/fedora:20 copy they have modified).</p>
		<h3 id="Remove_Tag">Remove Tag</h3>
		<p>
			<img border="0" src="images/LinuxToolsDockerRemoveTag.png"/>
		</p>
		<p>The Remove Tag dialog allows the user to remove a tag from an existing Image.  This may be done to rename a
			tag or to keep the number of tags manageable.  The Remove Tag menu item is only enabled after selecting
			an existing Image in the Docker Images View that has multiple tags.  The dialog presents the list of
			possible tags to remove in a drop-down list.</p>
		<h2 id="Docker_Containers_View">Docker Containers View</h2>
		<h3 id="Overview_3">Overview</h3>
		<p>The Docker Containers View is used to manage Docker Containers.  By default only running Containers are shown.  To see all Containers, click on the menu options and click the "Show all containers" check-box.</p>
		<p>
			<img border="0" src="images/LinuxToolsDockerContainersView.png"/>
		</p>
		<p>The connection used for the Docker Containers 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 Containers View.  If there
			is only one connection, it is defaulted.</p>
		<p>The text entry below the Connection name is used to search/filter the contents of the list.
			Anything typed in the filter text widget is used to match items in the list (any column) and
			any row without a match is excluded.</p>
		<p>There are a number of toolbar actions supported in the Docker Containers View:</p>
		<ul>
			<li>
				<img border="0" src="images/LinuxToolsDockerContainerStartIcon.png"/> - start a stopped Container
			</li>
			<li>
				<img border="0" src="images/LinuxToolsDockerContainerPauseIcon.png"/> - pause a running Container
			</li>
			<li>
				<img border="0" src="images/LinuxToolsDockerContainerUnpauseIcon.png"/> - continue running a paused Container
			</li>
			<li>
				<img border="0" src="images/LinuxToolsDockerContainerStopIcon.png"/> - stop a running Container
			</li>
			<li>
				<img border="0" src="images/LinuxToolsDockerContainerKillIcon.png"/> - kill a running Container
			</li>
			<li>
				<img border="0" src="images/LinuxToolsDockerContainerDeleteIcon.png"/> - delete a stopped Container
			</li>
			<li>
				<img border="0" src="images/LinuxToolsDockerContainerRefreshIcon.png"/> - refresh Containers list
			</li>
		</ul>
		<p>It should be noted that the various actions above are enabled/disabled based on the state of the current selected Container(s) in the View.  Multiple Containers can be selected for an action so long as all Containers meet the enablement requirements.</p>
		<ul>
			<li>a Container can only be started if it is stopped with a known status</li>
			<li>a Container can only be stopped, paused, or killed, if it is known to be running</li>
			<li>a Container can only be unpaused if the Container is known to be paused</li>
			<li>a Container with unknown/missing status can only be deleted</li>
		</ul>
		<p>The following context menu actions are supported:</p>
		<ul>
			<li>Commit Container - 
				<a href="#Commit_Container">commit all changes of a selected Container into a new Image</a>
			</li>
			<li>Display Log - 
				<a href="#Display_Log">display the stdout/stderr logs of a selected Container in the Console View</a>
			</li>
			<li>Remove Log - remove the stdout/stderr logs of a selected Container from the Console View</li>
		</ul>
		<h3 id="Commit_Container">Commit Container</h3>
		<p>The Commit Container dialog is simple.</p>
		<p>
			<img border="0" src="images/LinuxToolsDockerCommitContainer.png"/>
		</p>
		<p>The user is required to enter:</p>
		<ul>
			<li>Name - name of the new Image being created
				<ul>
					<li>The name must be a valid repo tag name.</li>
				</ul>
			</li>
			<li>Author - optional name to add as the Author of the Image</li>
			<li>Comment - optional comment to add for the Image</li>
		</ul>
		<h3 id="Display_Log">Display Log</h3>
		<p>The Display Log action displays the stdout/stderr output for a Container in either
			the Console View or the Terminal View, depending on whether the Container specified
			use of a TTY.</p>
		<p>For Containers that run with the TTY
			flag enabled, the output goes to the Terminal View:</p>
		<p>
			<img border="0" src="images/LinuxToolsDockerTerminal.png"/>
		</p>
		<p>For Containers that run without a TTY, the
			output is shown in the Console View:</p>
		<p>
			<img border="0" src="images/LinuxToolsDockerDisplayLog.png"/>
		</p>
		<p>In the example above, each entry in the log is preceded by a time-stamp.  This can be controlled using Window-&gt;Preferences-&gt;Docker-&gt;Logging.</p>
		<p>
			<img border="0" src="images/LinuxToolsDockerLoggingPreferences.png"/>
		</p>
		<p>From there, one can control:</p>
		<ul>
			<li>logging on start - by default starting a Container will output stdout/stderr to a console in the Console View
				<ul>
					<li>Each log is in a separate console that can be removed using the Remove Log context menu-item for the Container</li>
				</ul>
			</li>
			<li>timestamps - by default they are added</li>
		</ul>
		<h2 id="Properties_View">Properties View</h2>
		<p>The Properties View will respond to selections in the three Docker Tooling Views: 
			<a href="#Docker_Explorer_View">Docker Explorer View</a>, 
			<a href="#Docker_Images_View">Docker Images View</a>, and the 
			<a href="#Docker_Containers_View">Docker Containers View</a>.  The data shown will depend on what is being selected:
		</p>
		<ul>
			<li>Docker Connection</li>
			<li>Docker Image</li>
			<li>Docker Container</li>
		</ul>
		<p>
			<img border="0" src="images/LinuxToolsDockerConnectionProperties.png"/>
		</p>
		<p>For a Docker Image and Docker Container, there are two forms of data:</p>
		<ul>
			<li>Info - what is shown from the docker command when listing Images or Containers</li>
			<li>Inspect - what is shown from the docker command when inspecting an Image or Container (additional data)</li>
		</ul>
		<p>
			<img border="0" src="images/LinuxToolsDockerPropertiesView.png"/>
		</p><hr class="navigation-separator"/>
		<table class="navigation" style="width: 100%;" border="0" summary="navigation">
			<tr>
				<td style="width: 20%" align="left">
					<a href="User-Guide.html" title="Docker Tooling User Guide">
						<img alt="Previous" border="0" src="../../../images/prev.gif"/>
					</a>
				</td>
				<td style="width: 60%" align="center">
					<a href="User-Guide.html" title="Docker Tooling User Guide">
						<img alt="Docker Tooling User Guide" border="0" src="../../../images/home.gif"/>
					</a>
				</td>
				<td style="width: 20%" align="right">
					<a href="Updating-This-Document.html" title="Updating This Document">
						<img alt="Next" border="0" src="../../../images/next.gif"/>
					</a>
				</td>
			</tr>
			<tr>
				<td style="width: 20%" align="left" valign="top">Docker Tooling User Guide</td>
				<td style="width: 60%" align="center"></td>
				<td style="width: 20%" align="right" valign="top">Updating This Document</td>
			</tr>
		</table>
	</body>
</html>

Back to the top