Skip to content

Instantly share code, notes, and snippets.

@asedmammad
Forked from berndbausch/LXD-cheat-sheet.md
Last active November 26, 2021 21:15
Show Gist options
  • Save asedmammad/c9abb6f28ffe959b91ad6a8aadb214f4 to your computer and use it in GitHub Desktop.
Save asedmammad/c9abb6f28ffe959b91ad6a8aadb214f4 to your computer and use it in GitHub Desktop.

Revisions

  1. asedmammad revised this gist Nov 26, 2021. 1 changed file with 6 additions and 1 deletion.
    7 changes: 6 additions & 1 deletion LXD-cheat-sheet.md
    Original file line number Diff line number Diff line change
    @@ -84,4 +84,9 @@ lxc restore CONTAINERNAME SNAPNAME # resets the container to snapshot
    lxc copy CONTAINERNAME/SNAPNAME NEWCONTAINER # new container from snapshot
    lxc delete CONTAINERNAME/SNAPNAME
    lxc info CONTAINERNAME # lists snapshots among other info
    lxc move CONTAINERNAME/SNAPNAME CONTAINERNAME/NEWSNAPNAME # rename snapshot
    lxc move CONTAINERNAME/SNAPNAME CONTAINERNAME/NEWSNAPNAME # rename snapshot
    ```
    ### Map a directory
    ```
    lxc config device add CONTAINERNAME dir_name disk source=/path/to/your/directory path=/path/to/where/you/want/folder/in/lxc
    ```
  2. @berndbausch berndbausch revised this gist Feb 28, 2018. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion LXD-cheat-sheet.md
    Original file line number Diff line number Diff line change
    @@ -70,7 +70,7 @@ lxc exec CONTAINERNAME -- PROGRAM OPTIONS
    lxc exec CONTAINERNAME sh
    lxc exec CONATINERNAME --env KEY=VALUE PROGRAM # environment variable
    ```
    The program must exist inside the container. This command runs the program in all the namespaces and cgroups of the container.
    This command runs the program in all the namespaces and cgroups of the container. The program must exist inside the container.
    ### Access container files
    ```
    lxc file pull CONTAINERNAME/etc/passwd /tmp/mypasswd
  3. @berndbausch berndbausch revised this gist Feb 28, 2018. 1 changed file with 6 additions and 5 deletions.
    11 changes: 6 additions & 5 deletions LXD-cheat-sheet.md
    Original file line number Diff line number Diff line change
    @@ -10,19 +10,20 @@ lxc image list images: # images: is an unsupported source
    lxc image alias list images: # lists user-friendly names
    ```
    ### Launch a container
    #### create and start it
    This creates and starts a container.
    ```
    lxc launch ubuntu:14.04 CONTAINERNAME   # image and container names are optional
    lxc launch ubuntu:14.04/armhf armcont   # specific architecture
    lxc launch images:alpine/3.3/amd64 # unsupported images: source
    ```
    #### Create containers
    #### Create container
    Without starting it.
    ```
    lxc init images:alpine/3.3/amd64 alpinecont
    lxc copy CONTAINER1 CONTAINER2 # clone
    lxc delete alpinecont [--force] # --force if it is running
    ```
    #### start/stop after creating it
    #### Start/stop after creating it
    ```
    lxc start alpinecont
    lxc stop alpinecont [--force] # --force if it doesn't want to stop
    @@ -36,7 +37,7 @@ lxc list --columns "nsapt" # name, status, arch, PID of init, type
    lxc list security.privileged=true # filter for properties
    lxc info CONTAINERNAME # detailed info about one container
    ```
    #### available columns for the list command
    #### Available columns for the list command
    ```
    4 - IPv4 address
    6 - IPv6 address
    @@ -54,7 +55,7 @@ lxc info CONTAINERNAME # detailed info about one container
    lxc move CONTAINERNAME NEWNAME
    ```
    ### Configuration
    Changes are effective immediately, even if container is running.
    Config changes are effective immediately, even if container is running.
    ```
    export VISUAL=/usr/bin/vim
    lxc config edit CONTAINERNAME # launches editor
  4. @berndbausch berndbausch revised this gist Feb 28, 2018. 1 changed file with 37 additions and 1 deletion.
    38 changes: 37 additions & 1 deletion LXD-cheat-sheet.md
    Original file line number Diff line number Diff line change
    @@ -16,9 +16,10 @@ lxc launch ubuntu:14.04 CONTAINERNAME   # image and container names are optiona
    lxc launch ubuntu:14.04/armhf armcont   # specific architecture
    lxc launch images:alpine/3.3/amd64 # unsupported images: source
    ```
    #### only create it, and delete it
    #### Create containers
    ```
    lxc init images:alpine/3.3/amd64 alpinecont
    lxc copy CONTAINER1 CONTAINER2 # clone
    lxc delete alpinecont [--force] # --force if it is running
    ```
    #### start/stop after creating it
    @@ -48,3 +49,38 @@ lxc info CONTAINERNAME # detailed info about one container
    S - Number of snapshots
    t - Type (persistent or ephemeral)
    ```
    ### Rename
    ```
    lxc move CONTAINERNAME NEWNAME
    ```
    ### Configuration
    Changes are effective immediately, even if container is running.
    ```
    export VISUAL=/usr/bin/vim
    lxc config edit CONTAINERNAME # launches editor
    lxc config set CONTAINERNAME KEY VALUE # change a single config item
    lxc config device add CONTAINERNAME DEVICE TYPE KEY=VALUE
    lxc config show [--expanded] CONTAINERNAME
    Configuration settings can be saved as **profiles**.
    ```
    ### Enter the container
    ```
    lxc exec CONTAINERNAME -- PROGRAM OPTIONS
    lxc exec CONTAINERNAME sh
    lxc exec CONATINERNAME --env KEY=VALUE PROGRAM # environment variable
    ```
    The program must exist inside the container. This command runs the program in all the namespaces and cgroups of the container.
    ### Access container files
    ```
    lxc file pull CONTAINERNAME/etc/passwd /tmp/mypasswd
    lxc file push /tmp/mypasswd CONTAINERNAME/etc/passwd
    lxc file edit CONTAINERNAME/etc/passwd
    ```
    ### Snapshots
    ```
    lxc snapshot CONTAINERNAME SNAPNAME # SNAPNAME is optional; default name snap*X*
    lxc restore CONTAINERNAME SNAPNAME # resets the container to snapshot
    lxc copy CONTAINERNAME/SNAPNAME NEWCONTAINER # new container from snapshot
    lxc delete CONTAINERNAME/SNAPNAME
    lxc info CONTAINERNAME # lists snapshots among other info
    lxc move CONTAINERNAME/SNAPNAME CONTAINERNAME/NEWSNAPNAME # rename snapshot
  5. @berndbausch berndbausch created this gist Feb 28, 2018.
    50 changes: 50 additions & 0 deletions LXD-cheat-sheet.md
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,50 @@
    # Useful LXD commands
    Summarized from https://stgraber.org/2016/03/19/lxd-2-0-your-first-lxd-container-312/.

    Interestingly, the LXD command line client is named.... `lxc`!

    ### List available containers
    ```
    lxc image list ubuntu: # ubuntu: is officially supported image source
    lxc image list images: # images: is an unsupported source
    lxc image alias list images: # lists user-friendly names
    ```
    ### Launch a container
    #### create and start it
    ```
    lxc launch ubuntu:14.04 CONTAINERNAME   # image and container names are optional
    lxc launch ubuntu:14.04/armhf armcont   # specific architecture
    lxc launch images:alpine/3.3/amd64 # unsupported images: source
    ```
    #### only create it, and delete it
    ```
    lxc init images:alpine/3.3/amd64 alpinecont
    lxc delete alpinecont [--force] # --force if it is running
    ```
    #### start/stop after creating it
    ```
    lxc start alpinecont
    lxc stop alpinecont [--force] # --force if it doesn't want to stop
    lxc restart alpinecont [--force]
    lxc pause alpinecont # SIGSTOP to all container processes
    ```
    ### List local containers
    ```
    lxc list
    lxc list --columns "nsapt" # name, status, arch, PID of init, type
    lxc list security.privileged=true # filter for properties
    lxc info CONTAINERNAME # detailed info about one container
    ```
    #### available columns for the list command
    ```
    4 - IPv4 address
    6 - IPv6 address
    a - Architecture
    c - Creation date
    n - Name
    p - PID of the container's init process
    P - Profiles
    s - State
    S - Number of snapshots
    t - Type (persistent or ephemeral)
    ```