還在用虛擬機裝Linux?Docker就夠了

不少開發人員的桌面環境還都是Mac,Windows,可是咱們的服務大多跑在Linux上,因此搭建一個Linux環境用來平時學習和調試就頗有必要了。linux

每每你們在Mac或Windows環境下裝Linux無非兩種途徑,要麼雙系統,要麼用虛擬機。其實這兩種方法都多多少少有一些弊病:git

  1. 雙系統的安裝方式對不少新手來講不夠友好,好比須要分區,好比須要引導。
  2. 虛擬機的方式體驗又不好,不少同窗爲了可以有很好的體驗又不得把本機的配置搞得很高,才能比較流暢的用虛擬機Linux環境。

本文來帶你get一個全新技能,用Docker來構建你本身的Linux學習環境。Docker環境有許多好處:docker

  1. 更輕量,Docker的資源佔用是極低的,你幾乎感受不到Docker佔用了你什麼系統資源。
  2. 更便攜,當你構建好你的Linux鏡像時,你能夠在任何安裝了Docker的主機上運行你的Linux。
  3. 更酷!想一想,你在幫別的同窗解決一個問題,他用的goland,這讓你很不爽,你分分鐘拉取了你本身的鏡像,用vim秀了對方一臉。

下面咱們就一塊兒嘗試一下吧。shell

準備

準備工做很簡單,下載安裝Docker,官方網站有無腦雙擊安裝包,這個再簡單不過了,另外一個準備工做就是加大你的帶寬,跑起來吧!ubuntu

1. 基礎鏡像

Dockerfile一個配置文件,用來告訴Docker你須要構建什麼樣的容器鏡像vim

第一步咱們要作的是,建立一個目錄好比my-awesome-linux等等的項目目錄,而後添加一個空文件Dockerfile。文件的內容以下:緩存

很簡單吧?只須要兩行。 第一行告訴Docker我須要一個ubuntu:16.04版本的鏡像環境。 第二行告訴Docker這個鏡像的啓動命令是shell,ok了,接下來咱們一塊兒見證奇蹟!在終端中輸入:bash

$docker build -t my-awesome-linux .工具

balabalaba……,你能夠去衝幾杯咖啡,取決於你的網速🙃,等鏡像就構建好,你能夠經過docker images看到你剛剛構建好的鏡像。本地鏡像比較多的時候能夠用grep命令來過濾:學習

$docker images | grep 'my-awesome-linux

有了這個鏡像,咱們就能夠在任何安裝Docker的環境中運行他了,那好比咱們在本地運行一下看看:

$docker run -it my-awesome-linux bash

你會看到你進入了一個新的shell環境,你跑一下$ls看看,是否是很酷!一個ubuntu環境就這麼簡單的出來了。

固然這還不夠,上面的步驟只是一個簡單的版本,要想秀同窗一臉,沒有定製化怎麼能開心呢。接下來咱們就看看如何定製化咱們這個最酷的linux環境!你能夠先想一想腦海中那個最酷的Linux畫面,各類很牛的命令行工具,各類系統調優工具,配置好的vim等等😎。

定製鏡像

你能夠接着在上面的shell環境中運行apt-get update && apt-get install git,這樣就能夠安裝你須要的各類軟件了,跟從零打造一個本身的linux環境沒什麼區別。可是我不推薦你這麼作,由於在Docker容器內部新建立的文件會隨着容器的銷燬而銷燬,因此一旦你的容器掛了,你以前的努力就白費了(至少目前是,若是你不知道docker commit的話)。其實就算你會用docker commit我也不推薦你這樣作,由於咱們把咱們安裝的每個依賴,都完完整整的記錄到Dockerfile中,可以經過git對這個鏡像不斷的升級優化和調整才更符合規範。

那咱們就看看如何用Dockerfile來定製咱們的鏡像。首先咱們在Dockerfile中添加兩行:

咱們添加了兩行RUN開頭的指令,這個指令的意思是:在基礎鏡像環境之上運行這個指令。

聰明的你必定想到這兩個命令用一行就能夠了爲何咱們要用兩行呢?其實我這裏也有個當心機,我故意拆成了兩行:

Dockerfile中的全部指令都是能夠緩存的,按照文件中從上至下的順序,若是某一層(即指令)沒有變更,那麼docker build時能夠利用以前的緩存。

這樣能夠加快構建速度。因此筆者比較懶,就不去列舉你須要經過RUN來安裝的全部包了,你腦海中有利用緩存加快構建的概念就行了。

最後,仍是$docker build -t my-awesome-linux .,衝杯咖啡,回來就構建好了,你能夠接着用上面的run方法來測試你安裝的那些軟件了,很酷吧!並且當你在別的主機上運行這個鏡像的時候,這些軟件也都是安裝好的。

到了這裏你已經學會了完整構建一個屬於本身的linux環境的完整路徑,因爲篇幅過長,咱們把更多能夠定製化的部分放到下一篇中。

相關文章
相關標籤/搜索