====== Command via a Container ====== There are occasions where a command might be useful within AstLinux, but it may use python, golang, etc. or is just large in comparison to the 50 MB size of the AstLinux image. A LXC container can be a handy tool to add such a command. **Resource Usage:** (minimum) * Memory: 100 MB * Storage: 0.4 GB \\ Below is an example how to add the ''lynx'' command line web browser. The ''lynx'' container only runs when needed. First, it is assumed the ''lxcbr0'' interface is setup per the **[[userdoc:guest_lxc_container#quick_start_guide|Quick Start Guide]]** -> Enable LXC Support. Then from the CLI: lxc-create -t download -n lynx -- -d debian -r buster -a amd64 --no-validate service lxc restart lxc-attach lynx apt update apt install lynx ca-certificates fping exit Next, stop the ''lynx'' container and keep it from automatically starting. lxc-stop lynx sed -i 's/^lxc.start.auto=1/lxc.start.auto=0/' /var/lib/lxc/lynx/config Finally, create a wrapper script to start/stop the container and issue a command. Place this script at ''/mnt/kd/bin/lynx'' and give it ''chmod 755'' permissions. #!/bin/sh ## ## lynx wrapper for LXC Debian 10 container ## ## generate a random uid rand_uid=$((RANDOM % 4999 + 95000)) ## Destination IP to test when container network is active ping_ip="8.8.4.4" trap 'printf "Abort\n" >&2; lxc-stop lynx; exit 1' INT TERM EXIT lxc-start lynx printf "Waiting for container network to become active... " lxc-attach lynx -u $rand_uid -- fping -q -r15 $ping_ip printf "OK\n" lxc-attach lynx -u $rand_uid -- lynx "$@" lxc-stop lynx trap - INT TERM EXIT exit 0 !!Tip ->!! If you edit ''/var/lib/lxc/lynx/config'' and assign a manual IP address, the container starts very quickly, whereas using DHCP it takes 4-6 seconds to establish the network. Test it! /mnt/kd/bin/lynx https://www.astlinux-project.org \\ !!Related Info ->!! **[[userdoc:guest_lxc_container|LXC container in AstLinux]]**