序言
本文重點講解了如何通過redis的官方鏡像和docker容器來搭建redis-cli,并将其連接配接到redis鏡像。首先要跟大家簡單介紹一下redis,這是一個鍵值存儲系統,除了對場景進行緩存之外,redis還提供了很多強大的功能,是以也目前是非常受歡迎的一個資料庫。
docker鏡像倉庫簡介
大家可以在docker hub裡搜尋到目前所有的主流應用和服務的鏡像,像python語言、mysql資料庫等等鏡像在docker hub裡面都有。而且docker hub裡面的鏡像數量非常多,不管我們搜什麼關鍵詞,都能搜出來一大堆結果。之是以會這樣,是因為docker官方鏡像倉庫的宗旨就是将已知來源、滿足一定品質标準的docker鏡像組織在一起提供給使用者。一般情況下,我建議大家都盡量使用docker hub提供的官方鏡像,大家可以在查詢結果清單中看到目前分類下有哪些官方鏡像,一般官方鏡像都會在清單中置頂顯示,而且會有标有“官方”字樣。
從官方鏡像倉庫pull鏡像的時候,使用者名的部分可以為空,也可以設定為library,比如說拉取 casandra鏡像的時候就可以設定成從apache cassandra項目擷取。大家也可以在自己的終端上運作下面的指令,在docker hub中查找cassandra鏡像:
$docker search cassandra
通過這種方式對docker hub進行查詢的時候,系統會傳回一條消息,提示使用者“你所拉取的鏡像已認證驗證”,看到這條資訊就表示鏡像的校驗碼通過了docker daemon的驗證,來源是可靠的。
快速實作docker到redis的連接配接
閑話少說,我們下面就進入實戰教程。首先運作下面指令,從docker hub拉取redis鏡像:
$ docker pull redis
運作上面的指令下載下傳鏡像,docker daemon會自動輸出該redis鏡像的來源資訊、下載下傳狀态,下載下傳完成之後系統也會顯示最終狀态資訊。
鏡像拉取完成之後,大家可以用下面的指令啟動redis容器,記得要帶上“-d”參數:
$ docker run --name myredis-itsmine -d redis
“-d”參數的作用是讓redis在背景運作,因為本例中采用這種背景運作的方式較為合适,是以這裡我們寫上了這個參數。如果不帶 “-d”參數的話處理起來就要麻煩一些,這種情況下我們需要先停止終端的運作或者退出容器,然後才能通過主控端來通路redis。
下面我們要進行最重要的一步操作,連接配接redis。由于我們并沒有實際的需要連接配接到redis的應用,是以這裡我們用了redis-cli工具。大家可以在主控端上安裝redis-cli,不過我建議大家建立一個容器,将redis-cli運作在裡面,然後用下面的指令把這兩個容器連接配接起來,這樣我們就可以看到詳細的應用資訊:
$docker run --rm -it --link myredis-itsmine:redis redis /bin/bash
運作該指令之後我們就可以在bash指令行下面看到容器的提示資訊了:
root@f75bacab2715:/data#
$ docker run --rm -it --link myredis:redis redis /bin/bash
$ root@af47015c4a76:/data# redis-cli -h redis -p 6379
$ redis:6379> ping
$ pong
$ redis:6379> set "abc" 123
$ ok
$ redis:6379> get "abc"
$ "123"
$ redis:6379> exit
root@af47015c4a76:/data# exit
$ exit
在上面的指令中,docker run指令後面跟的“–link myredis-itsmine:redis” 參數用于建立連接配接,docker收到該指令後,就會嘗試将我們建立的容器連接配接到目前的“myredis-itsmine” 容器,同時會将新容器中的redis-cli命名為“redis”。docker會在容器中的/etc/hosts路徑下為“redis”建立一個入口,并指向“myredis-itsmine”容器的ip位址。這樣我們就可以在redis-cli中直接使用“redis”作為主機名,這種做法是很友善的,我們不必再去找其他辦法來“發現”redis的ip位址,然後加以引用了。
接下來我們就可以通過set和put指令來執行redis的存取操作了,這裡我們可以用一些示例資料來做個試驗。當然,在開始存取操作之前,大家還要再運作一下redis的ping指令,驗證一下redis伺服器是否已經連接配接上了。
本文講述了如何通過容器來實作redis資料庫的連接配接,看到這裡,大家是否已經對容器的網絡連接配接有個初步的概念了?新版的docker在網絡功能方面也做出了一定的改進,相信在不久的将來,所有使用者都可以很友善地通過docker容器實作應用和服務的互連。