sharing folder with host on LXC
1. Create profile (makes life easier)
Take this script (a slightly modified version from here), save it and make it executable and save it.
#!/bin/bash set -eu _UID=$(id -u) GID=$(id -g) # give lxd permission to map your user/group id through grep root:$_UID:1 /etc/subuid -qs || sudo usermod --add-subuids ${_UID}-${_UID} --add-subgids ${GID}-${GID} root # set up a separate key to make sure we can log in automatically via ssh # with $HOME mounted KEY=$HOME/.ssh/id_lxd_$USER PUBKEY=$KEY.pub AUTHORIZED_KEYS=$HOME/.ssh/authorized_keys [ -f $PUBKEY ] || ssh-keygen -f $KEY -N '' -C "key for local lxds" grep "$(cat $PUBKEY)" $AUTHORIZED_KEYS -qs || cat $PUBKEY >> $AUTHORIZED_KEYS # create a profile to control this, name it after $USER lxc profile create $USER &> /dev/null || true # configure profile # this will rewrite the whole profile cat << EOF | lxc profile edit $USER name: $USER description: allow home dir mounting for $USER config: # this part maps uid/gid on the host to the same on the container raw.idmap: | uid $_UID 1000 gid $GID 1000 # note: user.user-data is still available user.vendor-data: | #cloud-config users: - name: $USER groups: sudo shell: $SHELL sudo: ['ALL=(ALL) NOPASSWD:ALL'] # ensure users shell is installed packages: - $(dpkg -S $(readlink -m $SHELL) | cut -d: -f1) EOF
So – this will take care of mapping your UIDs GIDs so you can edit the files in your mount point to your newly added user
2. Create your container
lxc launch ubuntu:18.04 <YOUR-CONTAINER> -p $USER -p default
3. Add you shared folder as a device and mount it
lxc config device add YOUR-CONTAINER YOUR-DEVICE-NAME disk source=/home/<user>/<projects-folder> path=/home/<user>/<projects-folder>
Congratulations – you now have a shiny Ubuntu 18.04 container to do your dev work in.
You might want to jump in and install some important stuff
lxc exec YOUR-CONTAINER /bin/bash $ apt install build-essential ....