Docker--安裝、配置

Docker 是一個開源項目,誕生于 2013 年初,最初是 dotCloud 公司內部的一個業余項目。它基于 Google 公司推出的 Go 語言實現。 項目后來加入了 Linux 基金會,遵從了 Apache 2.0 協議,項目代碼在 GitHub 上進行維護。

Docker 自開源后受到廣泛的關注和討論,以至于 dotCloud 公司后來都改名為 Docker Inc。Redhat 已經在其 RHEL6.5 中集中支持 Docker;Google 也在其 PaaS 產品中廣泛應用。

Docker 項目的目標是實現輕量級的操作系統虛擬化解決方案。 Docker 的基礎是 Linux 容器(LXC)等技術。

在 LXC 的基礎上 Docker 進行了進一步的封裝,讓用戶不需要去關心容器的管理,使得操作更為簡便。用戶操作 Docker 的容器就像操作一個快速輕量級的虛擬機一樣簡單。

下面的圖片比較了 Docker 和傳統虛擬化方式的不同之處,可見容器是在操作系統層面上實現虛擬化,直接復用本地主機的操作系統,而傳統方式則是在硬件層面實現。

image.png
image.png

在任何地方開發、部署和運行任何應用

Docker是一款針對程序開發人員和系統管理員來開發、部署、運行應用的一款虛擬化平臺。Docker 可以讓你像使用集裝箱一樣快速的組合成應用,并且可以像運輸標準集裝箱一樣,盡可能的屏蔽代碼層面的差異。Docker 會盡可能的縮短從代碼測試到產品部署的時間。

Docker 組件

  • The Docker Engine – Docker Engine 是一個基于虛擬化技術的輕量級并且功能強大的開源容器引擎管理工具。它可以將不同的 work flow 組合起來構建成你的應用。
  • Docker Hub 可以分享和管理你的images鏡像的一個 Saas 服務。

為什么選擇Docker

快速交付應用程序
  • 我們希望你的開發環境能夠更好的提高你的工作效率。Docker容器能夠幫助開發人員、系統管理員、QA和版本控制工程師在一個生產環節中一起協同工作。我們制定了一套容器標準,而這套容器標準能夠使系統管理員更改容器的時候,程序員不需要關心容器的變化,而更專注自己的應用程序代碼。從而隔離開了開發和管理,簡化了開發和部署的成本。
  • 我們使應用的構建方式更加簡單,可以快速的迭代你的應用,并且可以可視化的來查看應用的細微更改。這能夠幫助組織里邊的成員來更好的理解一個應用從構建到運行的過程。
  • Docker 是一個輕量級的容器,所以它的速度是非常快的,而容器的啟動時間只需要一秒鐘,從而大大的減少了開發、測試和部署的時間。輕松部署和擴展
  • Docker 容器可以運行在大多數的環境中,你可以在桌面環境、物理主機、虛擬主機再到數據中,私有或者公有云中部署。
  • 因為 Docker 可以從多平臺下運行。你可以很容器的遷移你的應用程序。如果需要,你可以非常簡單的將應用程序從測試環境遷移到云,或者從云遷移到測試環境。
  • Docker 是一個輕量級的容器,因此它可以在很短的時間內啟動和關閉。當你需要的時候,你可以啟動多個容器引擎,并且在不需要使用他們的時候,可以將他們全部關閉。

Get higher density and run more workloads

Docker的容器本身不需要額外創建虛擬機管理系統,因此你可以啟動多套Docker容器,這樣就可以充分發揮主機服務器的物理資源,也可以降低因為采購服務器licenses而帶來的額外成本。

快速構建 輕松管理

因為Docker上述輕便,快速的特性。可以使您的應用達到快速迭代的目的。每次小的變更,馬上就可以看到效果。而不用將若干個小變更積攢到一定程度再變更。每次變更一小部分其實是一種非常安全的方式。

Docker的安裝和使用

Docker CE 的安裝請參考官方文檔:

安裝Docker -- Ubantu為例

OS 要求

要安裝Docker CE,您需要這些Ubuntu版本之一的64位版本:

  • Cosmic 18.10
  • Bionic 18.04 (LTS)
  • Xenial 16.04 (LTS)

Docker CE上支持x86_64(或amd64)armhf,arm64,s390x (IBM Z),和ppc64le(IBM的Power)架構。

卸載舊版本
Docker的舊版本被稱為docker,docker.io 或docker-engine。如果已安裝,請卸載它們:

$ sudo apt-get remove docker docker-engine docker.io containerd runc

支持的存儲驅動

Docker CE在Ubuntu支持overlay2aufsbtrfs存儲驅動程序。

注意:在Docker Engine - Enterprise中,btrfs僅在SLES上受支持。有關更多詳細信息,請參閱btrfs上的文檔 。

