Browse Source

0598: Running A Dedicated Docker Host in VirtualBox

i12bretro 3 years ago
parent
commit
83761efab3
1 changed files with 155 additions and 0 deletions
  1. 155 0
      0598.html

+ 155 - 0
0598.html

@@ -0,0 +1,155 @@
+    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+    <html lang="en" xmlns="http://www.w3.org/1999/xhtml">
+      <head>
+        <title>Running A Dedicated Docker Host in VirtualBox</title>
+        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+								<script type="text/javascript" src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
+				        <script type="text/javascript">
+          $(function(){
+            $('textarea').each(function(i,e){
+              theTextarea = $(this);
+              theTextarea.height((theTextarea[0].scrollHeight-5) +'px');
+            });
+
+            $('li').each(function(i,e){
+              var uuid = 'li_' + Math.floor(Math.random() * Math.floor(1000000)).toString() + '_' + i.toString();
+              $(this).contents().wrap('<span id="'+ uuid +'"><label for="cb_'+ uuid +'"></label></span>');
+              $(this).prepend('<input type="checkbox" class="completeBox" id="cb_' + uuid +'" rel="'+ uuid +'" />')
+            });
+
+            $('code,div.codeBlock,textarea.codeBlock').each(function(i,e){
+              theElement = $(this);
+              var lines = theElement.html().split("\n");
+              theElement.empty();
+              for(l=0;l<lines.length;l++){
+                if($.trim(lines[l]) != '' && $.trim(lines[l]).substr(0,1) != '#' && $.trim(lines[l]).indexOf(' #') == -1 && lines[l].substr(0, 4).toUpperCase() != 'REM '){
+									                  theElement.append('<input type="image" src="images/clipboard.png" value="" class="copy-text" rel="copy_'+ i +'_'+ l +'" data-clipboard-text="'+ $.trim(lines[l].replace(/"/g, '&quot;')) +'" /><span id="copy_'+ i +'_'+ l +'">'+ lines[l] +'</span>');
+									                } else {
+                  theElement.append(lines[l]);
+                }
+              }
+            });
+
+            $(document).on('click','input.copy-text',function(){
+              theButton = $(this);
+														$('input.copy-text').attr('src','images/clipboard.png');
+							              $('span.copy-animation,span.copy-animation-ps').removeClass('copy-animation copy-animation-ps');
+              try {
+                if($('#'+ theButton.attr('rel')).parent('div').hasClass('PS')){
+                  $('#'+ theButton.attr('rel')).addClass('copy-animation-ps');
+								} else if($('#'+ theButton.attr('rel')).parent('div').hasClass('CMD')){
+									$('#'+ theButton.attr('rel')).addClass('copy-animation-cmd');
+                } else {
+                  $('#'+ theButton.attr('rel')).addClass('copy-animation');
+                }
+                navigator.clipboard.writeText(theButton.data('clipboard-text').replace(/<[^>]*>?/gm, ''));
+																theButton.attr('src','images/clipboard_active.png');
+								              } catch(err) {
+              }
+              return false;
+            });
+
+            $(document).on('click','input.completeBox',function(){
+              theBox = $(this);
+              $('#'+ theBox.attr('rel')).addClass('strikethrough');
+              theBox.prop('disabled',true);
+              theBox.parent('li').prevAll().each(function(i,e){
+                theLI = $(this);
+                if(theLI.find('input[type=checkbox]').not(':checked')){
+                  $('#'+ theLI.find('input[type=checkbox]').attr('rel')).addClass('strikethrough');
+                  theLI.find('input[type=checkbox]').prop('checked',true).prop('disabled',true);
+                }
+              });
+            });
+
+            if(window.self !== window.top){
+															window.parent.$('iframe.stepsFrame').height((this['scrollingElement']['scrollHeight']+20) +'px');
+							            }
+          });
+        </script>
+        <link href="css/steps.css" rel="stylesheet" type="text/css" />
+      </head>
+      <body>
+        <div id="gridContainer">
+          <div class="topMargin"></div>
+          <div id="listName" class="topMargin">
+            <h1>Running A Dedicated Docker Host in VirtualBox</h1>
+          </div>
+          <div></div>
+          <div id="content">
+          <h2>Creating the Host VM</h2>
+
+<ol>
+	<li>Open a web browser and download the Turnkey Linux Core .ova <a href="https://www.turnkeylinux.org/core" target="_blank">Download</a></li>
+	<li>Launch VirtualBox</li>
+	<li>Select File &gt; Import Appliance...</li>
+	<li>Click the Browse icon &gt; Navigate to and select the downloaded .ova file</li>
+	<li>Click Next and then Import</li>
+	<li>Make sure the Turnkey Core VM is selected and click Start &gt; Normal</li>
+	<li>Once the VM boots, enter a new root password</li>
+	<li>Select Skip on the TurnKey Backup and Migration screen</li>
+	<li>Select Skip on the System Notifications screen</li>
+	<li>Select Install on the Security Updates screen</li>
+	<li>Note the URLs and IP address for the VM &gt; Press Enter to finish the installation</li>
+</ol>
+
+<h2>Installing Updates and Docker</h2>
+
+<ol>
+	<li>Press Enter to select Advanced Menu</li>
+	<li>Arrow down and select Quit &gt; Press Enter &gt; Select Yes to confirm &gt; Press Enter</li>
+	<li>Run the following commands to install updates
+	<div class="codeBlock CMD"># update software repositories<br />
+	apt update<br />
+	# install available software updates<br />
+	apt upgrade -y<br />
+	# clean apt cache<br />
+	apt clean<br />
+	# reboot the container<br />
+	reboot now</div>
+	</li>
+	<li>Log back into the container</li>
+	<li>Run the following commands to install Docker
+	<div class="codeBlock CMD"># install prerequisitesapt install apt-transport-https ca-certificates curl gnupg2 software-properties-common -y<br />
+	# add docker gpg key<br />
+	curl -fsSL https://download.docker.com/linux/$(awk -F&#39;=&#39; &#39;/^ID=/{ print $NF }&#39; /etc/os-release)/gpg | apt-key add -<br />
+	# add docker apt repository<br />
+	add-apt-repository &quot;deb [arch=$(dpkg --print-architecture)] https://download.docker.com/linux/$(awk -F&#39;=&#39; &#39;/^ID=/{ print $NF }&#39; /etc/os-release) $(lsb_release -cs) stable&quot;<br />
+	# update software repositories<br />
+	apt update<br />
+	# install docker<br />
+	apt install docker-ce docker-compose containerd.io -y</div>
+	</li>
+	<li>Welcome to your Docker host</li>
+	<li>At this point you can use docker run and docker-compose to run containers from the terminal</li>
+</ol>
+
+<p>Documentation: <a href="https://docs.docker.com/engine/reference/commandline/docker/" target="_blank">https://docs.docker.com/engine/reference/commandline/docker/</a></p>
+
+<h2>Optionally Install Portainer (Recommended)</h2>
+
+<p><em>Portainer is an open source tool for managing container-based software applications in Kubernetes, Docker, Docker Swarm, Azure ACI and edge environments.<br />
+<br />
+It can be used to set up and manage environments, deploy applications, monitor app performance and triage problems. It is used by software engineers, devops and infrastructure teams all over the world to simplify processes, reduce risk and streamline operations.</em></p>
+
+<ol>
+	<li>Run the following commands to start a Portainer container in Docker
+	<div class="codeBlock CMD"># create a working directory for portainer<br />
+	mkdir ~/docker/portainer_data -p<br />
+	# run the portainer container<br />
+	docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=unless-stopped -v /var/run/docker.sock:/var/run/docker.sock -v ~/docker/portainer_data:/data portainer/portainer-ce<br />
+	# output the ip docker host address<br />
+	ip addr</div>
+	</li>
+	<li>Open a web browser and navigate to http://DNSorIP:9000</li>
+	<li>Set an administrator username and password &gt; Click Create user</li>
+	<li>Click the Docker - Manage the local Docker environment option &gt; Click Connect</li>
+	<li>Welcome to Portainer, Docker container management from a web browser</li>
+</ol>
+
+<p>Documentation: <a href="https://www.portainer.io/installation/" target="_blank">https://www.portainer.io/installation/</a></p>
+          </div>
+        </div>
+      </body>
+    </html>
+