Bobcares

Docker inside LXC | Beginner’s guide

by | Jul 17, 2022

Running Docker inside LXC allows us to reap all the benefits of running it in a separate environment from the host without having to deal with the complexity and overhead associated with running it in a full virtual machine.

All inquiries, no matter how trivial, are answered by Bobcares as part of our Docker Hosting Support.

Let’s examine the specifics of Setting up Docker to run in a privileged LXC container in more detail.

Running Docker Inside LXC

For running applications, Docker is a great containerization technology. It completely isolates various applications from one another and only permits connections under our explicit instructions.

docker inside lxc

A technology called LXC (Linux Containers) sits in between virtual machines and Docker containers. Although it is still a container technology, with a shared kernel and everything, it is intended to run a complete persistent OS rather than a temporary environment for an application. Thus, LXC is a fantastic technology for many uses.

Create A Privileged Container.

Create Container

Firstly, let’s give the container the name docker_bobcares.

$ sudo lxc-create -t download -n docker_bobcares
Install SSH In The Server

Then, run the commands listed below while on the host.


$ sudo lxc-start -n docker_bobcares
$ sudo lxc-attach -n docker_bobcares
$ sudo apt update
$ sudo apt install openssh-server
From the output of the command sudo lxc-ls --fancy, note the internal IP of this container, docker_bobcares.
Edit The Container’s Configuration File.
Basically, the configuration file for this privileged container is located in /var/lib/lxc/docker_bobcares/config. Then, add the subsequent lines:

# For docker
lxc.apparmor.profile = unconfined
lxc.cgroup.devices.allow = a
lxc.cap.drop =

Additionally, we added lines for GPU passthrough, but this is separate from Docker.

Restart The Container

Use the following commands on the host:


$ sudo lxc-stop -n docker_bobcares
$ sudo lxc-start -n docker_bobcares -d
Then, SSH into the container
ssh supportteam@IP_address

Configure Docker Inside The Container

Then, execute these commands inside of docker bobcares.


$ sudo apt-get update
$ sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ software-properties-common
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
Now run the command
$ sudo apt-key fingerprint 0FDEDC98
$ sudo add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable"
 Then run the command's 
$ sudo apt-get update
$ sudo apt install docker-ce=18.06.1~ce~3-0~ubuntu

Test Docker Inside The Container

After installing docker-ce while still inside the container run the command:


$ sudo docker run hello-world
[sudo] password for supportteam:

Hello from Docker!

This message indicates that the installation seems to be operating as intended.

Docker performs the actions listed below to produce this message:

  1. Firstly, the Docker daemon was contacted by the Docker client.
  2. Then, the “hello-world” image was downloaded by the Docker daemon from the Docker Hub.
  3. Then, this image was used to create a new container by the Docker daemon, which then executed the executable to generate the output we are seeing right now.
  4. Finally, stream the output from the Docker daemon to the Docker client, which then sent it to the terminal.

With the following command, we can launch an Ubuntu container to try something more daring:

 $ docker run -it ubuntu bash

[Looking for a solution to another query? We are just a click away.]

Conclusion

In conclusion, running Docker inside LXC enables us to enjoy all the advantages of running it in a different environment from the host without the complexity. Our Support team reviewed the specifics of running Docker inside LXC.

PREVENT YOUR SERVER FROM CRASHING!

Never again lose customers to poor server speed! Let us help you.

Our server experts will monitor & maintain your server 24/7 so that it remains lightning fast and secure.

GET STARTED

2 Comments

  1. Alex

    Thanks for the lxc/config commands !
    It works perfectly now 🙂

    Reply
    • Hiba Razak

      Hi Alex,
      Thanks for the feedback. We are glad to know that our article was helpful for you 🙂 .

      Reply

Submit a Comment

Your email address will not be published. Required fields are marked *

Never again lose customers to poor
server speed! Let us help you.

Privacy Preference Center

Necessary

Necessary cookies help make a website usable by enabling basic functions like page navigation and access to secure areas of the website. The website cannot function properly without these cookies.

PHPSESSID - Preserves user session state across page requests.

gdpr[consent_types] - Used to store user consents.

gdpr[allowed_cookies] - Used to store user allowed cookies.

PHPSESSID, gdpr[consent_types], gdpr[allowed_cookies]
PHPSESSID
WHMCSpKDlPzh2chML

Statistics

Statistic cookies help website owners to understand how visitors interact with websites by collecting and reporting information anonymously.

_ga - Preserves user session state across page requests.

_gat - Used by Google Analytics to throttle request rate

_gid - Registers a unique ID that is used to generate statistical data on how you use the website.

smartlookCookie - Used to collect user device and location information of the site visitors to improve the websites User Experience.

_ga, _gat, _gid
_ga, _gat, _gid
smartlookCookie
_clck, _clsk, CLID, ANONCHK, MR, MUID, SM

Marketing

Marketing cookies are used to track visitors across websites. The intention is to display ads that are relevant and engaging for the individual user and thereby more valuable for publishers and third party advertisers.

IDE - Used by Google DoubleClick to register and report the website user's actions after viewing or clicking one of the advertiser's ads with the purpose of measuring the efficacy of an ad and to present targeted ads to the user.

test_cookie - Used to check if the user's browser supports cookies.

1P_JAR - Google cookie. These cookies are used to collect website statistics and track conversion rates.

NID - Registers a unique ID that identifies a returning user's device. The ID is used for serving ads that are most relevant to the user.

DV - Google ad personalisation

_reb2bgeo - The visitor's geographical location

_reb2bloaded - Whether or not the script loaded for the visitor

_reb2bref - The referring URL for the visit

_reb2bsessionID - The visitor's RB2B session ID

_reb2buid - The visitor's RB2B user ID

IDE, test_cookie, 1P_JAR, NID, DV, NID
IDE, test_cookie
1P_JAR, NID, DV
NID
hblid
_reb2bgeo, _reb2bloaded, _reb2bref, _reb2bsessionID, _reb2buid

Security

These are essential site cookies, used by the google reCAPTCHA. These cookies use an unique identifier to verify if a visitor is human or a bot.

SID, APISID, HSID, NID, PREF
SID, APISID, HSID, NID, PREF