Docker 初探,實驗室中的運貨鯨
-
Upload
ruoshi-ling -
Category
Technology
-
view
385 -
download
2
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