0595: Running A Docker Host in a Proxmox VE LXC Linux Container [CT]
This commit is contained in:
parent
d42a0a9c26
commit
174098ae9a
1 changed files with 169 additions and 0 deletions
169
0595.html
Normal file
169
0595.html
Normal file
|
@ -0,0 +1,169 @@
|
|||
<!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 Docker Host in a Proxmox VE LXC Linux Container [CT]</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){
|
||||
if(!$(this).hasClass('noCheckbox')){
|
||||
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, '"')) +'" /><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 Docker Host in a Proxmox VE LXC Linux Container [CT]</h1>
|
||||
</div>
|
||||
<div></div>
|
||||
<div id="content">
|
||||
<h2>Creating the Container</h2>
|
||||
|
||||
<ol>
|
||||
<li>Log into the Proxmox VE web UI</li>
|
||||
<li>Select a storage device from the left navigation that allows storing Container templates</li>
|
||||
<li>Select CT Templates from the left sub-navigation menu</li>
|
||||
<li>Click the Templates button</li>
|
||||
<li>Search for core > Click TurnKey Core to select it > Click the Download button</li>
|
||||
<li>After the download completes, close the download dialog</li>
|
||||
<li>Right click the Proxmox node name > Create CT</li>
|
||||
<li>Enter the Hostname Docker, Password and Confirm the password > Next</li>
|
||||
<li>Select the Storage where the container template was downloaded and select the TurnKey Core container template > Click Next</li>
|
||||
<li>Set the Storage device to save the container to > Click Next</li>
|
||||
<li>Leave the defaults on the CPU tab > Next</li>
|
||||
<li>On the Memory tab, set the Memory to 2048 > Next</li>
|
||||
<li>Leave the defaults on the Network tab, setup a static IP address if needed (I prefer to set this from my router) > Next</li>
|
||||
<li>Leave the defaults on the DNS tab > Next</li>
|
||||
<li>Verify the summary and click Finish</li>
|
||||
<li>After the container creation completes, close the download dialog</li>
|
||||
<li>Right click the Docker LXC container in the left navigation pane > Start</li>
|
||||
<li>Click console in the left sub-navigation menu</li>
|
||||
</ol>
|
||||
|
||||
<h2>Installing Updates and Docker</h2>
|
||||
|
||||
<ol>
|
||||
<li>Log into the container with the username root and the password set during the setup</li>
|
||||
<li>On the Initialize Hub services dialog, press tab and select Skip > Press Enter</li>
|
||||
<li>On the System Notifications dialog, press tab and select Skip > Press Enter</li>
|
||||
<li>On the Security updates dialog, press tab to select Install to enable automatic updates or Skip > Press Enter</li>
|
||||
<li>Press Enter to select Advanced Menu</li>
|
||||
<li>Arrow down and select Quit > Press Enter > Select Yes to confirm > 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 prerequisites<br />
|
||||
apt 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'=' '/^ID=/{ print $NF }' /etc/os-release)/gpg | apt-key add -<br />
|
||||
# add docker apt repository<br />
|
||||
add-apt-repository "deb [arch=$(dpkg --print-architecture)] https://download.docker.com/linux/$(awk -F'=' '/^ID=/{ print $NF }' /etc/os-release) $(lsb_release -cs) stable"<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 LXC 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=always -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 > Click Create user</li>
|
||||
<li>Click the Docker - Manage the local Docker environment option > 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>
|
||||
|
Loading…
Add table
Reference in a new issue