# Setup and Install Docker in a Promox LXC Conainer

This guide is for Proxmox VE 6.4.4 or earlier and will NOT work well on version 7. See [this guide](https://thehomelab.wiki/books/promox-ve/page/setup-and-install-docker-in-a-promox-7-lxc-conainer) for 7.

[You should check out my website at noted.lol!](https://noted.lol)

Containers are a lightweight alternative to fully virtualized machines (VMs). They use the kernel of the host system that they run on, instead of emulating a full operating system (OS). This means that containers can access resources on the host system directly. The runtime costs for containers is low, usually negligible. However, there are some drawbacks that need be considered:
- Only Linux distributions can be run in Proxmox Containers. It is not possible to run other operating systems like, for example, FreeBSD or Microsoft Windows inside a container. - For security reasons, access to host resources needs to be restricted. Therefore, containers run in their own separate namespaces. Additionally some syscalls (user space requests to the Linux kernel) are not allowed within containers.
Proxmox VE uses [Linux Containers (LXC)](https://linuxcontainers.org/lxc/introduction/) as its underlying container technology. The “Proxmox Container Toolkit” (pct) simplifies the usage and management of LXC, by providing an interface that abstracts complex tasks. Containers are tightly integrated with Proxmox VE. This means that they are aware of the cluster setup, and they can use the same network and storage resources as virtual machines. You can also use the Proxmox VE firewall, or manage containers using the HA framework. Our primary goal is to offer an environment that provides the benefits of using a VM, but without the additional overhead. This means that Proxmox Containers can be categorized as “System Containers”, rather than “Application Containers”.

The above was sited from the Proxmox VE website.

### Download the Turnkey Core template To setup and install Docker in a Proxmox LXC Conainer, you will have to download the Turnkey Core template to your storage. 1\. Click on your storage then click on the templates button. [![image-1600627790061.png](https://thehomelab.wiki/uploads/images/gallery/2020-09/scaled-1680-/image-1600627790061.png)](https://thehomelab.wiki/uploads/images/gallery/2020-09/image-1600627790061.png) 2\. Search for the core template and click download. [![image-1600627549435.png](https://thehomelab.wiki/uploads/images/gallery/2020-09/scaled-1680-/image-1600627549435.png)](https://thehomelab.wiki/uploads/images/gallery/2020-09/image-1600627549435.png) 3\. When it's done you can click the "Create CT" button in the upper right corner. [![image-1600627916015.png](https://thehomelab.wiki/uploads/images/gallery/2020-09/scaled-1680-/image-1600627916015.png)](https://thehomelab.wiki/uploads/images/gallery/2020-09/image-1600627916015.png) 4\. Set your hostname and password and be sure to UNCHECK "Unprivileged container" or this will not work. Now move on to the Template tab. [![image-1600627993814.png](https://thehomelab.wiki/uploads/images/gallery/2020-09/scaled-1680-/image-1600627993814.png)](https://thehomelab.wiki/uploads/images/gallery/2020-09/image-1600627993814.png) 5\. Select the storage where you downloaded the Turnkey Core template then choose the template. [![image-1600628164202.png](https://thehomelab.wiki/uploads/images/gallery/2020-09/scaled-1680-/image-1600628164202.png)](https://thehomelab.wiki/uploads/images/gallery/2020-09/image-1600628164202.png) 6\. In the Storage tab choose where you want the container to use storage. For the disk size I recommend at-least 20gb of space. This depends on what you plan on doing with the container. For example if you plan on downloading a bunch of files, you may want a larger size disk. [![image-1600628264965.png](https://thehomelab.wiki/uploads/images/gallery/2020-09/scaled-1680-/image-1600628264965.png)](https://thehomelab.wiki/uploads/images/gallery/2020-09/image-1600628264965.png) 7\. On the CPU tab, I usually put 4 cores but this is overkill for a container. This depends on the processor you have in your system. [![image-1600628415695.png](https://thehomelab.wiki/uploads/images/gallery/2020-09/scaled-1680-/image-1600628415695.png)](https://thehomelab.wiki/uploads/images/gallery/2020-09/image-1600628415695.png) 8\. On the Memory tab I usually allocate 2gb for containers. [![image-1600628541219.png](https://thehomelab.wiki/uploads/images/gallery/2020-09/scaled-1680-/image-1600628541219.png)](https://thehomelab.wiki/uploads/images/gallery/2020-09/image-1600628541219.png) 9\. On the Network tab I let the DHCP host assign the IP automatically. [![image-1600628641571.png](https://thehomelab.wiki/uploads/images/gallery/2020-09/scaled-1680-/image-1600628641571.png)](https://thehomelab.wiki/uploads/images/gallery/2020-09/image-1600628641571.png) 10\. On the DNS tab I just use my gateway IP. [![image-1600628692672.png](https://thehomelab.wiki/uploads/images/gallery/2020-09/scaled-1680-/image-1600628692672.png)](https://thehomelab.wiki/uploads/images/gallery/2020-09/image-1600628692672.png) 11\. Confirm your settings and make sure you DO NOT tick "Start after created". Click finish and let the container create. [![image-1600628756760.png](https://thehomelab.wiki/uploads/images/gallery/2020-09/scaled-1680-/image-1600628756760.png)](https://thehomelab.wiki/uploads/images/gallery/2020-09/image-1600628756760.png) 12\. Once done, you will see "TASK OK". Click the X in the upper corner and proceed to the next step. [![image-1600628834060.png](https://thehomelab.wiki/uploads/images/gallery/2020-09/scaled-1680-/image-1600628834060.png)](https://thehomelab.wiki/uploads/images/gallery/2020-09/image-1600628834060.png) 13\. Select the container and then click on Options then double click on Features. [![image-1600629985611.png](https://thehomelab.wiki/uploads/images/gallery/2020-09/scaled-1680-/image-1600629985611.png)](https://thehomelab.wiki/uploads/images/gallery/2020-09/image-1600629985611.png) 14\. Tick Nesting then click ok. [![image-1600629027165.png](https://thehomelab.wiki/uploads/images/gallery/2020-09/scaled-1680-/image-1600629027165.png)](https://thehomelab.wiki/uploads/images/gallery/2020-09/image-1600629027165.png) 15\. Now you can start your container and view the console. [![image-1600629099543.png](https://thehomelab.wiki/uploads/images/gallery/2020-09/scaled-1680-/image-1600629099543.png)](https://thehomelab.wiki/uploads/images/gallery/2020-09/image-1600629099543.png) This will start the container and run the install script then assign an IP to your container. Once done you will need to login using root and the password you chose when you created the container in step 4. [![image-1600629366205.png](https://thehomelab.wiki/uploads/images/gallery/2020-09/scaled-1680-/image-1600629366205.png)](https://thehomelab.wiki/uploads/images/gallery/2020-09/image-1600629366205.png) 16\. Now we have to go through the Turnkey setup. Skip the API entry. [![image-1600629426391.png](https://thehomelab.wiki/uploads/images/gallery/2020-09/scaled-1680-/image-1600629426391.png)](https://thehomelab.wiki/uploads/images/gallery/2020-09/image-1600629426391.png) 17\. Skip the notifications. [![image-1600629480902.png](https://thehomelab.wiki/uploads/images/gallery/2020-09/scaled-1680-/image-1600629480902.png)](https://thehomelab.wiki/uploads/images/gallery/2020-09/image-1600629480902.png) 18\. Install security updates. [![image-1600629525146.png](https://thehomelab.wiki/uploads/images/gallery/2020-09/scaled-1680-/image-1600629525146.png)](https://thehomelab.wiki/uploads/images/gallery/2020-09/image-1600629525146.png) This will take you to the final screen and will show you what the access IP and ports are for the appliance services. It's important to make a note of these incase you need them for future use. [![image-1600629670008.png](https://thehomelab.wiki/uploads/images/gallery/2020-09/scaled-1680-/image-1600629670008.png)](https://thehomelab.wiki/uploads/images/gallery/2020-09/image-1600629670008.png) 19\. Press CTRL+C to clear the console and now you can update the system by typing the commands below. Since we only use root in Proxmox, you do not need to use sudo for any commands through the console. ``` apt-get update ``` then ``` apt-get upgrade ``` ### Install Docker on your Promox Container Run the following commands one at a time. ``` apt install docker.io ``` ``` systemctl enable docker ``` ``` systemctl start docker ``` Now make sure Docker is running ``` systemctl status docker ``` ### Install Portainer This is completely optional but I wanted to add this in here just in-case you wanted a Docker UI. Run the following command to install Portainer 2.0 ``` docker run -d \ --name="portainer" \ --restart on-failure \ -p 9000:9000 \ -v /var/run/docker.sock:/var/run/docker.sock \ -v portainer_data:/data \ portainer/portainer-ce ``` Once completed, visit the IP of your container and port 9000. Example: 192.168.1.168:9000. If you forgot the IP of your container, open the console and type ``` ip addr ``` Press enter and find your container IP. It's usually towards the top. Did you find this helpful? [Subscribe to me on Youtube](https://www.youtube.com/c/GeekedTV) for more content!