84
Epdlfs!⓾㚃! ⻇洸⺅ℎ䥥挬徉滉 嗆夼! goutsmjlf 1

Docker 初探,實驗室中的運貨鯨

Embed Size (px)

Citation preview

Page 1: Docker 初探,實驗室中的運貨鯨

1

Page 2: Docker 初探,實驗室中的運貨鯨

2

Page 3: Docker 初探,實驗室中的運貨鯨

跨領域

正夯

Page 4: Docker 初探,實驗室中的運貨鯨

深藏

若虛

Page 5: Docker 初探,實驗室中的運貨鯨

死會

證明

Page 6: Docker 初探,實驗室中的運貨鯨
Page 7: Docker 初探,實驗室中的運貨鯨

NCHU EECSeC

Page 8: Docker 初探,實驗室中的運貨鯨

Now

Page 9: Docker 初探,實驗室中的運貨鯨

9

Page 10: Docker 初探,實驗室中的運貨鯨
Page 11: Docker 初探,實驗室中的運貨鯨

11

Page 12: Docker 初探,實驗室中的運貨鯨
Page 13: Docker 初探,實驗室中的運貨鯨

13

Page 14: Docker 初探,實驗室中的運貨鯨
Page 15: Docker 初探,實驗室中的運貨鯨

$  wget  -­‐qO-­‐  https://get.docker.com/  |  sh

Page 16: Docker 初探,實驗室中的運貨鯨

Kitematic

Page 17: Docker 初探,實驗室中的運貨鯨
Page 18: Docker 初探,實驗室中的運貨鯨

18

Page 19: Docker 初探,實驗室中的運貨鯨
Page 20: Docker 初探,實驗室中的運貨鯨

$  [sudo]  docker  [command]  [flags]  [arguments]

Page 21: Docker 初探,實驗室中的運貨鯨

$ dockerCommands: attach Attach to a running container build Build an image from a Dockerfile commit Create a new image from a container's changes

$  docker

Page 22: Docker 初探,實驗室中的運貨鯨

$ docker versionClient version: 1.62Client API version: 1.18Go version (client): go1.4.1Git commit (client): a8a31efOS/Arch (client): darwin/amd64Server version: 1.6.2Server API version: 1.18Go version (server): go1.4.2Git commit (server): 4749651

$  docker  version

Page 23: Docker 初探,實驗室中的運貨鯨

$ docker infoContainers: 3Images: 65Storage Driver: aufs Root Dir: /mnt/sda1/var/lib/docker/aufs …Execution Driver: native-0.2Kernel Version: 4.0.3-boot2dockerOperating System: Boot2Docker 1.6.2 (TCL 5.4); ……

$  docker  info

Page 24: Docker 初探,實驗室中的運貨鯨

$ docker run --helpUsage: docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

Run a command in a new container……

$  docker  command  -­‐-­‐help

Page 25: Docker 初探,實驗室中的運貨鯨
Page 26: Docker 初探,實驗室中的運貨鯨

$  docker  run  image  execute  [argument,  …]

Page 27: Docker 初探,實驗室中的運貨鯨

$ docker run ubuntu:14.04 /bin/echo 'Hello world'

Hello world

$  docker  run  image  execute  [argument,  …]

Page 28: Docker 初探,實驗室中的運貨鯨

$ docker run -it ubuntu:14.04 /bin/bashroot@af8bae53bdd3:/#

$  docker  run  -­‐it  image  execute  [argument,  …]

Page 29: Docker 初探,實驗室中的運貨鯨

$ docker run -d ubuntu:14.04 /bin/echo \ -c "while true; do echo hello world; sleep 1; done"

1e5535038e285177d5214659a068137486f96ee5c2e85a4ac52dc83f2ebe4147

$  docker  run  -­‐d  image  execute  [argument,  …]

Page 30: Docker 初探,實驗室中的運貨鯨

$ docker psCONTAINER ID IMAGE COMMAND CREATED STATUS NAMES1e5535038e28 ubuntu:14.04 /bin/sh… 2 minutes ago Up 1 minute insane_babbage

$  docker  ps

Page 31: Docker 初探,實驗室中的運貨鯨

$ docker logs 1e5535038e28hello worldhello worldhello world

$  docker  logs  [container  ID/Name]

Page 32: Docker 初探,實驗室中的運貨鯨

$ docker logs insane_babbagehello worldhello worldhello world

$  docker  logs  [container  ID/Name]

Page 33: Docker 初探,實驗室中的運貨鯨

$  docker  run  -­‐P|-­‐p  …

Page 34: Docker 初探,實驗室中的運貨鯨

$ docker run -d -P nginx:latestUnable to find image 'nginx:latest' locallylatest: Pulling from nginx39bb80489af7: Pull complete……72d73c46937a: Pull completeStatus: Downloaded newer image for nginx:latest

