- Lab
- A Cloud Guru
Serving a Website from a LXD Container
Containers can serve many purposes, but one of the most common is serving websites. In this hands-on lab, we'll leverage everyday LXD commands to initialize a container, configure it to serve a website, and snapshot it so we can later deploy a cluster if desired.
Path Info
Table of Contents
-
Challenge
Create the Container
Launch an Alpine Linux 3.18 container, called
web01
:lxc launch images:alpine/3.18 web01
-
Challenge
Configure nginx
Access the container's shell:
lxc exec web01 -- ash
Update the container and install
nginx
:apk update apk add nginx
Configure
nginx
to start at boot:rc-service nginx start && rc-update add nginx default
Update the
nginx
configuration to serve content out of/var/www/hub
at port 80:vi /etc/nginx/http.d/default.conf
server { listen 80 default_server; listen [::]:80 default_server; root /var/www/hub/; }
Exit the container:
exit
-
Challenge
Deploy the Website
Push the website to the container:
lxc file push hub/ web01/var/www/ --create-dirs -r
Then restart nginx:
lxc exec web01 -- rc-service nginx restart
We can confirm this work by running
curl
against the private IP of our container:lxc list curl <container-ip-from-list>
-
Challenge
Snapshot the Container
Take a snapshot of the
web01
container:lxc snapshot web01 1.0
-
Challenge
Map Ports
Ensure that when the host's IP is accessed, it forwards to the container:
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to <container_ip>:80
To confirm visit the public IP of your provided server.
What's a lab?
Hands-on Labs are real environments created by industry experts to help you learn. These environments help you gain knowledge and experience, practice without compromising your system, test without risk, destroy without fear, and let you learn from your mistakes. Hands-on Labs: practice your skills before delivering in the real world.
Provided environment for hands-on practice
We will provide the credentials and environment necessary for you to practice right within your browser.
Guided walkthrough
Follow along with the author’s guided walkthrough and build something new in your provided environment!
Did you know?
On average, you retain 75% more of your learning if you get time for practice.