diff --git a/slides/intro/First_Containers.md b/slides/intro/First_Containers.md index 72cb3e5c..aa47a764 100644 --- a/slides/intro/First_Containers.md +++ b/slides/intro/First_Containers.md @@ -110,6 +110,8 @@ Beautiful! .emoji[😍] --- +class: in-person + ## Counting packages in the container Let's check how many packages are installed there. @@ -127,6 +129,8 @@ How many packages do we have on our host? --- +class: in-person + ## Counting packages on the host Exit the container by logging out of the shell, like you would usually do. @@ -145,18 +149,34 @@ Now, try to: --- +class: self-paced + +## Comparing the container and the host + +Exit the container by logging out of the shell, with `^D` or `exit`. + +Now try to run `figlet`. Does that work? + +(It shouldn't; except if, by coincidence, you are running on a machine where figlet was installed before.) + +--- + ## Host and containers are independent things -* We ran an `ubuntu` container on an `ubuntu` host. +* We ran an `ubuntu` container on an Linux/Windows/macOS host. -* But they have different, independent packages. +* They have different, independent packages. * Installing something on the host doesn't expose it to the container. * And vice-versa. +* Even if both the host and the container have the same Linux distro! + * We can run *any container* on *any host*. + (One exception: Windows containers cannot run on Linux machines; at least not yet.) + --- ## Where's our container? diff --git a/slides/intro/Installing_Docker.md b/slides/intro/Installing_Docker.md index 57dc92d2..d1f98552 100644 --- a/slides/intro/Installing_Docker.md +++ b/slides/intro/Installing_Docker.md @@ -37,7 +37,9 @@ We can arbitrarily distinguish: ## Installing Docker on Linux -* The recommended method is to install the packages supplied by Docker Inc. +* The recommended method is to install the packages supplied by Docker Inc.: + + https://store.docker.com * The general method is: @@ -79,11 +81,11 @@ class: extra-details ## Installing Docker on macOS and Windows -* On macOS, the recommended method is to use Docker4Mac: +* On macOS, the recommended method is to use Docker for Mac: https://docs.docker.com/docker-for-mac/install/ -* On Windows 10 Pro, Enterprise, and Eduction, you can use Docker4Windows: +* On Windows 10 Pro, Enterprise, and Eduction, you can use Docker for Windows: https://docs.docker.com/docker-for-windows/install/ @@ -91,6 +93,33 @@ class: extra-details https://docs.docker.com/toolbox/toolbox_install_windows/ +* On Windows Server 2016, you can also install the native engine: + + https://docs.docker.com/install/windows/docker-ee/ + +--- + +## Docker for Mac and Docker for Windows + +* Special Docker Editions that integrate well with their respective host OS + +* Provide user-friendly GUI to edit Docker configuration and settings + +* Leverage the host OS virtualization subsystem (e.g. the [Hypervisor API](https://developer.apple.com/documentation/hypervisor) on macOS) + +* Installed like normal user applications on the host + +* Under the hood, they both run a tiny VM (transparent to our daily use) + +* Access network resources like normal applications +
(and therefore, play better with enterprise VPNs and firewalls) + +* Support filesystem sharing through volumes (we'll talk about this later) + +* They only support running one Docker VM at a time ... +
+ ... but we can use `docker-machine`, the Docker Toolbox, VirtualBox, etc. to get a cluster. + --- ## Running Docker on macOS and Windows @@ -110,25 +139,6 @@ This will also allow to use remote Engines exactly as if they were local. --- -## Docker4Mac and Docker4Windows - -* They let you run Docker without VirtualBox - -* They are installed like normal applications (think QEMU, but faster) - -* They access network resources like normal applications -
(and therefore, play well with enterprise VPNs and firewalls) - -* They support filesystem sharing through volumes (we'll talk about this later) - -* They only support running one Docker VM at a time ... - - ... so if you want to run a full cluster locally, install e.g. the Docker Toolbox - -* They can co-exist with the Docker Toolbox - ---- - ## Important PSA about security * If you have access to the Docker control socket, you can take over the machine diff --git a/slides/intro/Local_Development_Workflow.md b/slides/intro/Local_Development_Workflow.md index ec070198..11f53e22 100644 --- a/slides/intro/Local_Development_Workflow.md +++ b/slides/intro/Local_Development_Workflow.md @@ -69,7 +69,6 @@ Aha, a `Gemfile`! This is Ruby. Probably. We know this. Maybe? ```dockerfile FROM ruby -MAINTAINER Education Team at Docker COPY . /src WORKDIR /src @@ -179,6 +178,8 @@ $ docker run -d -v $(pwd):/src -P namer * We don't specify a command to run because is is already set in the Dockerfile. +Note: on Windows, replace `$(pwd)` with `%cd%` (or `${pwd}` if you use PowerShell). + --- ## Mounting volumes inside containers diff --git a/slides/intro/Publishing_To_Docker_Hub.md b/slides/intro/Publishing_To_Docker_Hub.md index 98b3b8ab..7dc6a18b 100644 --- a/slides/intro/Publishing_To_Docker_Hub.md +++ b/slides/intro/Publishing_To_Docker_Hub.md @@ -21,7 +21,7 @@ public images is free as well.* docker login ``` -.warning[When running Docker4Mac, Docker4Windows, or +.warning[When running Docker for Mac/Windows, or Docker on a Linux workstation, it can (and will when possible) integrate with your system's keyring to store your credentials securely. However, on most Linux