1. What is Docker?
1.1. Light-weight Virtual Machines
1.1.1. Virtual Machines require more resources
1.1.2. Docker uses container technology
1.2. Container Technology
1.2.1. Based on Linux Isolation Technologies
1.2.1.1. chroot
1.2.1.1.1. Allows you to change the root directory for process
1.2.1.2. Linux Namespaces
1.2.1.2.1. Process Isolation
1.2.1.2.2. File isolation
1.2.1.2.3. Network Isolation
1.2.1.2.4. I/O Isolation
1.3. Cross-Platform
1.3.1. Works on
1.3.1.1. Linux
1.3.1.2. Windows
1.3.1.2.1. Windows 10 Enterprise with Hypervisor Virtual Machine
1.3.1.2.2. Windows Server 2016 as native container support
1.3.1.2.3. Use Docker for Windows
1.3.1.3. Mac
1.3.1.3.1. Use Docker for Mac
1.3.1.3.2. Uses VirtualBox for its underlying server, Linux.
1.4. Makes the following works easier
1.4.1. Deployment
1.4.2. Testing
1.4.3. Sandboxing
1.4.4. Sharing
1.4.4.1. store.docker.com
1.4.5. Installing
1.4.6. Distributing
2. Server/Client Architecture
2.1. Client
2.1.1. The CLI that interacts with Docker Engine using REST API that wraps the server.
2.2. Server
2.2.1. Where the docker daemon is working.
2.3. REST API
2.3.1. Exposes public functionality that server provides to the client.
2.4. Client/Server means...
2.4.1. You can have multiple servers and clients
2.4.2. It is where Docker Machine comes into play
2.5. Docker Swarm
3. Building Blocks
3.1. Images
3.1.1. What is an Image?
3.1.2. You can ...
3.1.2.1. build new images based on ...
3.1.2.1.1. Existing images
3.1.2.1.2. From scratch
3.1.2.2. Share images on Docker Hub/Store
3.1.2.2.1. docker pull
3.1.2.2.2. docker push
3.1.2.3. create containers from images.
3.1.2.4. remove images.
3.1.3. Image Building
3.1.3.1. Where to store image building commands?
3.1.3.1.1. Dockerfile
3.1.3.2. How to run image building process?
3.1.3.2.1. "docker build" command.
3.1.3.3. How images are built?
3.1.3.3.1. Layered File System
3.1.3.4. Can use existing images as a base?
3.1.3.4.1. Yes!
3.2. Containers
4. Docker Toolbox
4.1. Docker Machine
4.1.1. Let's you install docker engine on virtual hosts
4.1.1.1. Virtual Host?
4.1.1.1.1. On Windows and Mac, Docker does not work natively, as these operating systems don't have native container support. Therefore, Docker installs a Linux virtual host for it to run on. So the containers will run on this native host within Docker environment.
4.1.1.1.2. On Linux, we don't need virtual hosts, since the host system will be the Linux operating system itself. Docker uses LXC (Linux Containers).
4.1.2. No need for Docker Machine for Linux. It is required for Windows and Mac computers.
4.1.3. Replaced by Docker for Windows and Docker for Mac.
4.1.3.1. They use different virtualization technology
4.1.3.1.1. Docker Machine uses
4.1.3.1.2. Docker for Mac
4.1.3.1.3. Docker for Windows
4.2. Docker Compose
4.2.1. Compose and run multiple containers
4.2.2. Uses YML as the configuration bootstrapper
4.3. Docker Engine
4.4. Kitematic
4.4.1. A GUI application that allows an easy management of docker containers and images.