Man7 System Programming For Linux Containers: Audience and Prerequisites Course Materials
Man7 System Programming For Linux Containers: Audience and Prerequisites Course Materials
org
Training and Consulting
Course materials
The audience for this course includes designers and developers who are building, troubleshooting, and administering
system-level applications for Linux-based container systems.
To get the most out of the course, participants should
have:
For course prices, upcoming course dates, and further information about the course, please visit the course web page,
http://man7.org/training/sys_prog_lxcon/.
system programming.
He is actively involved in Linux development, working with kernel developers on
testing, review, and design of new Linux
kerneluser-space APIs.
Since 2004, he has been the maintainer of
the Linux man-pages project, which provides the manual pages documenting the
Linux kerneluser-space and GNU C library
APIs.
Version: 2016-07-05
1. Fundamental Concepts
System calls & library functions
Error handling
File descriptors
open(), close(), read(), write()
Seeking to a file offset: lseek()
Atomicity and races
Relationship between file
descriptors and open files
Duplicating file descriptors
Open file status flags
Buffering in stdio and kernel
Controlling buffering
3. File Attributes
4. Processes
Process IDs
Memory layout of a process
Command-line arguments
Environment list
Process groups and sessions (*)
Nonlocal gotos (*)
5. Process Credentials
6. Signals
7. Process Lifecycle
Process creation: fork()
File descriptors and fork()
Process termination
http://man7.org/training/
13. Seccomp
8. Executing Programs
2. File I/O
14. Cgroups
Overview/purpose of cgroups
Cgroup filesystem
Hierarchies and controllers
Populating a cgroup
Resource controllers (PID,
CPU, memory, etc.)
Cgroups v2 (rationale, design
changes, single unified
hierarchy, delegation)
10. Capabilities
Process and file capabilities
(permitted, effective, and
inheritable)
Viewing and setting file
capabilities from the shell
Text-form capabilities
Transformation of capabilities
by execve()
Capabilities bounding set
Ambient capabilities
Problems with capabilities
Overview
Namespace types
UTS namespaces
Mount namespaces; shared
subtrees
IPC namespaces
Network namespaces
(overview)
PID namespaces
User namespaces (overview)
Namespaces APIs:
/proc/PID/ns/, clone(),
setns(), and unshare()
TCP/IP fundamentals
Internet socket addresses
Data representation issues
getaddrinfo(), getnameinfo()
11. Namespaces
Nonblocking I/O
Signal-driven I/O
poll() and select()
The epoll API
Basics
Filtering strace output
Tracing children
Further strace options
Version: 2016-07-05