LXD 2.16

https://linuxcontainers.org/lxd/news/

New features:

Ceph RBD can now be used as a LXD storage backend (including "lxd init" support).
A new security.idmap.base key has been added to control what base uid/gid to use on the host when using security.idmap.isolated.
Image downloads can now be interrupted.
File transfers now support sending symlinks
"lxc copy" and "lxc move" will now show progress information
"lxc copy" and "lxc move" now support "relay" and "push" modes to go around firewalls and NAT (--mode option)
Custom storage volumes can now have their size set and modified
"lxc image import" now supports reading from a directory containing an unpacked image
The "vlan" property can now be set on "physical" network interfaces (was previously restricted to "macvlan")
It's now possible to delete image volumes from a storage pool. This allows removing a storage pool without having to remove the images from the image store.
The image metadata and template files can now be created or modified through the API prior to publish a container as an image.
Stateful snapshots can now be restored as a new container on a remote host.

Bugfixes:

client: Allow specifying base http client (Issue #3580)
client: Commonize error handling
client: Don't live migrate stopped containers
client: Fix crash in operation handler
client: Fix file push/pull with names containing spaces
client: Fix handling of public LXD remote (Issue #3464)
client: Fix race condition in operation handling
client: Improve migration relay code
client: Make it possible to retrieve HTTP client (Issue #3580)
client: Properly handle remote disconnections
client.go: Make deprecation warnings visible in godoc (Issue #3466)
config: Try to be clever about ":" in snapshots
doc: Add note on use of previous image from cache (Issue #3590)
doc: Document storage_images_delete API extension (Issue #3539)
doc: Document the exec control API (Issue #3574)
doc: Expand lxd import documentation
doc: Extend/rework security-related documentation.
doc: Fix help to provide sample that actually works
doc: Fix spaces, commas, quotes, brackets where needed
doc: Initial documentation of container env (Issue #477)
doc: Need quotes for /1.0/networks/ "config"."ipv6.nat"
doc: Remove extraneous backslash
doc: Update containers.md
github: ISSUE_TEMPLATE.md: Fix lxd.log location
global: Fix a few typos
lxc/config: Removal of multiple devices at once
lxc: Create missing config paths
lxc: Cross-platform HOME handling (Issue #3573)
lxc/exec: Fix signal handler for Windows (Issue #3496)
lxc/file: Don't specify mode for intermediate directories created with push -p
lxc/image: Always use long fingerprint in exported filenames.
lxc/image: Fix "lxc image copy" not recording the source
lxc/image: Improve "lxc image list" filter handling (Issue #3555)
lxc/image: Missing error handling
lxc/image: Properly record alias source on copy (Issue #3586)
lxc/image: Update image aliases when they already exist
lxc/launch: Fix failure to launch containers with random names
lxc/list: Error if --columns and --fast are used together
lxc/publish: Change compression_algorithm to compressionAlgorithm
lxc/publish: Fix fingerprint printing
lxc/utils: Avoid potential progress race condition
lxc/utils: Println doesn't do format strings
lxd/container: Fix broken error handling
lxd/containers: Better handle errors in memory reporting (Issue #3482)
lxd/containers: Show underlying error when container delete fails
lxd/containers: Support for LXC 2.1 configuration keys (and fallback)
lxd/images: Clear error for image not found
lxd/images: Fix image refresh when fingerprint is passed.
lxd/import: Keep volatile keys
lxd/import: Remove last dependency on symlink
lxd/init: Detect LVM thin provisioning tools (Issue #3497)
lxd/networks: Don't fail on non-process PIDs
lxd/storage: Check idmaps of all attaching containers (Issue #3548)
lxd/storage: Fix ETag handling of volumes
lxd/storage: Fix readonly mode for directory mount
lxd/storage: Fix UsedBy for containers and images
lxd/storage: Fix volume config logic
lxd/storage: Introduce a new storagePoolVolumeUsedByContainersGet function
lxd/storage: Move db deletion to driver implementation
lxd/storage: Restrict size property in pool config
lxd/storage/lvm: Convert to RunCommand (Issue #3507)
lxd/storage/lvm: Fix broken error handling
lxd/storage/lvm: Fix non-thinpool container creation (Issue #3543)
lxd/storage/lvm: Non-functional changes
lxd/storage/zfs: Moved all the helper functions to storage_zfs_utils.go (Issue #3471)
lxd/storage/zfs: Removed s.zfsPoolVolumeCreate() and changed all s.zfsPoolVolumeCreate() to use zfsPoolVolumeCreate()
lxd/storage/zfs: Set canmount=noauto on all mountable datasets (Issue #3437)
lxd/storage/zfs: Used s.getOnDiskPoolName() instead of s.pool.Name
README: Fix broken links
README: Seriously rework the content
shared/cancel: Fix crash if no canceler is setup
shared/cancel: Fix return value ordering
shared/cancel: Use request Cancel channel
shared: Use custom error type for RunCommand (issue #3502)
shared/util: Guess size when sysconf() returns -1 (Issue #3581)
shared: Websocket proxy should proxy everything
tests: Add a test for "lxc storage volume set"
tests: Add a test for read-only disks
tests: Add import test when symlink has been removed
tests: Add test for push and relay mode
tests: Allow running tests without lxdbr0
tests: Always pass --force to stop/restart
tests: More apparmor presence checking
tests: Skip apparmor tests when no kernel support
tests: Validate that the right busybox is present
zfs: Use tryMount when mounting filesystem