Docker Workshop Notes

What is Docker?

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

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

Image And Container

基本上的類推可以透過 ClassInstance 的關係一樣, 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 的筆記