Back to the news overview

LXD 2.16 has been released

25th of July 2017

The changes in this release include

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.
    This controls 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
  • 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 just "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 and modified over the API.
    This allows fine tuning of all image metadata prior to publishing.
  • Stateful snapshots can now be restored as a new container on a remote host.


  • 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
  • github: 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

Try it for yourself

This new LXD release is already available for you to try on our demo service.


The release tarballs can be found on our download page.