mirror of
https://github.com/jpetazzo/container.training.git
synced 2026-07-21 22:07:13 +00:00
Factor pre-requirements
This commit is contained in:
@@ -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
|
||||
<br/>
|
||||
(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
|
||||
<br/>(available with `(apt|yum|brew) install mosh`; then connect with `mosh user@host`)
|
||||
|
||||
- [GitHub](https://github.com/join) account
|
||||
<br/>(if you want to fork the repo)
|
||||
|
||||
- [Slack](https://community.docker.com/registrations/groups/4316) account
|
||||
<br/>(to join the conversation after the workshop)
|
||||
|
||||
- [Docker Hub](https://hub.docker.com) account
|
||||
<br/>(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@@
|
||||
|
||||
<!-- ```open http://container.training/``` -->
|
||||
- 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
|
||||
|
||||

|
||||
|
||||
<!--
|
||||
```bash
|
||||
kubectl get all -o name | grep -v services/kubernetes | xargs -n1 kubectl delete
|
||||
```
|
||||
-->
|
||||
|
||||
---
|
||||
|
||||
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!
|
||||
<br/>... 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
|
||||
<br/>(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
|
||||
|
||||
<!--
|
||||
```bash
|
||||
for N in $(seq 1 5); do
|
||||
ssh -o StrictHostKeyChecking=no node$N true
|
||||
done
|
||||
```
|
||||
|
||||
```bash
|
||||
if which kubectl; then
|
||||
kubectl get all -o name | grep -v services/kubernetes | xargs -n1 kubectl delete
|
||||
fi
|
||||
```
|
||||
-->
|
||||
|
||||
- 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`
|
||||
19
slides/common/pwd.md
Normal file
19
slides/common/pwd.md
Normal file
@@ -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
|
||||
<br/>
|
||||
(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)!
|
||||
@@ -7,3 +7,16 @@ Thank you!
|
||||
class: title, in-person
|
||||
|
||||
That's all folks! <br/> 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/
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
<br/>(available with `(apt|yum|brew) install mosh`; then connect with `mosh user@host`)
|
||||
|
||||
- [GitHub](https://github.com/join) account
|
||||
<br/>(if you want to fork the repo)
|
||||
|
||||
- [Slack](https://community.docker.com/registrations/groups/4316) account
|
||||
<br/>(to join the conversation after the workshop)
|
||||
|
||||
- [Docker Hub](https://hub.docker.com) account
|
||||
<br/>(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
|
||||
|
||||

|
||||
|
||||
---
|
||||
|
||||
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[
|
||||
|
||||
<!--
|
||||
```bash
|
||||
for N in $(seq 1 5); do
|
||||
ssh -o StrictHostKeyChecking=no node$N true
|
||||
done
|
||||
```
|
||||
-->
|
||||
|
||||
- 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
|
||||
|
||||
<!-- ```bash exit``` -->
|
||||
|
||||
]
|
||||
|
||||
---
|
||||
|
||||
## 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
|
||||
<br/>(just click on the node that you want to control in the left tab bar)
|
||||
|
||||
- Play-With-Docker automagically detects exposed ports
|
||||
<br/>(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)
|
||||
|
||||
<!--
|
||||
|
||||
- If you use VMs deployed with Docker Machine:
|
||||
|
||||
- you won't have pre-authorized SSH keys to bounce across machines
|
||||
|
||||
- you won't have host aliases
|
||||
|
||||
-->
|
||||
|
||||
---
|
||||
|
||||
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
|
||||
<br/>
|
||||
(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
|
||||
<br/>(checking internal logs, debugging...)
|
||||
|
||||
---
|
||||
|
||||
## Terminals
|
||||
|
||||
Once in a while, the instructions will say:
|
||||
<br/>"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
|
||||
Reference in New Issue
Block a user