Practical LXC and LXD
Total Page:16
File Type:pdf, Size:1020Kb
Practical LXC and LXD Linux Containers for Virtualization and Orchestration Senthil Kumaran S. Practical LXC and LXD Senthil Kumaran S. Chennai, Tamil Nadu, India ISBN-13 (pbk): 978-1-4842-3023-7 ISBN-13 (electronic): 978-1-4842-3024-4 DOI 10.1007/978-1-4842-3024-4 Library of Congress Control Number: 2017953000 Copyright © 2017 by Senthil Kumaran S. Any source code or other supplementary material referenced by the author in this book is available to readers on GitHub via the book’s product page, located at www.apress.com/978-1-4842-3023-7. For more detailed information, please visit http://www.apress.com/source-code. Contents at a Glance ■ Chapter 1: Introduction to Linux Containers................................... 1 ■ Chapter 2: Installation .................................................................. 11 ■ Chapter 3: Getting Started with LXC and LXD ............................... 23 ■ Chapter 4: LXC and LXD Resources .............................................. 39 ■ Chapter 5: Common Virtualization and Orchestration Tools ......... 59 ■ Chapter 6: Use Cases .................................................................... 97 ■ Chapter 7: Containers and Security ............................................ 145 Index .............................................................................................. 157 Contents ■ Chapter 1: Introduction to Linux Containers................................... 1 Container Definition ��������������������������������������������������������������������������������� 2 Container History ������������������������������������������������������������������������������������� 3 Features to Enable Containers ���������������������������������������������������������������� 4 Control Groups (Cgroups) �����������������������������������������������������������������������������������������4 Namespaces �������������������������������������������������������������������������������������������������������������6 Filesystem or rootfs ��������������������������������������������������������������������������������������������������8 Summary ������������������������������������������������������������������������������������������������� 9 ■ Chapter 2: Installation .................................................................. 11 LXC Installation �������������������������������������������������������������������������������������� 11 Installing LXC on Ubuntu�����������������������������������������������������������������������������������������12 LXC Default Configuration ���������������������������������������������������������������������������������������15 Networking Setup for LXC ��������������������������������������������������������������������������������������15 LXD Installation ������������������������������������������������������������������������������������� 18 LXC Requirements for LXD��������������������������������������������������������������������������������������18 Installing LXD on Ubuntu ����������������������������������������������������������������������������������������19 Summary ����������������������������������������������������������������������������������������������� 21 ■ Chapter 3: Getting Started with LXC and LXD ............................... 23 Using LXC ���������������������������������������������������������������������������������������������� 23 Templates ���������������������������������������������������������������������������������������������������������������23 Basic Usage ������������������������������������������������������������������������������������������������������������24 Using LXD ���������������������������������������������������������������������������������������������� 34 Using a Remote LXD As an Image Server ���������������������������������������������������������������34 Using the Built-in Remotes �������������������������������������������������������������������������������������35 Manually Importing an Image ���������������������������������������������������������������������������������35 Running Your First Container with LXD �������������������������������������������������� 35 Summary ����������������������������������������������������������������������������������������������� 38 ■ Chapter 4: LXC and LXD Resources .............................................. 39 Default LXC Templates��������������������������������������������������������������������������� 39 Download Template ������������������������������������������������������������������������������������������������39 Distribution-Specific Templates ������������������������������������������������������������������������������43 LXD Images ������������������������������������������������������������������������������������������� 49 LXD Image Formats ������������������������������������������������������������������������������������������������49 Using LXD Images ���������������������������������������������������������������������������������������������������53 Summary ����������������������������������������������������������������������������������������������� 58 ■ Chapter 5: Common Virtualization and Orchestration Tools ......... 59 libvirt ����������������������������������������������������������������������������������������������������� 59 Starting the Container ��������������������������������������������������������������������������������������������62 Connecting to the Container Console ���������������������������������������������������������������������62 Monitoring Container Utilization �����������������������������������������������������������������������������64 Rebooting the Container �����������������������������������������������������������������������������������������64 Stopping and Destroying the Container ������������������������������������������������������������������64 Undefining or Deleting a Container from libvirt ������������������������������������������������������65 Virtual Machine Manager GUI ���������������������������������������������������������������� 65 LXC with SaltStack �������������������������������������������������������������������������������� 74 Salt Master Setup ���������������������������������������������������������������������������������������������������75 Remote Salt Minion Setup ��������������������������������������������������������������������������������������77 Salt LXC Management ��������������������������������������������������������������������������������������������80 LXC with Vagrant ����������������������������������������������������������������������������������� 82 LXD-WebGUI ������������������������������������������������������������������������������������������ 85 LXD Configuration ���������������������������������������������������������������������������������������������������89 Using LXD-WebGUI��������������������������������������������������������������������������������������������������92 Summary ����������������������������������������������������������������������������������������������� 95 ■ Chapter 6: Use Cases .................................................................... 97 Using the Pelican Static Site Generator ������������������������������������������������ 98 Running Android CTS Within LXC ��������������������������������������������������������� 102 Running Unit Tests in LXC �������������������������������������������������������������������� 108 Running an Application Inside LXC ������������������������������������������������������ 109 Rolling Out Memcached Instances with LXC ��������������������������������������� 110 Doing a Live Migration with LXD ��������������������������������������������������������� 113 Running Other Architectures ��������������������������������������������������������������� 118 armhf Container ����������������������������������������������������������������������������������������������������119 ppc64el Container ������������������������������������������������������������������������������������������������122 Booting a VM Image in LXC ����������������������������������������������������������������� 123 Using JuJu with LXD ��������������������������������������������������������������������������� 126 Summary ��������������������������������������������������������������������������������������������� 144 ■ Chapter 7: Containers and Security ............................................ 145 Cgroups ����������������������������������������������������������������������������������������������� 145 Capabilities ������������������������������������������������������������������������������������������ 146 AppArmor �������������������������������������������������������������������������������������������� 146 SELinux������������������������������������������������������������������������������������������������ 147 Seccomp ��������������������������������������������������������������������������������������������� 147 User Namespaces ������������������������������������������������������������������������������� 148 Privileged Containers ��������������������������������������������������������������������������������������������148 Unprivileged Containers ���������������������������������������������������������������������������������������148 Containers and Internet of Things (IoT) ����������������������������������������������� 149 Case Study: Ubuntu Snappy Core �������������������������������������������������������� 151 Summary ���������������������������������������������������������������������������������������������