I know that everyone uses Docker but sometimes you have to take care of some legacy server where you have, for example, LXC container in which your client runs a Docker container (I know it's weird).
Le'ts imagine you have in you LXC container a device which is mounted as "/var/lib/docker" path. You don't have enough space on it and you don't want to restart the server or even LXC daemon. Let's just replace it.
Add a new device:
lxc storage create new-device btrfs size=100GB
Add a new volume to the device:
lxc storage volume create new-device volume
Then we have get into the LXC container and stop the Docker daemon:
lxc exec lxc-container -- /bin/bash
systemctl stop docker
exit
Disable the previous device from the LXC container:
lxc config device remove lxc-container old-device
Add the new device:
lxc config device add lxc-container some-name disk pool=new-device path=/var/lib/docker source=volume
Run the Docker daemon in the container.
Some additional useful commands:
- storage list: "lxc storage list",
- what connected device your container has: "lxc config show container-name --expanded",
- run a LXC container with a given profile and image: "lxc launch ubuntu:20.04 container-name -p default",
- run containers: "lxc list",
- stop and remove a container: "lxc stop container-name", "lxc delete container-name",
- information about a storage: "lxc storage show storage-name",
- list the volumes in a storage: "lxc storage volume list storage-name",
- remove a volume from a storage: "lxc storage volume delete storage-name volume-name",
- remove a storage: "lxc storage delete storage-name".