Skip to main content

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 for 7.

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) 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

2. Search for the core template and click download.

image-1600627549435.png

3. When it's done you can click the "Create CT" button in the upper right corner.

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

5. Select the storage where you downloaded the Turnkey Core template then choose the template.

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

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

8. On the Memory tab I usually allocate 2gb for containers.

image-1600628541219.png

9. On the Network tab I let the DHCP host assign the IP automatically.

image-1600628641571.png

10. On the DNS tab I just use my gateway IP.

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

12. Once done, you will see "TASK OK". Click the X in the upper corner and proceed to the next step.

image-1600628834060.png

13. Select the container and then click on Options then double click on Features.

image-1600629985611.png

14. Tick Nesting then click ok.

image-1600629027165.png

15. Now you can start your container and view the console.

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

16. Now we have to go through the Turnkey setup. Skip the API entry.

image-1600629426391.png

17.  Skip the notifications.

image-1600629480902.png

18. Install security updates.

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

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 for more content!