Docker Workshop Notes

What is Docker?

Docker 以目前我的了解來看,和虛擬化是有相當程度的差異,Docker 和 VMWare 並非取代的關係,反而是互相輔助。

一台實體機器上,可能會透過 Vagrant 來建立多個 VM 環境,而這每個 VM 裡面又存在多個 Docker Continer, Docker 的出現並不是為了取代 VM,就好比 Vagrant 的出現並不是為了取代 Virtual box 一樣。

Image And Container

基本上的類推可以透過 Class 與 Instance 的關係一樣, Image(Class) 之於 Container(Instance)。

Dockerfile

這是 Docker 的靈魂檔案,裡面定義著想建立的 Image,源自於其它 Image(最基本的 Image 是 Scratch,就像 Java 的 Object) 以及其它需要搬到 Image 裡面的各種動作。

Docker Networking models

Docker 有一個特殊的網路結構:

  • 每一個 container 都有自己獨自網段,而這個網段透過 docker0 這個 bridge 來連接。
  • 當 Container 之間無法相連的時候,就要上面這張圖,需要透過 container linking 或是 Port mapping 等技巧,來完成。

Command List

  • docker images – 列出機器上目前有的 Image
  • docker ps – 觀察目前正在跑的 Container
  • docker build – 建立 Docker image
  • docker logs continer name – 觀察特定 Container 產出的 log
  • docker run -d image id – 把 docker image 以 background 的方式跑起來
  • docker inspect image id – 查看 image 相關的資訊

上完 docker-workshop 的筆記