23e601370946fc9fbdfd6204e1bf70e88e6c18078a0c6ee8640acd2e6694b645

$  docker  run  -­‐d  -­‐P  image  execute  [argument,  …]

Page 35: Docker 初探,實驗室中的運貨鯨

$ docker psCONTAINER ID IMAGE COMMAND STATUS PORTS23e601370946 nginx:latest "nginx … Up 1 minute 0.0.0.0:32768->443/tcp 0.0.0.0:32769->80/tcp

$  docker  ps

Page 36: Docker 初探,實驗室中的運貨鯨

$ boot2socker ip192.168.59.103

$  boot2ocker  ip

Page 37: Docker 初探,實驗室中的運貨鯨
Page 38: Docker 初探,實驗室中的運貨鯨

$ docker run -d -p 80 nginx:latest40dd6835e35843fdc1853e92b9922f6406f874793c085e1f71cb3967e1157cf3

$  docker  run  -­‐d  -­‐p  container_port  …

Page 39: Docker 初探,實驗室中的運貨鯨

$ docker psCONTAINER ID IMAGE COMMAND STATUS PORTS40dd6835e358 nginx:latest "nginx … Up 1 minute 443/tcp 0.0.0.0:32770->80/tcp

$  docker  ps

Page 40: Docker 初探,實驗室中的運貨鯨

$ docker run -d -p 10080:80 nginx:latest40dd6835e35843fdc1853e92b9922f6406f874793c085e1f71cb3967e1157cf3

$  docker  run  -­‐d  -­‐p  host_port:container_port  …

Page 41: Docker 初探,實驗室中的運貨鯨

$ docker psCONTAINER ID IMAGE COMMAND STATUS PORTS40dd6835e358 nginx:latest "nginx … Up 1 minute 443/tcp 0.0.0.0:10080->80/tcp

$  docker  ps

Page 42: Docker 初探,實驗室中的運貨鯨

$  docker  run  -­‐P|-­‐p  [argument,  …]

Page 43: Docker 初探,實驗室中的運貨鯨

$ docker run -d -P nginx:latestUnable to find image 'nginx:latest' locallylatest: Pulling from nginx39bb80489af7: Pull complete……72d73c46937a: Pull completeStatus: Downloaded newer image for nginx:latest

23e601370946fc9fbdfd6204e1bf70e88e6c18078a0c6ee8640acd2e6694b645

$  docker  run  -­‐d  -­‐P  image  execute  [argument,  …]

Page 44: Docker 初探,實驗室中的運貨鯨

$ docker psCONTAINER ID IMAGE COMMAND STATUS PORTS23e601370946 nginx:latest "nginx … Up 1 minute 0.0.0.0:32768->443/tcp 0.0.0.0:32769->80/tcp

$  docker  ps

Page 45: Docker 初探,實驗室中的運貨鯨

$ boot2socker ip192.168.59.103

$  boot2ocker  ip

Page 46: Docker 初探,實驗室中的運貨鯨
Page 47: Docker 初探,實驗室中的運貨鯨

$ docker run -d -p 80 nginx:latest40dd6835e35843fdc1853e92b9922f6406f874793c085e1f71cb3967e1157cf3

$  docker  run  -­‐d  -­‐p  container_port  …

Page 48: Docker 初探,實驗室中的運貨鯨

$ docker psCONTAINER ID IMAGE COMMAND STATUS PORTS40dd6835e358 nginx:latest "nginx … Up 1 minute 443/tcp 0.0.0.0:32770->80/tcp

$  docker  ps

Page 49: Docker 初探,實驗室中的運貨鯨

$ docker run -d -p 10080:80 nginx:latest40dd6835e35843fdc1853e92b9922f6406f874793c085e1f71cb3967e1157cf3

$  docker  run  -­‐d  -­‐p  host_port:container_port  …

Page 50: Docker 初探,實驗室中的運貨鯨

$ docker psCONTAINER ID IMAGE COMMAND STATUS PORTS40dd6835e358 nginx:latest "nginx … Up 1 minute 443/tcp 0.0.0.0:10080->80/tcp

$  docker  ps

Page 51: Docker 初探,實驗室中的運貨鯨

$  docker  start|restart|stop|kill  contanter

Page 52: Docker 初探,實驗室中的運貨鯨

$ docker stop nginx_containernginx_container

$  docker  stop  [container  ID/Name]

Page 53: Docker 初探,實驗室中的運貨鯨

$ docker psCONTAINER ID IMAGE COMMAND CREATED STATUS NAMES

$  docker  ps

Page 54: Docker 初探,實驗室中的運貨鯨

$ docker ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS NAMES23e601370946 nginx:latest "nginx … 2 minutes ago EXITED(0) nginx_container

$  docker  ps  -­‐a

Page 55: Docker 初探,實驗室中的運貨鯨

$ docker start nginx_containernginx_container

$  docker  start  [container  ID/Name]

