認識
JOHNNY.TSAI
https://www.facebook.com/icechai77
• 什麼是Docker?
• Docker 操作觀念
• Image
• Container
• Image建立與分享
什麼是Docker?
Docker
虛擬化 APP
VMware
虛擬化 OS
V S
小明的例子 ( 無Docker )
小明的雲端主機
Project B - python 網頁爬蟲
Project C - Git Server
DjangoPython 3
Cron job
Git Server
Project A - Java網站
TomcatJava 8
Apache
Nginx
小明的例子 ( Docker )
小明的雲端主機
Project A - Java網站
Project B - python 網頁爬蟲
Project C - Git Server
TomcatJava 8
DjangoPython 3
Cron job
Git Server
Apache
Nginx
Docker
小明的例子 ( Docker )
小明的雲端主機
Project A - Java網站
Project B - python 網頁爬蟲
Project C - Git Server
TomcatJava 8
DjangoPython 3
Cron job
Git Server
Apache
Nginx
Docker
Image & Container
• Image 就是包裝好App的一個檔案
• Image 被用來建立Container
• Container 是Docker用來實際執行應用的容器,
各自獨立
• 一個Image可以建立出多個Container
• Container移除後, 資料不會保留
狀況 A
MySQL Image
Container A Container B Container C
建立
Q : Container A 可以查詢到該筆資料嗎?
小明 insert 『我沒寫作業』到
Container B 和 Container C 的MySQL
狀況 B (接續狀況A)
Container A Container B Container C
小明移除Container C
Q : Container C的資料會保留下來嗎?
Q :可以救回Container C的資料嗎?
如何解決Container資料保留問題?
MySQL Image
Container D
建立
Docker
/data/mysql
MySQL datadir 掛載主機資料夾
Container D Container E
第一步 第二步 第三步
Container D掛載了主機資料夾 移除了Container D 重新建立ContainerE,
並掛載主機資料夾,
資料仍然還在
DEMO
Docker 建立 MySQL服務
如何安裝
sudo apt-get install docker.io
sudo usermod -aG docker <user>
使用者帳號加入至 docker 群組
Image
docker search <keyword>
搜尋 Repository
docker pull <image name>:<tag>
下載 Image
docker images
Image list
Image
docker rmi <image name>:<tag>
刪除 Image
Container
docker run -i –t <image name>:<tag>
建立Container並進入該container command line
docker run -i –t -p <host port>:<container port> 
<image name>:<tag>
Container port mapping (-p)
docker run -i –t –v <host path>:<container path> 
<image name>:<tag>
掛載資料夾 (-v)
Container
docker run -d <image name>:<tag>
背景持續執行
exit
Container內離開container並暫停該container
ctrl+p ctrl+q
Container內離開container, 但不暫停該container
Container
docker start/stop <container id>
重新啟動/暫停Container
docker attach <container id>
進入正在運行的Container command line
docker ps -a
列表所有的Container
Container
docker rm <container id>
刪除Container
建立 Image
docker commit –a “<author name>” <container id> 
<account>/<repository name>:<tag>
建立 Image
docker push <account>/<repository name>:<tag>
分享至 Docker Hub
Thanks

認識 Docker