<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://k2.ixota.com/index.php?action=history&amp;feed=atom&amp;title=Docker</id>
	<title>Docker - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://k2.ixota.com/index.php?action=history&amp;feed=atom&amp;title=Docker"/>
	<link rel="alternate" type="text/html" href="https://k2.ixota.com/index.php?title=Docker&amp;action=history"/>
	<updated>2026-06-26T12:34:10Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.33.1</generator>
	<entry>
		<id>https://k2.ixota.com/index.php?title=Docker&amp;diff=6540&amp;oldid=prev</id>
		<title>Kenneth: /* Docker Hub */</title>
		<link rel="alternate" type="text/html" href="https://k2.ixota.com/index.php?title=Docker&amp;diff=6540&amp;oldid=prev"/>
		<updated>2023-12-15T19:33:21Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Docker Hub&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #222; text-align: center;&quot;&gt;Revision as of 19:33, 15 December 2023&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l7&quot; &gt;Line 7:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 7:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  Docker Hub&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  Docker Hub&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  https://hub.docker.com/&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;  https://hub.docker.com/&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;=== Search Hub ===&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; docker search [image]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Example:&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; docker search ubuntu&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;pre&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Usage:  docker search [OPTIONS] TERM&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Search Docker Hub for images&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Options:&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;  -f, --filter filter   Filter output based on conditions provided&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;      --format string   Pretty-print search using a Go template&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;      --limit int       Max number of search results&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;      --no-trunc        Don&amp;#039;t truncate output&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;/pre&amp;gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;=== Search Tags ===&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; docker-browse tags [image]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Install with:&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; npm install -g docker-browse&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Or local with:&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; mkdir ~/.src/docker-browse&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; cd ~/.src/docker-browse&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; npm install docker-browse&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; cd ~/.bin&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; ln -s ../.src/docker-browse/node_modules/.bin/docker-browse&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Assuming .bin is in your path&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ref: https://www.npmjs.com/package/docker-browse&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== What Is Docker ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #222; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== What Is Docker ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Kenneth</name></author>
		
	</entry>
	<entry>
		<id>https://k2.ixota.com/index.php?title=Docker&amp;diff=6396&amp;oldid=prev</id>
		<title>Kenneth: /* Exporting */</title>
		<link rel="alternate" type="text/html" href="https://k2.ixota.com/index.php?title=Docker&amp;diff=6396&amp;oldid=prev"/>
		<updated>2023-07-31T20:55:21Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Exporting&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Docker ==&lt;br /&gt;
&lt;br /&gt;
 https://www.docker.com/&lt;br /&gt;
&lt;br /&gt;
== Docker Hub ==&lt;br /&gt;
&lt;br /&gt;
 Docker Hub&lt;br /&gt;
 https://hub.docker.com/&lt;br /&gt;
&lt;br /&gt;
== What Is Docker ==&lt;br /&gt;
&lt;br /&gt;
Package your application into a standardized unit for software development&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;Docker containers wrap a piece of software in a complete filesystem that contains everything needed to run: code, runtime, system tools, system libraries – anything that can be installed on a server. This guarantees that the software will always run the same, regardless of its environment.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
https://www.docker.com/what-docker&lt;br /&gt;
&lt;br /&gt;
--&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Docker is an open-source project that automates the deployment of applications inside software containers.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Docker provides an additional layer of abstraction and automation of operating-system-level virtualization on Linux. Docker uses the resource isolation features of the Linux kernel such as cgroups and kernel namespaces, and a union-capable file system such as OverlayFS and others to allow independent &amp;quot;containers&amp;quot; to run within a single Linux instance, avoiding the overhead of starting and maintaining virtual machines.&lt;br /&gt;
&lt;br /&gt;
The Linux kernel&amp;#039;s support for namespaces mostly isolates an application&amp;#039;s view of the operating environment, including process trees, network, user IDs and mounted file systems, while the kernel&amp;#039;s cgroups provide resource limiting, including the CPU, memory, block I/O and network. Since version 0.9, Docker includes the libcontainer library as its own way to directly use virtualization facilities provided by the Linux kernel, in addition to using abstracted virtualization interfaces via libvirt, LXC (Linux Containers) and systemd-nspawn.&lt;br /&gt;
&lt;br /&gt;
As actions are done to a Docker base image, union file system layers are created and documented, such that each layer fully describes how to recreate an action. This strategy enables Docker&amp;#039;s lightweight images, as only layer updates need to be propagated (compared to full VMs, for example).&lt;br /&gt;
&lt;br /&gt;
https://en.wikipedia.org/wiki/Docker_(software)&lt;br /&gt;
&lt;br /&gt;
== Removing all containers and images ==&lt;br /&gt;
&lt;br /&gt;
 #  Stop the container(s) using the following command:&lt;br /&gt;
 docker-compose down&lt;br /&gt;
 #  Delete all containers using the following command:&lt;br /&gt;
 docker rm -f $(docker ps -a -q)&lt;br /&gt;
 #  Delete all volumes using the following command:&lt;br /&gt;
 docker volume rm $(docker volume ls -q)&lt;br /&gt;
 #  Prune system images, included stopped:&lt;br /&gt;
 docker system prune -a&lt;br /&gt;
