狠狠撸

狠狠撸Share a Scribd company logo
Docker 淺入淺出
Miles 2016/8/10
About Me - Miles
PHP
Git
Docker
Rancher
DevOps
Agenda
Foreword
Introduction
Concept
Run Docker!
Foreword
研究 Docker 的起因
虛擬機每次要重新建置一樣的環境,需要很長的時間
虛擬機比較難模擬真實環境,因資源需求較高
承上,虛擬機執行的數量會受限於本機資源
環境一旦複雜,設定會很困難
Docker
Introdution
Docker 能做什麼事
Docker 怎麼辦到的
Introduction
虛擬機能做的,幾乎都能做得到
隔離應用
儲存再發佈
具備可攜性
環境即程式碼
Introduction
Introduction
Keywords
chroot
cgroups
LXC
Concept
Concept
映像檔 - Image (git log / Vagrant Box)
容器 - Container (staging / Running VM)
倉庫 - Repository (GitHub / VagrantCloud)
Concept
使用 Docker Container 很像虛擬機
虛擬 IP 、 Port Forwarding ….
管理 Docker Image 的觀念很像 Git
commit 、 pull 、 push ...
Concept
Image - PHP 7
Docker Hub
Concept
Image - PHP 7
Local Image - PHP 7
Docker Hub
Pull
Concept
Image - PHP 7
Container - 可寫層
Local Image - PHP 7
Docker Hub
唯讀
Pull
Concept
Image - PHP 7
Container - 可寫層
Local Image - PHP 7
Docker Hub
讀寫/執行
唯讀
Pull
Run Docker!
Installation
Linux 懶人安裝指令
curl -sSL https://get.docker.com/ | sh
Windows 10 和 Mac 也都能直接裝了 (since 1.12)
Commands
docker pull 下載映像檔
docker images 看目前有哪些映像檔
docker rmi 刪除映像檔
docker run 建立容器並執行指令
docker start/stop/restart 操作容器
docker ps 看目前有啟動哪些容器
docker rm 刪除容器
Command - Hello world
$ docker run -d nginx
$ docker run -d nginx:1.11-alpine
$ docker images
$ docker ps
$ docker stop
$ docker rm
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]
Command - Run PHP command
$ docker run --rm -it php php -v
--rm: 執行完指令就把容器刪除
-it: 開啟互動和終端機輸出,執行過程中有輸入就需要這兩個選項
php: 映像檔,沒有 tag 的話,預設會用 latest 最新版
php -v: 要在容器執行的命令
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
Command - Environment
$ docker run -d -p 0.0.0.0:3306:3306 -e
MYSQL_ROOT_PASSWORD=password mysql
-e: 設定環境變數
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: 連接到某個容器,格式 [容器名]:[別名]
Conclusion
Conclusion
Docker 可快速建立一個已定義好的環境
開發與測試非常適合使用
Q & A

More Related Content

Docker 淺入淺出

Editor's Notes

  • #9: 资源消耗少、建立应用快、效能高