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 的筆記