對于Linux內核版本4及更高版本的新安裝,overlay2 支持并首選aufs。Docker CE overlay2 默認使用存儲驅動程序。如果需要使用aufs,則需要手動配置。見aufs

安裝 Docker CE

您可以根據需要以不同方式安裝Docker CE:

  • 大多數用戶 設置Docker的存儲庫并從中進行安裝,以便于安裝和升級任務。這是推薦的方法。

  • 有些用戶下載DEB軟件包并 手動安裝并完全手動管理升級。這在諸如在沒有訪問互聯網的氣隙系統上安裝Docker的情況下非常有用。

  • 在測試和開發環境中,一些用戶選擇使用自動 便捷腳本來安裝Docker。

使用存儲庫安裝

在新主機上首次安裝Docker CE之前,需要設置Docker存儲庫。之后,您可以從存儲庫安裝和更新Docker。

設置存儲庫
  1. 更新apt包索引:

    $ sudo apt-get update
    
  2. 安裝包以允許apt通過HTTPS使用存儲庫:

    $ sudo apt-get install \
        apt-transport-https \
        ca-certificates \
        curl \
        gnupg-agent \
        software-properties-common
    
  3. 添加Docker的官方GPG密鑰:

    $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
    

    9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88通過搜索指紋的最后8個字符,驗證您現在擁有帶指紋的密鑰 。

    $ sudo apt-key fingerprint 0EBFCD88
    
    pub   rsa4096 2017-02-22 [SCEA]
          9DC8 5822 9FC7 DD38 854A  E2D8 8D81 803C 0EBF CD88
    uid           [ unknown] Docker Release (CE deb) <docker@docker.com>
    sub   rsa4096 2017-02-22 [S]
    
  4. 使用以下命令設置穩定存儲庫。要添加 夜間測試存儲庫,請在下面的命令中的單詞后添加單詞nightlytest(或兩者)stable了解夜間測試頻道

    注意:下面的lsb_release -cs子命令返回Ubuntu發行版的名稱,例如xenial。有時,在像Linux Mint這樣的發行版中,您可能需要更改$(lsb_release -cs) 為父Ubuntu發行版。例如,如果您正在使用 Linux Mint Tessa,則可以使用bionic。Docker不對未經測試和不受支持的Ubuntu發行版提供任何保證。

x86_64 / amd64 對應的是:

```
$ sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"
```

安裝DOCKER CE

  1. 更新apt包索引。

    $ sudo apt-get update
    
  2. 安裝最新版本的Docker CE和containerd,或者轉到下一步安裝特定版本:

    $ sudo apt-get install docker-ce docker-ce-cli containerd.io
    

    有多個Docker存儲庫?

    如果您啟用了多個Docker存儲庫,則在未指定apt-get installapt-get update命令中的版本的情況下安裝或更新始終會安裝盡可能高的版本,這可能不適合您的穩定性需求。

  3. 要安裝特定版本的Docker CE,請在repo中列出可用版本,然后選擇并安裝:

    一個。列出您的倉庫中可用的版本:

    $ apt-cache madison docker-ce
    
      docker-ce | 5:18.09.1~3-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu  xenial/stable amd64 Packages
      docker-ce | 5:18.09.0~3-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu  xenial/stable amd64 Packages
      docker-ce | 18.06.1~ce~3-0~ubuntu       | https://download.docker.com/linux/ubuntu  xenial/stable amd64 Packages
      docker-ce | 18.06.0~ce~3-0~ubuntu       | https://download.docker.com/linux/ubuntu  xenial/stable amd64 Packages
    

    例如,使用第二列中的版本字符串安裝特定版本5:18.09.1~3-0~ubuntu-xenial

    $ sudo apt-get install docker-ce=<VERSION_STRING> docker-ce-cli=<VERSION_STRING> containerd.io
    
  4. 通過運行hello-world 映像驗證是否正確安裝了Docker CE 。

    $ sudo docker run hello-world
    

    此命令下載測試映像并在容器中運行它。當容器運行時,它會打印一條信息性消息并退出。

Docker CE已安裝并正在運行。該docker組已創建,但未向其添加任何用戶。您需要使用它sudo來運行Docker命令。繼續Linux postinstall以允許非特權用戶運行Docker命令和其他可選配置步驟。

添加daemon.json文件

運行 sudo docker run hello-world,沒有返回結果,如下:

image.png

docker在本地沒有找到hello-world鏡像,也沒有從docker倉庫中拉取鏡像,出項這個問題的原因:是應為docker服務器再國外,我們在國內無法正常拉取鏡像,所以就需要我們為docker設置國內阿里云的鏡像加速器;
需要修改配置文件 /etc/docker/daemon.json 如下:
{
"registry-mirrors": ["https://alzgoonw.mirror.aliyuncs.com"]
}

