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

Post on 09-Aug-2015

385 views 2 download

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

1

2

跨領域

正夯

深藏

若虛

死會

證明

NCHU EECSeC

Now

9

11

13

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

Kitematic

18

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

$ 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

$ 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

$ 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

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

Run a command in a new container……

$  docker  command  -­‐-­‐help

$  docker  run  image  execute  [argument,  …]

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

Hello world

$  docker  run  image  execute  [argument,  …]

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

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

$ 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,  …]

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

$  docker  ps

$ docker logs 1e5535038e28hello worldhello worldhello world

$  docker  logs  [container  ID/Name]

$ docker logs insane_babbagehello worldhello worldhello world

$  docker  logs  [container  ID/Name]

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

$ 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,  …]

$ 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

$ boot2socker ip192.168.59.103

$  boot2ocker  ip

$ docker run -d -p 80 nginx:latest40dd6835e35843fdc1853e92b9922f6406f874793c085e1f71cb3967e1157cf3

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

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

$  docker  ps

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

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

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

$  docker  ps

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

$ 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,  …]

$ 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

$ boot2socker ip192.168.59.103

$  boot2ocker  ip

$ docker run -d -p 80 nginx:latest40dd6835e35843fdc1853e92b9922f6406f874793c085e1f71cb3967e1157cf3

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

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

$  docker  ps

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

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

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

$  docker  ps

$  docker  start|restart|stop|kill  contanter

$ docker stop nginx_containernginx_container

$  docker  stop  [container  ID/Name]

$ docker psCONTAINER ID IMAGE COMMAND CREATED STATUS NAMES

$  docker  ps

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

$  docker  ps  -­‐a

$ docker start nginx_containernginx_container

$  docker  start  [container  ID/Name]

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

$  docker  ps

$ docker restart nginx_containernginx_container

$  docker  restart  [container  ID/Name]

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

$  docker  ps

$ docker stop nginx_containernginx_container

$ docker kill nginx_containernginx_container

$  docker  kill  [container  ID/Name]

$ docker ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS NAMES

$  docker  ps  -­‐a

$  docker  images|pull|rmi

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

$  docker  images

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

$  docker  pull  image_name:tag

$ 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

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

$  docker  rmi  image_name:tag|image_id

69

#  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

# docker-compose.yml

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

# docker-compose.yml

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

# docker-compose.yml

service: …

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

# docker-compose.yml

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

environment: - RACK_ENV=development - SESSION_SECRET

$ docker-compose up -dCreating swl_service_1…

$ docker-compose up -dRecreating swl_service_1…

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

$  docker-­‐compose  up  -­‐d

$ docker-compose stopStopping swl_service_1...

$  docker-­‐compose  stop

$ docker-compose startStarting swl_service_1...

$  docker-­‐compose  start

$ docker-compose restartRestarting swl_service_1...

$  docker-­‐compose  restart

$ 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

80

82

83