Page 56: Docker 初探,實驗室中的運貨鯨

$ docker psCONTAINER ID IMAGE COMMAND CREATED STATUS NAMES23e601370946 nginx:latest "nginx … 10 minutes ago Up 1 minute nginx_container

$  docker  ps

Page 57: Docker 初探,實驗室中的運貨鯨

$ docker restart nginx_containernginx_container

$  docker  restart  [container  ID/Name]

Page 58: Docker 初探,實驗室中的運貨鯨

$ docker psCONTAINER ID IMAGE COMMAND CREATED STATUS NAMES23e601370946 nginx:latest "nginx … 15 minutes ago Up 1 minute insane_babbage

$  docker  ps

Page 59: Docker 初探,實驗室中的運貨鯨

$ docker stop nginx_containernginx_container

$ docker kill nginx_containernginx_container

$  docker  kill  [container  ID/Name]

Page 60: Docker 初探,實驗室中的運貨鯨

$ docker ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS NAMES

$  docker  ps  -­‐a

Page 61: Docker 初探,實驗室中的運貨鯨

$  docker  images|pull|rmi

Page 62: Docker 初探,實驗室中的運貨鯨

$ docker imagesREPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZEnginx latest a785ba7493fd 16 hours ago 132.9 MB

$  docker  images

Page 63: Docker 初探,實驗室中的運貨鯨

$ docker pull mysql:latestlatest: Pulling from mysql7a3e804ed6c0: Pull complete……ff78d9bb5f46: Already existsStatus: Downloaded newer image for mysql:latest

$  docker  pull  image_name:tag

Page 64: Docker 初探,實驗室中的運貨鯨

$ docker imagesREPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZEnginx latest a785ba7493fd 16 hours ago 132.9 MBmysql latest ff78d9bb5f46 3 days ago 282.9 MB

$  docker  images

Page 65: Docker 初探,實驗室中的運貨鯨

$ docker rmi mysql:latestUntagged: mysql:latestDeleted: ff78d9bb5f46b3a619310a8e3f3e62b98ce08b476d0d5d4088f1853d604f8218……Deleted: 7a3e804ed6c015465a6cb957d032276dbff7ba8582153c38b83acd70ffdad0c6

$  docker  rmi  image_name:tag|image_id

Page 66: Docker 初探,實驗室中的運貨鯨
Page 67: Docker 初探,實驗室中的運貨鯨
Page 68: Docker 初探,實驗室中的運貨鯨
Page 69: Docker 初探,實驗室中的運貨鯨

69

Page 70: Docker 初探,實驗室中的運貨鯨

#  curl  -­‐L  https://github.com/docker/compose/releases/……  >  /usr/local/bin/docker-­‐compose  #  chmod  +x  /usr/local/bin/docker-­‐compose

$  sudo  pip  install  -­‐U  docker-­‐compose

Page 71: Docker 初探,實驗室中的運貨鯨

# docker-compose.yml

web: build: . command: python app.py ports: - "5000:5000" volumes: - .:/code links: - redis

Page 72: Docker 初探,實驗室中的運貨鯨

# docker-compose.yml

service: ... ports: - "3000" - "8000:8000" - "49100:22" - "127.0.0.1:8001:8001"

Page 73: Docker 初探,實驗室中的運貨鯨

# docker-compose.yml

service: …

volumes: - /var/lib/mysql - cache/:/tmp/cache - ~/configs:/etc/configs/:ro

Page 74: Docker 初探,實驗室中的運貨鯨

# docker-compose.yml

service: ... environment: RACK_ENV: development SESSION_SECRET:

environment: - RACK_ENV=development - SESSION_SECRET

Page 75: Docker 初探,實驗室中的運貨鯨

$ docker-compose up -dCreating swl_service_1…

$ docker-compose up -dRecreating swl_service_1…

$ docker-compose up -d --no-recreate

$  docker-­‐compose  up  -­‐d

Page 76: Docker 初探,實驗室中的運貨鯨

$ docker-compose stopStopping swl_service_1...

$  docker-­‐compose  stop

Page 77: Docker 初探,實驗室中的運貨鯨

$ docker-compose startStarting swl_service_1...

$  docker-­‐compose  start

Page 78: Docker 初探,實驗室中的運貨鯨

$ docker-compose restartRestarting swl_service_1...

$  docker-­‐compose  restart

Page 79: Docker 初探,實驗室中的運貨鯨

$ docker-compose rmNo stopped containers

$ docker-compose stop && docker-compose rmGoing to remove swl_service_1Are you sure? [yN] yRemoving swl_service_1...

$  docker-­‐compose  rm

Page 80: Docker 初探,實驗室中的運貨鯨

80

Page 81: Docker 初探,實驗室中的運貨鯨
Page 82: Docker 初探,實驗室中的運貨鯨

82

Page 83: Docker 初探,實驗室中的運貨鯨

83