Docker 淺入淺出

28
Docker 淺淺淺淺 Miles 2016/8/10

Transcript of Docker 淺入淺出

Page 1: Docker 淺入淺出

Docker 淺入淺出

Miles 2016/8/10

Page 2: Docker 淺入淺出

About Me - MilesPHP

Git

Docker

Rancher

DevOps

Page 3: Docker 淺入淺出

AgendaForeword

Introduction

Concept

Run Docker!

Page 4: Docker 淺入淺出

Foreword研究 Docker 的起因

虛擬機每次要重新建置一樣的環境,需要很長的時間虛擬機比較難模擬真實環境,因資源需求較高承上,虛擬機執行的數量會受限於本機資源環境一旦複雜,設定會很困難

Page 5: Docker 淺入淺出

Docker

Page 6: Docker 淺入淺出

IntrodutionDocker 能做什麼事Docker 怎麼辦到的

Page 7: Docker 淺入淺出

Introduction虛擬機能做的,幾乎都能做得到

隔離應用儲存再發佈具備可攜性環境即程式碼

Page 8: Docker 淺入淺出

Introduction

Page 10: Docker 淺入淺出

Concept

Page 11: Docker 淺入淺出

Concept映像檔 - Image (git log / Vagrant Box)

容器 - Container (staging / Running VM)

倉庫 - Repository (GitHub / VagrantCloud)

Page 12: Docker 淺入淺出

Concept使用 Docker Container 很像虛擬機

虛擬 IP 、 Port Forwarding ….

管理 Docker Image 的觀念很像 Gitcommit 、 pull 、 push ...

Page 13: Docker 淺入淺出

Concept

Image - PHP 7

Docker Hub

Page 14: Docker 淺入淺出

Concept

Image - PHP 7Local Image - PHP 7

Docker Hub

Pull

Page 15: Docker 淺入淺出

Concept

Image - PHP 7

Container - 可寫層

Local Image - PHP 7

Docker Hub

唯讀

Pull

Page 16: Docker 淺入淺出

Concept

Image - PHP 7

Container - 可寫層

Local Image - PHP 7

Docker Hub

讀寫/執行

唯讀

Pull

Page 17: Docker 淺入淺出

Run Docker!

Page 18: Docker 淺入淺出

InstallationLinux 懶人安裝指令curl -sSL https://get.docker.com/ | sh

Windows 10 和 Mac 也都能直接裝了 (since 1.12)

Page 19: Docker 淺入淺出

Commandsdocker pull 下載映像檔docker images 看目前有哪些映像檔docker rmi 刪除映像檔docker run 建立容器並執行指令docker start/stop/restart 操作容器docker ps 看目前有啟動哪些容器docker rm 刪除容器

Page 20: Docker 淺入淺出

Command - Hello world$ docker run -d nginx

$ docker run -d nginx:1.11-alpine

$ docker images

$ docker ps

$ docker stop

$ docker rm

Page 21: Docker 淺入淺出

Command - Port forwarding$ docker run -d --name my-nginx -p 0.0.0.0:8080:80 nginx

$ docker stop my-nginx

$ docker rm -f my-nginx

--name: 容器名稱-p: 設定連接埠,格式 [hostIP]:[hostPort]:[ContainerPort]

Page 22: Docker 淺入淺出

Command - Run PHP command$ docker run --rm -it php php -v

--rm: 執行完指令就把容器刪除-it: 開啟互動和終端機輸出,執行過程中有輸入就需要這兩個選項php: 映像檔,沒有 tag 的話,預設會用 latest 最新版php -v: 要在容器執行的命令

Page 23: Docker 淺入淺出

Command - Run local program$ echo "<?php echo 'hello world'; ?>" > hw.php

$ docker run -v `pwd`:/var/www/html php php /var/www/html/hw.php

-v: 掛載檔案到容器,參數格式 [/host]:[/container]

php /var/www/html/hw.php: 執行 php

Page 24: Docker 淺入淺出

Command - Environment$ docker run -d -p 0.0.0.0:3306:3306 -e MYSQL_ROOT_PASSWORD=password mysql

-e: 設定環境變數

Page 25: Docker 淺入淺出

Command - Link$ docker run -d --name cache -d memcached

$ docker run -d --name my-nginx --link cache:c nginx

$ docker exec -it my-nginx bash

# apt-get install telnet

# telnet c 11211

--link: 連接到某個容器,格式 [容器名 ]:[別名 ]

Page 26: Docker 淺入淺出

Conclusion

Page 27: Docker 淺入淺出

ConclusionDocker 可快速建立一個已定義好的環境開發與測試非常適合使用

Page 28: Docker 淺入淺出

Q & A