&lt;br /&gt;
Ref [https://docs.tibco.com/pub/mash-local/4.1.1/doc/html/docker/GUID-BD850566-5B79-4915-987E-430FC38DAAE4.html] [https://www.digitalocean.com/community/tutorials/how-to-remove-docker-images-containers-and-volumes]&lt;br /&gt;
&lt;br /&gt;
== A Docker Tutorial for Beginners ==&lt;br /&gt;
&lt;br /&gt;
A Docker Tutorial for Beginners&amp;lt;br&amp;gt;&lt;br /&gt;
https://docker-curriculum.com/&lt;br /&gt;
&lt;br /&gt;
Once you are done installing Docker, test your Docker installation by running the following:&lt;br /&gt;
 # docker run hello-world&lt;br /&gt;
&lt;br /&gt;
hello-world container: https://hub.docker.com/_/hello-world&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@server:~# docker run hello-world&lt;br /&gt;
Unable to find image &amp;#039;hello-world:latest&amp;#039; locally&lt;br /&gt;
latest: Pulling from library/hello-world&lt;br /&gt;
b8dfde127a29: Pull complete&lt;br /&gt;
Digest: sha256:9f6ad537c5132bcce57f7a0a20e317228d382c3cd61edae14650eec68b2b345c&lt;br /&gt;
Status: Downloaded newer image for hello-world:latest&lt;br /&gt;
&lt;br /&gt;
Hello from Docker!&lt;br /&gt;
This message shows that your installation appears to be working correctly.&lt;br /&gt;
&lt;br /&gt;
To generate this message, Docker took the following steps:&lt;br /&gt;
 1. The Docker client contacted the Docker daemon.&lt;br /&gt;
 2. The Docker daemon pulled the &amp;quot;hello-world&amp;quot; image from the Docker Hub.&lt;br /&gt;
    (amd64)&lt;br /&gt;
 3. The Docker daemon created a new container from that image which runs the&lt;br /&gt;
    executable that produces the output you are currently reading.&lt;br /&gt;
 4. The Docker daemon streamed that output to the Docker client, which sent it&lt;br /&gt;
    to your terminal.&lt;br /&gt;
&lt;br /&gt;
To try something more ambitious, you can run an Ubuntu container with:&lt;br /&gt;
 $ docker run -it ubuntu bash&lt;br /&gt;
&lt;br /&gt;
Share images, automate workflows, and more with a free Docker ID:&lt;br /&gt;
 https://hub.docker.com/&lt;br /&gt;
&lt;br /&gt;
For more examples and ideas, visit:&lt;br /&gt;
 https://docs.docker.com/get-started/&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example of Ubuntu container:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@mserver:~# docker run -it ubuntu bash&lt;br /&gt;
Unable to find image &amp;#039;ubuntu:latest&amp;#039; locally&lt;br /&gt;
latest: Pulling from library/ubuntu&lt;br /&gt;
c549ccf8d472: Pull complete&lt;br /&gt;
Digest: sha256:aba80b77e27148d99c034a987e7da3a287ed455390352663418c0f2ed40417fe&lt;br /&gt;
Status: Downloaded newer image for ubuntu:latest&lt;br /&gt;
root@4d827b59d198:/#&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Try Busybox container:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
## Fetch container&lt;br /&gt;
docker pull busybox&lt;br /&gt;
&lt;br /&gt;
## List containers&lt;br /&gt;
docker images&lt;br /&gt;
&lt;br /&gt;
## Run container (did nothing then exited)&lt;br /&gt;
docker run busybox&lt;br /&gt;
&lt;br /&gt;
## Run container with instructions to do something&lt;br /&gt;
docker run busybox echo &amp;quot;hello from busybox&amp;quot;&lt;br /&gt;
    hello from busybox&lt;br /&gt;
&lt;br /&gt;
## List running docker containers:&lt;br /&gt;
docker ps&lt;br /&gt;
    CONTAINER ID   IMAGE             COMMAND                  CREATED        STATUS       PORTS         NAMES&lt;br /&gt;
&lt;br /&gt;
## List all dockers containers that we have run:&lt;br /&gt;
docker ps -a&lt;br /&gt;
&lt;br /&gt;
## Run in interactive mode:&lt;br /&gt;
docker run -it busybox sh&lt;br /&gt;
&lt;br /&gt;
## Run and auto delete on exit&lt;br /&gt;
docker run --rm busybox echo &amp;quot;hello&amp;quot;&lt;br /&gt;
&lt;br /&gt;
## Remove docker containers (clean up after yourself&lt;br /&gt;
docker rm [CONTAINER_ID  CONTAINER_ID  ...]&lt;br /&gt;
&lt;br /&gt;
## Remove all exited docker containers:&lt;br /&gt;
docker rm $(docker ps -a -q -f status=exited)&lt;br /&gt;
# or in later editions&lt;br /&gt;
docker container prune&lt;br /&gt;
&lt;br /&gt;
## Remove docker images:&lt;br /&gt;
docker rmi [IMAGE_ID  IMAGE_ID ...]&lt;br /&gt;
&lt;br /&gt;
## Run a detached instance, and name it&lt;br /&gt;
docker run -d --name [NAME] [IMAGE]&lt;br /&gt;
# example:  docker run -d --rm --name u3 -it ubuntu bash&lt;br /&gt;
&lt;br /&gt;
## Attach to running container: [https://docs.docker.com/engine/reference/commandline/attach/]&lt;br /&gt;
docker attach [NAME]&lt;br /&gt;
&lt;br /&gt;
## Detach from a running container: [https://docs.docker.com/engine/reference/commandline/attach/]&lt;br /&gt;
CTRL-p CTRL-q&lt;br /&gt;
&lt;br /&gt;
## Stop detached instance&lt;br /&gt;
docker stop [NAME]&lt;br /&gt;
&lt;br /&gt;
## Pull a specific version:&lt;br /&gt;
docker pull ubuntu:latest&lt;br /&gt;
docker pull ubuntu:18.04&lt;br /&gt;
docker pull ubuntu:16.04&lt;br /&gt;
&lt;br /&gt;
## Run specific version&lt;br /&gt;
docker run ubuntu:16.04&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root@server:~# docker pull busybox&lt;br /&gt;
Using default tag: latest&lt;br /&gt;
latest: Pulling from library/busybox&lt;br /&gt;
b71f96345d44: Pull complete&lt;br /&gt;
Digest: sha256:930490f97e5b921535c153e0e7110d251134cc4b72bbb8133c6a5065cc68580d&lt;br /&gt;
Status: Downloaded newer image for busybox:latest&lt;br /&gt;
docker.io/library/busybox:latest&lt;br /&gt;
&lt;br /&gt;
root@server:~# docker images&lt;br /&gt;
REPOSITORY             TAG            IMAGE ID       CREATED         SIZE&lt;br /&gt;
ubuntu                 latest         9873176a8ff5   13 days ago     72.7MB&lt;br /&gt;
busybox                latest         69593048aa3a   3 weeks ago     1.24MB&lt;br /&gt;
hello-world            latest         d1165f221234   3 months ago    13.3kB&lt;br /&gt;
&lt;br /&gt;
root@server:~# docker ps -a&lt;br /&gt;
CONTAINER ID   IMAGE                            COMMAND                  CREATED         STATUS                     PORTS                         NAMES&lt;br /&gt;
495cf502dde2   busybox                          &amp;quot;echo &amp;#039;hello from bu…&amp;quot;   2 minutes ago   Exited (0) 2 minutes ago    &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Create Image ===&lt;br /&gt;
&lt;br /&gt;
All user images are based on a base image.&lt;br /&gt;
&lt;br /&gt;
Login to Docker Hub:&lt;br /&gt;
 docker login&lt;br /&gt;
&lt;br /&gt;
Sample Dockerfile:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
FROM python:3&lt;br /&gt;
&lt;br /&gt;
# set a directory for the app&lt;br /&gt;
WORKDIR /usr/src/app&lt;br /&gt;
&lt;br /&gt;
# copy all the files to the container&lt;br /&gt;
COPY . .&lt;br /&gt;
&lt;br /&gt;
# install dependencies&lt;br /&gt;
RUN pip install --no-cache-dir -r requirements.txt&lt;br /&gt;
&lt;br /&gt;
# define the port number the container should expose&lt;br /&gt;
EXPOSE 5000&lt;br /&gt;
&lt;br /&gt;
# run the command&lt;br /&gt;
CMD [&amp;quot;python&amp;quot;, &amp;quot;./app.py&amp;quot;]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Simple Dockerfile:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
FROM ubuntu&lt;br /&gt;
&lt;br /&gt;
RUN touch test.txt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Build image:&lt;br /&gt;
 docker build -t [username]/[project] .&lt;br /&gt;
&lt;br /&gt;
Test imagE:&lt;br /&gt;
 docker run [username]/[project]&amp;lt;:version&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Push image to Docker Hub:&lt;br /&gt;
 docker push [username]/[project]&lt;br /&gt;
&lt;br /&gt;
See parent hash of image:&lt;br /&gt;
  docker history --format &amp;#039;{{ .ID }}&amp;#039; --no-trunc [USERNAME]/[PROJECT]&lt;br /&gt;
&lt;br /&gt;
== Pull Image ==&lt;br /&gt;
&lt;br /&gt;
 docker pull &lt;br /&gt;
&lt;br /&gt;
Hash specific: [https://docs.docker.com/engine/reference/commandline/pull/]&lt;br /&gt;
 docker pull ubuntu@sha256:26c68657ccce2cb0a31b330cb0be2b5e108d467f641c62e13ab40cbec258c68d&lt;br /&gt;
&lt;br /&gt;
Hash specific in Dockerfile: [https://docs.docker.com/engine/reference/commandline/pull/]&lt;br /&gt;
 FROM ubuntu@sha256:26c68657ccce2cb0a31b330cb0be2b5e108d467f641c62e13ab40cbec258c68d&lt;br /&gt;
&lt;br /&gt;
== Attach to Running Docker ==&lt;br /&gt;
&lt;br /&gt;
 docker attach [NAME]&lt;br /&gt;
&lt;br /&gt;
If it isn&amp;#039;t running bash, you can do something like this:&lt;br /&gt;
 docker exec -it [NAME] /bin/bash&lt;br /&gt;
&lt;br /&gt;
== Running ARM on x86 ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Problem:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
 uname -m # Display the host architecture&lt;br /&gt;
 #x86_64&lt;br /&gt;
&lt;br /&gt;
 docker run --rm -t arm64v8/ubuntu uname -m # Run an executable made for aarch64 on x86_64&lt;br /&gt;
 #standard_init_linux.go:211: exec user process caused &amp;quot;exec format error&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Solution:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
As expected the instructions are not recognized since the packages are not installed yet. Installing the following packages should allow you to enable support for aarch64 containers on your x86 workstation:&lt;br /&gt;
&lt;br /&gt;
 sudo apt-get install qemu binfmt-support qemu-user-static # Install the qemu packages&lt;br /&gt;
 docker run --rm --privileged multiarch/qemu-user-static --reset -p yes # This step will execute the registering scripts&lt;br /&gt;
&lt;br /&gt;
 docker run --rm -t arm64v8/ubuntu uname -m # Testing the emulation environment&lt;br /&gt;
 #aarch64&lt;br /&gt;
&lt;br /&gt;
ref: [https://www.stereolabs.com/docs/docker/building-arm-container-on-x86/]&lt;br /&gt;
&lt;br /&gt;
== Static MAC ==&lt;br /&gt;
&lt;br /&gt;
 docker run ... --mac-address 12:34:56:78:9a:bc&lt;br /&gt;
&lt;br /&gt;
ref: [https://docs.docker.com/engine/reference/run/#:~:text=By%20default%2C%20the%20MAC%20address,specified%20MAC%20addresses%20are%20unique.]&lt;br /&gt;
&lt;br /&gt;
== Exporting ==&lt;br /&gt;
&lt;br /&gt;
=== Save and Load Image ===&lt;br /&gt;
&lt;br /&gt;
 docker save -o [image.tar] [IMAGE]&lt;br /&gt;
 # or&lt;br /&gt;
 docker save [IMAGE] &amp;gt; [image.tar]&lt;br /&gt;
&lt;br /&gt;
 docker load -i [image.tar]&lt;br /&gt;
 # or&lt;br /&gt;
 cat [image.tar] | docker load&lt;br /&gt;
&lt;br /&gt;
=== Export and Import Container ===&lt;br /&gt;
&lt;br /&gt;
 docker export [CONTAINER_ID_OR_NAME] &amp;gt; [container.tar]&lt;br /&gt;
&lt;br /&gt;
 docker import [container.tar] [IMAGE_NAME:VER]&lt;br /&gt;
 # or&lt;br /&gt;
 cat [container.tar] | docker import - [IMAGE_NAME:VER]&lt;br /&gt;
&lt;br /&gt;
== Extract Build Steps ==&lt;br /&gt;
&lt;br /&gt;
 docker history [IMAGE_ID] --format &amp;#039;{{.CreatedBy}}&amp;#039; --no-trunc | tac&lt;br /&gt;
&lt;br /&gt;
 docker history [IMAGE_ID] --no-trunc | tac&lt;br /&gt;
&lt;br /&gt;
== Docker Compose ==&lt;br /&gt;
&lt;br /&gt;
 apt install docker-compose docker-compose-plugin&lt;br /&gt;
 # docker-compose provides &amp;quot;docker-compose&amp;quot; command&lt;br /&gt;
 # docker-compose-plugin provides &amp;quot;docker compose&amp;quot; command&lt;br /&gt;
&lt;br /&gt;
 docker compose up -d&lt;br /&gt;
&lt;br /&gt;
Sample docker-compose.yml:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
version: &amp;quot;3.0&amp;quot;  # compose API version&lt;br /&gt;
services:&lt;br /&gt;
  license-service:&lt;br /&gt;
    container_name: license&lt;br /&gt;
    # Docker image name&lt;br /&gt;
    image: flexlm:v1&lt;br /&gt;
    build:&lt;br /&gt;
      context: .&lt;br /&gt;
    user: root&lt;br /&gt;
    restart: always&lt;br /&gt;
    # mac address tied to license file&lt;br /&gt;
    mac_address: xx:xx:xx:xx:xx:xx&lt;br /&gt;
    ports:&lt;br /&gt;
      # 27000 for lmgrd&lt;br /&gt;
      - 27000:27000&lt;br /&gt;
      # 27001 for armlmd&lt;br /&gt;
      - 27001:27001&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Proxy ==&lt;br /&gt;
&lt;br /&gt;
Client:&lt;br /&gt;
 ~/.docker/config.json&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
 &amp;quot;proxies&amp;quot;: {&lt;br /&gt;
   &amp;quot;default&amp;quot;: {&lt;br /&gt;
     &amp;quot;httpProxy&amp;quot;: &amp;quot;http://proxy.example.com:3128&amp;quot;,&lt;br /&gt;
     &amp;quot;httpsProxy&amp;quot;: &amp;quot;https://proxy.example.com:3129&amp;quot;,&lt;br /&gt;
     &amp;quot;noProxy&amp;quot;: &amp;quot;*.test.example.com,.example.org,127.0.0.0/8&amp;quot;&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ref: Configure Docker to use a proxy server | Docker Documentation - https://docs.docker.com/network/proxy/&lt;br /&gt;
&lt;br /&gt;
Configure Docker Service&lt;br /&gt;
&lt;br /&gt;
 systemctl edit docker.service&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[Service]&lt;br /&gt;
Environment=&amp;quot;HTTP_PROXY=http://proxy.example.com:3128&amp;quot;,&lt;br /&gt;
Environment=&amp;quot;HTTPS_PROXY=httpS://proxy.example.com:3129&amp;quot;,&lt;br /&gt;
Environment=&amp;quot;NO_PROXY=localhost,127.0.0.1&amp;quot;,&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 systemctl restart docker.service&lt;br /&gt;
&lt;br /&gt;
== Registry ==&lt;br /&gt;
&lt;br /&gt;
=== Registry API ===&lt;br /&gt;
&lt;br /&gt;
 HTTP API V2 | Docker Documentation&lt;br /&gt;
 https://docs.docker.com/registry/spec/api/&lt;br /&gt;
&lt;br /&gt;
List available images:&lt;br /&gt;
 GET /v2/_catalog&lt;br /&gt;
 GET https://registry.example.com/v2/_catalog&lt;br /&gt;
&lt;br /&gt;
Pretty print output:&lt;br /&gt;
 curl -s https://registry.example.com/v2/_catalog | jq&lt;br /&gt;
 curl -s https://registry.example.com/v2/_catalog | python3 -m json.tool&lt;br /&gt;
&lt;br /&gt;
Pagenation&lt;br /&gt;
 GET /v2/_catalog?n=&amp;lt;count&amp;gt;&lt;br /&gt;
 # using a name of repo in a previous result:&lt;br /&gt;
 GET /v2/_catalog?n=&amp;lt;count&amp;gt;&amp;amp;last=&amp;lt;name_repo_start_with&amp;gt;&lt;br /&gt;
&lt;br /&gt;
List tags: (pagination also works with tags)&lt;br /&gt;
 GET /v2/&amp;lt;image_name&amp;gt;/tags/list&lt;br /&gt;
&lt;br /&gt;
Delete image:&lt;br /&gt;
 # reference must be a digest or the delete will fail.&lt;br /&gt;
 DELETE /v2/&amp;lt;name&amp;gt;/manifests/&amp;lt;reference&amp;gt;&lt;br /&gt;
&lt;br /&gt;
API:&lt;br /&gt;
 Method	Path	Entity	Description&lt;br /&gt;
 GET	/v2/	Base	Check that the endpoint implements Docker Registry API V2.&lt;br /&gt;
 GET	/v2/&amp;lt;name&amp;gt;/tags/list	Tags	Fetch the tags under the repository identified by name.&lt;br /&gt;
 GET	/v2/&amp;lt;name&amp;gt;/manifests/&amp;lt;reference&amp;gt;	Manifest	Fetch the manifest identified by name and reference where reference can be a tag or digest. A HEAD request can also be issued to this endpoint to obtain resource information without receiving all data.&lt;br /&gt;
 PUT	/v2/&amp;lt;name&amp;gt;/manifests/&amp;lt;reference&amp;gt;	Manifest	Put the manifest identified by name and reference where reference can be a tag or digest.&lt;br /&gt;
 DELETE	/v2/&amp;lt;name&amp;gt;/manifests/&amp;lt;reference&amp;gt;	Manifest	Delete the manifest or tag identified by name and reference where reference can be a tag or digest. Note that a manifest can only be deleted by digest.&lt;br /&gt;
 GET	/v2/&amp;lt;name&amp;gt;/blobs/&amp;lt;digest&amp;gt;	Blob	Retrieve the blob from the registry identified by digest. A HEAD request can also be issued to this endpoint to obtain resource information without receiving all data.&lt;br /&gt;
 DELETE	/v2/&amp;lt;name&amp;gt;/blobs/&amp;lt;digest&amp;gt;	Blob	Delete the blob identified by name and digest&lt;br /&gt;
 POST	/v2/&amp;lt;name&amp;gt;/blobs/uploads/	Initiate Blob Upload	Initiate a resumable blob upload. If successful, an upload location will be provided to complete the upload. Optionally, if the digest parameter is present, the request body will be used to complete the upload in a single request.&lt;br /&gt;
 GET	/v2/&amp;lt;name&amp;gt;/blobs/uploads/&amp;lt;uuid&amp;gt;	Blob Upload	Retrieve status of upload identified by uuid. The primary purpose of this endpoint is to resolve the current status of a resumable upload.&lt;br /&gt;
 PATCH	/v2/&amp;lt;name&amp;gt;/blobs/uploads/&amp;lt;uuid&amp;gt;	Blob Upload	Upload a chunk of data for the specified upload.&lt;br /&gt;
 PUT	/v2/&amp;lt;name&amp;gt;/blobs/uploads/&amp;lt;uuid&amp;gt;	Blob Upload	Complete the upload specified by uuid, optionally appending the body as the final chunk.&lt;br /&gt;
 DELETE	/v2/&amp;lt;name&amp;gt;/blobs/uploads/&amp;lt;uuid&amp;gt;	Blob Upload	Cancel outstanding upload processes, releasing associated resources. If this is not called, the unfinished uploads will eventually timeout.&lt;br /&gt;
 GET	/v2/_catalog	Catalog	Retrieve a sorted, json list of repositories available in the registry.&lt;br /&gt;
&lt;br /&gt;
== Reducing Image Size ==&lt;br /&gt;
&lt;br /&gt;
1. Bundle Layers&lt;br /&gt;
&lt;br /&gt;
 RUN apt-get update -y \&lt;br /&gt;
   &amp;amp;&amp;amp; apt install -y package_one&lt;br /&gt;
&lt;br /&gt;
2. Avoid extra packages&lt;br /&gt;
&lt;br /&gt;
 apt install -y --no-install-recommends&lt;br /&gt;
&lt;br /&gt;
3. Clean up after install&lt;br /&gt;
&lt;br /&gt;
 apt ... \&lt;br /&gt;
 &amp;amp;&amp;amp; rm -rf /var/lib/apt/lists/*&lt;br /&gt;
&lt;br /&gt;
4. Pick smaller image&lt;br /&gt;
&lt;br /&gt;
 alpine vs ubuntu&lt;br /&gt;
&lt;br /&gt;
5. Use .dockerignore&lt;br /&gt;
&lt;br /&gt;
ref: [https://towardsdatascience.com/5-easy-to-implement-tricks-to-trim-down-your-docker-image-size-263978a6ed29]&lt;br /&gt;
&lt;br /&gt;
== Issues ==&lt;br /&gt;
&lt;br /&gt;
=== apt getting stuck at configuring tzdata ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Configuring tzdata&lt;br /&gt;
------------------&lt;br /&gt;
&lt;br /&gt;
Please select the geographic area in which you live. Subsequent configuration&lt;br /&gt;
questions will narrow this down by presenting a list of cities, representing&lt;br /&gt;
the time zones in which they are located.&lt;br /&gt;
&lt;br /&gt;
  1. Africa      4. Australia  7. Atlantic  10. Pacific  13. Etc&lt;br /&gt;
  2. America     5. Arctic     8. Europe    11. SystemV&lt;br /&gt;
  3. Antarctica  6. Asia       9. Indian    12. US&lt;br /&gt;
Geographic area: &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Solution:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
FROM ubuntu:20.04&lt;br /&gt;
&lt;br /&gt;
ENV TZ=Asia/Dubai&lt;br /&gt;
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime &amp;amp;&amp;amp; echo $TZ &amp;gt; /etc/timezone&lt;br /&gt;
&lt;br /&gt;
RUN apt update&lt;br /&gt;
RUN apt install -y tzdata&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
ref: Fix: tzdata hangs during Docker image build - DEV Community - https://dev.to/grigorkh/fix-tzdata-hangs-during-docker-image-build-4o9m&lt;br /&gt;
&lt;br /&gt;
== keywords ==&lt;/div&gt;</summary>
		<author><name>Kenneth</name></author>
		
	</entry>
</feed>