【學習】Docker

Young Tsai
Young
Published in
4 min readJan 30, 2020

Ref

Note

Docker 三元素包含 Dockerfile、Docker 映像檔(Image)以及 Docker 容器(Container)

鯨魚背上的貨櫃:Docker 容器 → Docker container

  • 一般而言,一個容器裡通常會包含了一個完整的 Application
  • Docker 的容器就是這樣的一個概念,幫你事先將一個 App 所需要的所有環境,包含作業系統 OS 都「容納」在一起。
  • 因為連 OS 都被包起來了,實際上每個容器(container)的執行環境都是自給自足的(self-contained)
  • Docker 幫我們抽象化在任何 OS 上建置環境的工作。只要給 Docker 一個容器,它就能在任何地方啟動該容器以供你使用。

貨櫃(Docker 容器)從哪來 → Dockerfile

  • 要產生一個新的 Docker 容器,Docker 需要一份「環境安裝步驟書」來讓它幫我們自動地建置容器內的環境
  • 參考 Dockerfile

追求規模性:Docker 映像檔的誕生 → Docker image

圖片來源
  • Docker 可以事先用這個 Dockerfile 把建置環境所需的步驟先做好一遍,然後把該環境「拍張照」,存成一個 Docker 映像檔(image)後等待之後的使用
  • 因為我們已經有一個環境的快照(Snapshot),Docker 就能利用該映像檔,快速地啟動 1 個(或 100 個)相同的容器給你

快速體驗

  1. download docker: 官方網站
  2. 知道 Dockerhub:用來分享 Dockerfile 以及 Docker 映像檔
  3. 指令
docker pull tensorflow/tensorflow
docker run -it -p 1234:8888 tensorflow/tensorflow

docker pull 將 image 拉下來

docker run 則是跑一個環境出來

利用 Docker 分享你的成果(這我覺得很聰明!)

事先將所有此 App 需要的環境用一個 Dockerfile 定義、全部包在一個 Docker 映像檔後分享在 Docker Hub 上面。

任何想要使用此 App 的人,只需要利用 Docker 輸入兩行指令(參考本篇 Ref 文章):

docker pull leemeng/cat
docker run -it -p 2468:5000 leemeng/cat

接著他們就能在瀏覽器輸入 localhost:2468 來看到我的 App:

--

--