Docker安裝Redis以及遇到的坑

搭建Docker

省略一萬步

搭建Redis

我使用的是阿里云鏡像
進(jìn)去之后直接搜索Redis

image.png

首先我們肯定會(huì)選擇加速器進(jìn)行下載,畢竟國內(nèi)訪問docker官方倉庫肯定是特別慢的。

配置阿里云倉庫

按照官方文檔提示走就可以,只需配置一條即可


image.png

我的配置:


image.png

配置之后重新加載配置文件
sudo systemctl daemon-reload

重新啟動(dòng)docker

sudo systemctl restart docker

配置Redis

下載redis鏡像

docker pull redis
image.png

配置data、conf

mkdir -p ./docker/redis/data
mkdir -p ./docker/redis/conf

增加redis.conf

我是本身centos中已經(jīng)有redis,直接cp就ok

配置redis.conf

配置外網(wǎng)訪問
原文件:

bind 127.0.0.1
protected-mode yes
appendonly no//持久化
# requirepass foobared

修改后:

#bind 127.0.0.1
protected-mode no
appendonly yes//持久化
requirepass yourpassword

ps:

protected-mode 是在沒有顯示定義 bind 地址(即監(jiān)聽全網(wǎng)斷),又沒有設(shè)置密碼 requirepass
時(shí),只允許本地回環(huán) 127.0.0.1 訪問。 也就是說當(dāng)開啟了 protected-mode 時(shí),如果你既沒有顯示的定義了 bind
監(jiān)聽的地址,同時(shí)又沒有設(shè)置 auth 密碼。那你只能通過 127.0.0.1 來訪問 redis 服務(wù)

啟動(dòng)redis

創(chuàng)建并運(yùn)行一個(gè)名為 myredis 的容器

docker run \
-p 6379:6379 \
-v /usr/mine/program/docker/redis/data:/data \
-v /usr/mine/program/docker/redis/conf/redis.conf:/etc/redis/redis.conf \
--privileged=true \
--name myredis \
-d docker.io/redis:latest redis-server /etc/redis/redis.conf

命令分解

docker run \
-p 6379:6379 \ # 端口映射 宿主機(jī):容器
-v /docker/redis/data:/data:rw \ # 映射數(shù)據(jù)目錄 rw 為讀寫
-v /docker/redis/conf/redis.conf:/etc/redis/redis.conf:ro \ # 掛載配置文件 ro 為readonly
--privileged=true \ # 給與一些權(quán)限
--name myredis \ # 給容器起個(gè)名字
-d docker.io/redis:latest redis-server /etc/redis/redis.conf # deamon 運(yùn)行 服務(wù)使用指定的配置文件

查看狀態(tài)

docker ps
image.png

ps:

其實(shí)在文檔之前我是遇到一個(gè)BUG的,docker ps什么都沒有,百度了一下是因?yàn)闄?quán)限問題。

問題原因及解決辦法

   原因是CentOS7中的安全模塊selinux把權(quán)限禁掉了,至少有以下三種方式解決掛載的目錄沒有權(quán)限的問題:
   1.在運(yùn)行容器的時(shí)候,給容器加特權(quán),及加上 --privileged=true 參數(shù):
   docker run -i -t -v /soft:/soft --privileged=true 686672a1d0cc /bin/bash(我選擇了這種)
   2.臨時(shí)關(guān)閉selinux:
   setenforce 0
   3.添加selinux規(guī)則,改變要掛載的目錄的安全性文本
      $ chcon -Rt svirt_sandbox_file_t /docker/redis/data

解決方案:Docker掛載主機(jī)目錄Docker訪問出現(xiàn)Permission denied的解決辦法

客戶端測(cè)試

docker exec -it myredis /bin/bash
redis-cli -a yourpassword
...

結(jié)束

大功告成
docker應(yīng)該還有很多坑,畢竟采用的是沙盒機(jī)制,層層隔離,因?yàn)闀?huì)牽扯到很多安全問題,這只是個(gè)入門。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容