userdoc:guest_lxc_container_command

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
userdoc:guest_lxc_container_command [2020/05/31 21:19]
abelbeck created
userdoc:guest_lxc_container_command [2020/06/01 10:50] (current)
abelbeck
Line 1: Line 1:
 ====== Command via a Container ====== ====== 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]]**
  
  • userdoc/guest_lxc_container_command.1590977950.txt.gz
  • Last modified: 2020/05/31 21:19
  • by abelbeck