1. 程式人生 > >嶄新的 RedHat 7.2 搭建 docker 私有映象庫服務端客戶端環境總攻略

嶄新的 RedHat 7.2 搭建 docker 私有映象庫服務端客戶端環境總攻略

一、引言

最近專案裡有一個搭建 docker 的私有映象庫的任務,環境是 RedHat 7.2,不能聯網,並且希望能夠儘量使用最新的 docker 版本。

為了完成這個任務,我踩了很多很多坑,並且參考了很多很多部落格。這裡我將我成功搭建的步驟寫下來,其中每個步驟都可能是卡了我很久的問題,我會貼出當時解決該問題的部落格連結,具體解決方法就不寫了(不然要寫太多了)。

這裡簡單畫一個流程圖,講述我們將要描述的各個步驟:

Created with Raphaël 2.1.2虛擬機器裝好 RedHat 7.2加入 sudoers配置網路替換 yum二進位制安裝 docker是否服務端服務端:建立有使用者認證的私有映象庫
客戶端:修改 daemon.json 解決 https 問題yesno

二、虛擬機器安裝 RedHat 7.2

虛擬機器安裝 RedHat 7.2 兩個環境,一個用來當做 docker 私有映象庫的服務端,一個用來當做 docker 私有映象庫的客戶端使用。

這裡並沒有什麼難度。但是這裡我為了區分服務端、客戶端的虛擬機器環境,修改了環境的主機名稱。這裡也遇到了修改不成功的問題。具體參考我之前寫的部落格解決這個問題:
RedHat 7.2 如何修改預設的 localhost 主機名

建議服務端主機名修改為 docker-server,客戶端主機名修改為 docker-client,這樣方便我們後續的使用。

三、將當前使用者加入到 sudoers 檔案中去

使用 linux,當然要儘量少的使用 root 賬號登入。那麼一旦遇到我們需要 root 許可權的時候,就需要普通使用者通過 sudo 命令來暫時獲得 root 許可權。而一個普通使用者要能暫時獲取 root 許可權,則必須加入到 sudoers 檔案中去。

普通使用者能夠使用 sudo 了之後,就能大大方便我們後續的操作。

四、配置網路

我更加喜歡使用 Putty 來操作虛擬機器中的環境。那麼我們就需要先配置好虛擬機器環境中的網路配置。這樣一來方便我們使用 Putty 通過 ip 地址連線虛擬機器環境,二來方便我們區域網通訊(服務端與客戶端可以通訊)。

這樣一來,我們已經完成了虛擬機器環境的區域網連線以及 Putty 的接入。

五、*可選:替換 RedHat 的 yum 工具為 CentOS 的 yum 工具

眾所周知的,RedHat 企業版的 yum 源是收費的。因此如果你不替換掉它的話,你根本無法使用 yum 工具安裝軟體。儘管 yum 工具的替換在這裡並不是必須的,但是基於我的強迫症,我還是給替換成免費的 CentOS 的 yum 工具了。

這篇部落格的作者已經貼上了一個百度雲盤連結,如果你也是離線安裝 yum 工具的話,可以直接拿到這個檔案到 RedHat 環境中使用 rpm 命令解壓安裝:

# 解壓安裝 yum 工具
sudo rpm -ivh *.rpm

然後繼續根據教程替換 yum 源配置即可。

六、二進位制安裝 docker

我嘗試過很多方法離線安裝 docker(當然在線安裝是很簡單的,可能需要配置下 docker 加速地址,這個可以自己去搜索配置,這裡主要講述離線安裝的方式)。最後發現,如果你想要在離線的方式下安裝 docker,又想要使用最新版的 docker 的話,還是使用官網提到的二進位制安裝 docker 的方式最方便。

至此,我們已經安裝好了 docker 環境了。

七、docker 服務端:搭建有使用者驗證的私有映象庫

安裝好了 docker 環境之後,並且現在你應該有了兩個 docker 環境的 RedHat 虛擬環境(2 到 6 步驟重複兩次)。

此時,我們需要將一個環境定義為 docker 服務端來作為私有映象庫的作用。此外,我們還要給這個私有映象庫加上使用者驗證的功能,防止任何能夠訪問到服務端地址的機器肆意修改我們的私有映象庫環境。

這裡,我參考了這篇部落格,完成了這個任務(從 私有倉庫認證 這個標題開始仿照作者操作):
docker私有倉庫搭建並且配置倉庫認證

如果你開啟瀏覽器,輸入:

# xxx.xxx.xxx.xxx 是你的服務端的 ip 地址(使用 127.0.0.1 應該也可以)
# yyy 是設定繫結的埠號(一般根據部落格設定為 5000)
http://xxx.xxx.xxx.xxx:yyy/v2/_catalog 

會彈出一個使用者驗證的提示框,你輸入你設定賬號和密碼,應該就可以看到 json 資料了,如果做到這點,那麼你的服務端就搭建好了。

八、docker 客戶端:注意 https 的問題

docker 客戶端並沒有什麼問題,就是需要在 push 和 pull 之前先要 docker login 一下才能訪問 docker 服務端的私有映象庫。

但是這裡會有一個問題,如果你沒有配置的話,推送或者拉取映象,會出現類似如下的錯誤提示:

The push refers to repository [172.18.18.90:5000/busybox]
Get https://172.18.18.90:5000/v2/: http: server gave HTTP response to HTTPS client

至此,我們就完成了 RedHat 7.2 環境下 docker 帶有使用者驗證的私有映象庫服務端客戶端環境的搭建。

九、總結

在完成這個任務的過程中,是摸石頭過河的過程。因為本人學疏才淺,也加上一方面網上的資訊實在太過於繁雜冗亂,能夠在眾多的資訊中找到可以解決自己具體問題的資訊,也是一個很難的事情。

我們完成一個任務,就像是解決一個又一個問題。而如果把一個問題看做是一個節點的話,那我們我們完成任務的過程,就是尋找解決節點的方法。在我腦海裡彷彿浮現著這些節點的連線圖,這是一個挺有趣的想象場景。部落格也好、官網也好,查詢資料尋找解決方案的過程,本身就是很有趣的:)

特此寫這一篇並沒有什麼技術含量的總結性部落格總結一下最近的感悟

To be Stronger:)