先創建 daemon.json

image.png

后添加字段


image.png

重啟docker systemctl restart docker
查看docker 狀態 systemctl restart docker

image.png

運行 sudo docker run hello-world,結果如下:

image.png

升級DOCKER CE

要升級Docker CE,請先運行sudo apt-get update,然后按照 安裝說明選擇要安裝的新版本。

從包安裝

如果您無法使用Docker的存儲庫來安裝Docker CE,則可以下載.deb適用于您的發行版的 文件并手動安裝。每次要升級Docker時都需要下載新文件。

  1. https://download.docker.com/linux/ubuntu/dists/選擇你的Ubuntu版本,瀏覽pool/stable/,選擇amd64armhfarm64ppc64el,或s390x,并下載.deb文件要安裝多克爾CE版本。

Note: To install a nightly package, change the word stable in the URL to nightly. Learn about nightly and testchannels.

  1. 安裝Docker CE,將下面的路徑更改為您下載Docker軟件包的路徑。

    $ sudo dpkg -i /path/to/package.deb
    

    Docker守護程序自動啟動。

  2. 通過運行hello-world 映像驗證是否正確安裝了Docker CE 。

    $ sudo docker run hello-world
    

    此命令下載測試映像并在容器中運行它。當容器運行時,它會打印一條信息性消息并退出。

Docker CE已安裝并正在運行。該docker組已創建,但未向其添加任何用戶。您需要使用它sudo來運行Docker命令。繼續執行Linux的安裝后步驟, 以允許非特權用戶運行Docker命令和其他可選配置步驟。

升級DOCKER CE

要升級Docker CE,請下載較新的軟件包文件并重復 安裝過程,指向新文件。

使用便捷腳本安裝

Docker在get.docker.comtest.docker.com上提供了便捷腳本,用于快速,非交互地將Docker CE的邊緣和測試版本安裝到開發環境中。腳本的源代碼位于 docker-install存儲庫中建議不要在生產環境中使用這些腳本,在使用它們之前,您應該了解潛在的風險:

  • 腳本需要rootsudo特權才能運行。因此,在運行腳本之前,應仔細檢查和審核腳本。
  • 這些腳本會嘗試檢測您的Linux發行版和版本,并為您配置包管理系統。此外,腳本不允許您自定義任何安裝參數。從Docker的角度或您自己組織的指導方針和標準來看,這可能會導致配置不受支持。
  • 腳本安裝包管理器的所有依賴項和建議,而不要求確認。這可能會安裝大量軟件包,具體取決于主機的當前配置。
  • 該腳本不提供選項來指定要安裝的Docker版本,并安裝在“邊緣”通道中發布的最新版本。
  • 如果已使用其他機制在主機上安裝了Docker,請不要使用便捷腳本。

此示例使用get.docker.com上的腳本在Linux上安裝最新版本的Docker CE。要安裝最新的測試版本,請改用test.docker.com。在下面的每個命令中,替換每次出現的getwith test

警告

始終檢查從Internet下載的腳本,然后在本地運行它們。

$ curl -fsSL https://get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh

如果您想將Docker用作非root用戶,您現在應該考慮將您的用戶添加到“docker”組,例如:

  sudo usermod -aG docker your-user

請記得注銷并重新登錄才能生效!

警告

將用戶添加到“docker”組會授予他們運行容器的能力,這些容器可用于獲取Docker主機上的root權限。 有關更多信息,請參閱 Docker守護程序攻擊面

已安裝Docker CE。它會自動在DEB基于發行版的分發上啟動。在RPM基于On的 基礎上,您需要使用相應的systemctlservice命令手動啟動它 。如消息所示,非root用戶默認情況下無法運行Docker命令。

使用便捷腳本后升級DOCKER

如果您使用便捷腳本安裝了Docker,則應直接使用軟件包管理器升級Docker。重新運行便捷腳本沒有任何好處,如果它嘗試重新添加已添加到主機的存儲庫,則可能會導致問題。

卸載Docker CE

  1. 卸載Docker CE軟件包:

    $ sudo apt-get purge docker-ce
    
  2. 主機上的圖像,容器,卷或自定義配置文件不會自動刪除。要刪除所有圖像,容器和卷:

    $ sudo rm -rf /var/lib/docker
    

您必須手動刪除任何已編輯的配置文件。

·

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,030評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,310評論 3 415
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,951評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,796評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,566評論 6 407
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,055評論 1 322
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,142評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,303評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,799評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,683評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,899評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,409評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,135評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,520評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,757評論 1 282
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,528評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,844評論 2 372

推薦閱讀更多精彩內容