什麼是Docker?
在軟體服務爆發的年代,四處都可以看見軟體工程師的付出,致力為各行各業開發服務的軟體供應商或是個人開發者如雨後春筍冒出。然而在當我們要管理這麼多服務與軟體就會遇到一個問題:
我們要怎麼有效地維持服務?
維持服務並不容易,即使該服務不在擴張功能,我們都還是有可能因為許多因素影響,以至於我們必須移植或是調整電腦作業環境,更別說是正在發展的項目。
從實體成本、移植維護成本與管理便利,為每個服務建置一個實體伺服器是明顯不合理的解決方案,因此虛擬化的技術因此需求蓬勃發展,而Docker就是其中之一。
Docker一種“輕量”虛擬機器的技術
Docker這項服務是2013年開始的,以“輕量”、“易於移植”等特色在虛擬化服務中脫穎而出,時至今日,已是目前十分流行的虛擬化技術,讓不同的應用程式專案能在各自的獨立空間各自運作。
Docker精神: “Build, Ship, and Run Any App, Anywhere.”
(建立、移植 ,在任何地方運作任何應用服務)
現在我們來實際來說說,針對於Docker這項服務,有什麼事我們必須知道的?
- 輕量
Docker 相較於傳統虛擬主機服務來說,傳統虛擬主機為了支撐作業系統需要多 的資源。簡單來說,在一台電腦中,傳統虛擬主機服務最多可以執行十台虛擬主機就已經很勉強了,而在相同的電腦中,Docker可以在一台主機上同時執行數百個不同的虛擬應用程式,而且彼此完全隔離(何宗諭, 2016)。
- 易於移植
DockerHub是Docker提供的一項服務,他是一個雲端分享的空間,提供使用者上傳、分享你完成的images,因此透過DockerHub,任何人都可以下載並在任和地方還原應用服務(當然,通常隱私的東西會設權限)。
此外DockerHub也提供以下主要功能,有空可以去多瞭解:
- Repositories: Push and pull container images.
- Teams & Organizations: Manage access to private repositories of container images.
- Official Images: Pull and use high-quality container images provided by Docker.
- Publisher Images: Pull and use high-quality container images provided by external vendors. Certified images also include support and guarantee compatibility with Docker Enterprise.
- Builds: Automatically build container images from GitHub and Bitbucket and push them to Docker Hub
- Webhooks: Trigger actions after a successful push to a repository to integrate Docker Hub with other services.
好了,以上介紹(推銷)了這麼多,我們可以進入第二部分 “實作”。
Docker 環境安裝
當然,實作的第一步永遠是安裝環境,還未建置Docker環境的朋友請移駕至Get Started with Docker ,Docker的環境安裝並不難,如果是Windows或MAC的電腦,基本上就是註冊帳號後,下載桌面版後滑鼠點點確認就完成安裝了,我想應該不會有太大的問題。
Ubuntu 系列的可以參考官網或是Ubuntu 系列安裝 Docker。
圖中那隻鯨魚logo就是Docker了
Docker Helloword
再來我們可以來建置我們第一個環境,為此我們要先了解Docker的結構,Docker的結構可以分成兩個部分。
- image
- container
首先我們說說image,image也就是打包好的應用程式與系統環境,也是我們分享與取得的重要分享格式,我們可以透過DockerHub取得許多環境,像是基本的系統環境(官方提供的ubuntu與windows系統環境)或是打包好的服務(AI訓練架構或網路服務接口等等)。
我們只要簡單的透過pull指令就能取得,像是下方提供一個取得ubuntu系統的指令
docker pull ubuntu
你看,執行指令後,docker在幾秒內自動輸出了短短四行,我們就取得了ubuntu系統,不用一堆作業系統設定是多美好的事情啊!(有灌過系統的人開始雀躍)
現在我們讓ubuntu系統動起來!執行指令
docker run -it --name Helloword ubuntu
就這樣,我們成功建立了ubuntu系統!
什麼?你說你不相信? 好吧那我們來看看系統資訊。
你看,沒騙你吧~
在你雀躍如此簡單之前,你還記得上面提到的Docker的另一部分的結構:container嗎?
還有後續我們要怎麼打包呢?
請看下一篇:Docker 入門到使用
參考文獻:
-
[Day 4] 上傳 Docker Image 到 Docker Hub, zxcvbnius
-
Docker, 維基百科,自由的百科全書
- 淺談輕量化的虛擬技術 – Docker容器, 何宗諭
- Docker Hub Quickstart, DockerHub offical
whoah this blog is wonderful i really like reading your articles. Keep up the great paintings! You realize, a lot of people are hunting round for this info, you could help them greatly.