diff --git a/slides/kube/prereqs-k8s.md b/slides/common/prereqs.md similarity index 50% rename from slides/kube/prereqs-k8s.md rename to slides/common/prereqs.md index e76d4b8a..3c9a020d 100644 --- a/slides/kube/prereqs-k8s.md +++ b/slides/common/prereqs.md @@ -1,37 +1,22 @@ # Pre-requirements -- Computer with internet connection and a web browser +- Be comfortable with the UNIX command line -- For instructor-led workshops: an SSH client to connect to remote machines + - navigating directories - - on Linux, OS X, FreeBSD... you are probably all set + - editing files - - on Windows, get [putty](http://www.putty.org/), - Microsoft [Win32 OpenSSH](https://github.com/PowerShell/Win32-OpenSSH/wiki/Install-Win32-OpenSSH), - [Git BASH](https://git-for-windows.github.io/), or - [MobaXterm](http://mobaxterm.mobatek.net/) + - a little bit of bash-fu (environment variables, loops) -- A tiny little bit of Docker knowledge +- Some Docker knowledge - (that's totally OK if you're not a Docker expert!) + - `docker run`, `docker ps`, `docker build` ---- + - ideally, you know how to write a Dockerfile and build it +
+ (even if it's a `FROM` line and a couple of `RUN` commands) -class: in-person, extra-details - -## Nice-to-haves - -- [Mosh](https://mosh.org/) instead of SSH, if your internet connection tends to lose packets -
(available with `(apt|yum|brew) install mosh`; then connect with `mosh user@host`) - -- [GitHub](https://github.com/join) account -
(if you want to fork the repo) - -- [Slack](https://community.docker.com/registrations/groups/4316) account -
(to join the conversation after the workshop) - -- [Docker Hub](https://hub.docker.com) account -
(it's one way to distribute images on your cluster) +- It's totally OK if you are not a Docker expert! --- @@ -53,7 +38,7 @@ class: extra-details - The whole workshop is hands-on -- We will see Docker and Kubernetes in action +- We are going to build, ship, and run containers! - You are invited to reproduce all the demos @@ -62,25 +47,25 @@ class: extra-details .exercise[ - This is the stuff you're supposed to do! -- Go to [container.training](http://container.training/) to view these slides -- Join the chat room on @@CHAT@@ - +- Go to [container.training](http://container.training/) to view these slides + +- Join the chat room on @@CHAT@@ ] --- -class: pic, in-person +class: in-person + +## Where are we going to run our containers? + +-- + +class: in-person ![You get five VMs](images/you-get-five-vms.jpg) - - --- class: in-person @@ -88,22 +73,82 @@ class: in-person ## You get five VMs - Each person gets 5 private VMs (not shared with anybody else) -- Kubernetes has been deployed and pre-configured on these machines -- They'll remain up until the day after the tutorial + +- They'll remain up for the duration of the workshop + - You should have a little card with login+password+IP addresses + - You can automatically SSH from one VM to another +- The nodes have aliases: `node1`, `node2`, etc. + +--- + +class: in-person + +## Why don't we run containers locally? + +- Installing that stuff can be hard on some machines + + (32 bits CPU or OS... Laptops without administrator access... etc.) + +- *"The whole team downloaded all these container images from the WiFi! +
... and it went great!"* (Literally no-one ever) + +- All you need is a computer (or even a phone or tablet!), with: + + - an internet connection + + - a web browser + + - an SSH client + +--- + +class: in-person + +## SSH clients + +- On Linux, OS X, FreeBSD... you are probably all set + +- On Windows, get one of these: + + - [putty](http://www.putty.org/) + - Microsoft [Win32 OpenSSH](https://github.com/PowerShell/Win32-OpenSSH/wiki/Install-Win32-OpenSSH) + - [Git BASH](https://git-for-windows.github.io/) + - [MobaXterm](http://mobaxterm.mobatek.net/) + +- On Android, [JuiceSSH](https://juicessh.com/) + ([Play Store](https://play.google.com/store/apps/details?id=com.sonelli.juicessh)) + works pretty well + +- Nice-to-have: [Mosh](https://mosh.org/) instead of SSH, if your internet connection tends to lose packets +
(available with `(apt|yum|brew) install mosh`; then connect with `mosh user@host`) + +--- + +class: in-person + +## Connecting to our lab environment + .exercise[ +- Log into the first VM (`node1`) with SSH or MOSH + -- Log into the first VM (`node1`) with SSH or MOSH - Check that you can SSH (without password) to `node2`: ```bash ssh node2 @@ -114,10 +159,34 @@ done ] +If anything goes wrong — ask for help! + +--- + +## If doing or re-doing the workshop on your own ... + +- Use something like + [Play-With-Docker](http://play-with-docker.com/) or + [Play-With-Kubernetes](https://medium.com/@marcosnils/introducing-pwk-play-with-k8s-159fcfeb787b) + + Zero setup effort; but environment are short-lived and + might have limited resources + +- Create your own cluster (local or cloud VMs) + + Small setup effort; small cost; flexible environments + +- Create a bunch of clusters for you and your friends + ([instructions](https://github.com/jpetazzo/container.training/tree/master/prepare-vms)) + + Bigger setup effort; ideal for group training + --- ## We will (mostly) interact with node1 only +*These remarks apply only when using multiple nodes, of course.* + - Unless instructed, **all commands must be run from the first VM, `node1`** - We will only checkout/copy the code on `node1` diff --git a/slides/common/pwd.md b/slides/common/pwd.md new file mode 100644 index 00000000..491fae2a --- /dev/null +++ b/slides/common/pwd.md @@ -0,0 +1,19 @@ +## Using Play-With-Docker + +- Open a new browser tab to [www.play-with-docker.com](http://www.play-with-docker.com/) + +- Confirm that you're not a robot + +- Click on "ADD NEW INSTANCE": congratulations, you have your first Docker node! + +- When you will need more nodes, just click on "ADD NEW INSTANCE" again + +- Note the countdown in the corner; when it expires, your instances are destroyed + +- If you give your URL to somebody else, they can access your nodes too +
+ (You can use that for pair programming, or to get help from a mentor) + +- Loving it? Not loving it? Tell it to the wonderful authors, + [@marcosnils](https://twitter.com/marcosnils) & + [@xetorthio](https://twitter.com/xetorthio)! diff --git a/slides/common/thankyou.md b/slides/common/thankyou.md index e5938330..23a5db52 100644 --- a/slides/common/thankyou.md +++ b/slides/common/thankyou.md @@ -7,3 +7,16 @@ Thank you! class: title, in-person That's all folks!
Questions? + +--- + +# Links and resources + +- Join the conversation in the + [Docker Community Slack](https://community.docker.com/registrations/groups/4316) + +- Create a [Docker Hub](https://hub.docker.com) account + +- These slides (and future updates) are on: + + http://container.training/ \ No newline at end of file diff --git a/slides/dockercon.yml b/slides/dockercon.yml index bdbe3c87..4c2f66d4 100644 --- a/slides/dockercon.yml +++ b/slides/dockercon.yml @@ -15,7 +15,7 @@ chapters: - common/logistics.md - swarm/intro.md - common/toc.md -- - swarm/prereqs.md +- - common/prereqs.md - swarm/versions.md - common/sampleapp.md - swarm/swarmkit.md diff --git a/slides/kube.yml b/slides/kube.yml index 4e93ab2c..c6347277 100644 --- a/slides/kube.yml +++ b/slides/kube.yml @@ -13,7 +13,7 @@ chapters: - common/logistics.md - kube/intro-ks.md - common/toc.md -- - kube/prereqs-k8s.md +- - common/prereqs.md - kube/versions-k8s.md - common/sampleapp.md - - kube/concepts-k8s.md diff --git a/slides/lisa.yml b/slides/lisa.yml index 6b09eb30..e2413e4e 100644 --- a/slides/lisa.yml +++ b/slides/lisa.yml @@ -15,7 +15,7 @@ chapters: - common/logistics.md - swarm/intro.md - common/toc.md -- - swarm/prereqs.md +- - common/prereqs.md - swarm/versions.md - common/sampleapp.md - swarm/swarmkit.md diff --git a/slides/selfpaced.yml b/slides/selfpaced.yml index bcc36585..ba41f922 100644 --- a/slides/selfpaced.yml +++ b/slides/selfpaced.yml @@ -12,7 +12,7 @@ chapters: - common/title.md - swarm/intro.md - common/toc.md -- - swarm/prereqs.md +- - common/prereqs.md - swarm/versions.md - | name: part-1 diff --git a/slides/swarm/prereqs.md b/slides/swarm/prereqs.md deleted file mode 100644 index b3c99a5d..00000000 --- a/slides/swarm/prereqs.md +++ /dev/null @@ -1,226 +0,0 @@ -# Pre-requirements - -- Computer with internet connection and a web browser - -- For instructor-led workshops: an SSH client to connect to remote machines - - - on Linux, OS X, FreeBSD... you are probably all set - - - on Windows, get [putty](http://www.putty.org/), - Microsoft [Win32 OpenSSH](https://github.com/PowerShell/Win32-OpenSSH/wiki/Install-Win32-OpenSSH), - [Git BASH](https://git-for-windows.github.io/), or - [MobaXterm](http://mobaxterm.mobatek.net/) - -- For self-paced learning: SSH is not necessary if you use - [Play-With-Docker](http://www.play-with-docker.com/) - -- Some Docker knowledge - - (but that's OK if you're not a Docker expert!) - ---- - -class: in-person, extra-details - -## Nice-to-haves - -- [Mosh](https://mosh.org/) instead of SSH, if your internet connection tends to lose packets -
(available with `(apt|yum|brew) install mosh`; then connect with `mosh user@host`) - -- [GitHub](https://github.com/join) account -
(if you want to fork the repo) - -- [Slack](https://community.docker.com/registrations/groups/4316) account -
(to join the conversation after the workshop) - -- [Docker Hub](https://hub.docker.com) account -
(it's one way to distribute images on your cluster) - ---- - -class: extra-details - -## Extra details - -- This slide should have a little magnifying glass in the top left corner - - (If it doesn't, it's because CSS is hard — Jérôme is only a backend person, alas) - -- Slides with that magnifying glass indicate slides providing extra details - -- Feel free to skip them if you're in a hurry! - ---- - -## Hands-on sections - -- The whole workshop is hands-on - -- We will see Docker in action - -- You are invited to reproduce all the demos - -- All hands-on sections are clearly identified, like the gray rectangle below - -.exercise[ - -- This is the stuff you're supposed to do! -- Go to [container.training](http://container.training/) to view these slides -- Join the chat room on @@CHAT@@ - -] - ---- - -class: in-person - -# VM environment - -- To follow along, you need a cluster of five Docker Engines - -- If you are doing this with an instructor, see next slide - -- If you are doing (or re-doing) this on your own, you can: - - - create your own cluster (local or cloud VMs) with Docker Machine - ([instructions](https://github.com/jpetazzo/container.training/tree/master/prepare-machine)) - - - use [Play-With-Docker](http://play-with-docker.com) ([instructions](https://github.com/jpetazzo/container.training#using-play-with-docker)) - - - create a bunch of clusters for you and your friends - ([instructions](https://github.com/jpetazzo/container.training/tree/master/prepare-vms)) - ---- - -class: pic, in-person - -![You get five VMs](images/you-get-five-vms.jpg) - ---- - -class: in-person - -## You get five VMs - -- Each person gets 5 private VMs (not shared with anybody else) -- They'll remain up until the day after the tutorial -- You should have a little card with login+password+IP addresses -- You can automatically SSH from one VM to another - -.exercise[ - - - -- Log into the first VM (`node1`) with SSH or MOSH -- Check that you can SSH (without password) to `node2`: - ```bash - ssh node2 - ``` -- Type `exit` or `^D` to come back to node1 - - - -] - ---- - -## If doing or re-doing the workshop on your own ... - -- Use [Play-With-Docker](http://www.play-with-docker.com/)! - -- Main differences: - - - you don't need to SSH to the machines -
(just click on the node that you want to control in the left tab bar) - - - Play-With-Docker automagically detects exposed ports -
(and displays them as little badges with port numbers, above the terminal) - - - You can access HTTP services by clicking on the port numbers - - - exposing TCP services requires something like - [ngrok](https://ngrok.com/) - or [supergrok](https://github.com/jpetazzo/container.training#using-play-with-docker) - - - ---- - -class: self-paced - -## Using Play-With-Docker - -- Open a new browser tab to [www.play-with-docker.com](http://www.play-with-docker.com/) - -- Confirm that you're not a robot - -- Click on "ADD NEW INSTANCE": congratulations, you have your first Docker node! - -- When you will need more nodes, just click on "ADD NEW INSTANCE" again - -- Note the countdown in the corner; when it expires, your instances are destroyed - -- If you give your URL to somebody else, they can access your nodes too -
- (You can use that for pair programming, or to get help from a mentor) - -- Loving it? Not loving it? Tell it to the wonderful authors, - [@marcosnils](https://twitter.com/marcosnils) & - [@xetorthio](https://twitter.com/xetorthio)! - ---- - -## We will (mostly) interact with node1 only - -- Unless instructed, **all commands must be run from the first VM, `node1`** - -- We will only checkout/copy the code on `node1` - -- When we will use the other nodes, we will do it mostly through the Docker API - -- We will log into other nodes only for initial setup and a few "out of band" operations -
(checking internal logs, debugging...) - ---- - -## Terminals - -Once in a while, the instructions will say: -
"Open a new terminal." - -There are multiple ways to do this: - -- create a new window or tab on your machine, and SSH into the VM; - -- use screen or tmux on the VM and open a new window from there. - -You are welcome to use the method that you feel the most comfortable with. - ---- - -## Tmux cheatsheet - -- Ctrl-b c → creates a new window -- Ctrl-b n → go to next window -- Ctrl-b p → go to previous window -- Ctrl-b " → split window top/bottom -- Ctrl-b % → split window left/right -- Ctrl-b Alt-1 → rearrange windows in columns -- Ctrl-b Alt-2 → rearrange windows in rows -- Ctrl-b arrows → navigate to other windows -- Ctrl-b d → detach session -- tmux attach → reattach to session