Docker 淺入淺出
-
Upload
miles-chou -
Category
Technology
-
view
299 -
download
2
Transcript of Docker 淺入淺出
Docker 淺入淺出
Miles 2016/8/10
About Me - MilesPHP
Git
Docker
Rancher
DevOps
AgendaForeword
Introduction
Concept
Run Docker!
Foreword研究 Docker 的起因
虛擬機每次要重新建置一樣的環境,需要很長的時間虛擬機比較難模擬真實環境,因資源需求較高承上,虛擬機執行的數量會受限於本機資源環境一旦複雜,設定會很困難
Docker
IntrodutionDocker 能做什麼事Docker 怎麼辦到的
Introduction虛擬機能做的,幾乎都能做得到
隔離應用儲存再發佈具備可攜性環境即程式碼
Introduction
IntroductionKeywords
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 的觀念很像 Gitcommit 、 pull 、 push ...
Concept
Image - PHP 7
Docker Hub
Concept
Image - PHP 7Local 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!
InstallationLinux 懶人安裝指令curl -sSL https://get.docker.com/ | sh
Windows 10 和 Mac 也都能直接裝了 (since 1.12)
Commandsdocker 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
ConclusionDocker 可快速建立一個已定義好的環境開發與測試非常適合使用
Q & A