搭建Docker
省略一萬(wàn)步
搭建Redis
我使用的是阿里云鏡像
進(jìn)去之后直接搜索Redis
首先我們肯定會(huì)選擇加速器進(jìn)行下載苫幢,畢竟國(guó)內(nèi)訪問(wèn)docker官方倉(cāng)庫(kù)肯定是特別慢的从撼。
配置阿里云倉(cāng)庫(kù)
按照官方文檔提示走就可以,只需配置一條即可
我的配置:
配置之后重新加載配置文件
sudo systemctl daemon-reload
重新啟動(dòng)docker
sudo systemctl restart docker
配置Redis
下載redis鏡像
docker pull redis
配置data、conf
mkdir -p ./docker/redis/data
mkdir -p ./docker/redis/conf
增加redis.conf
我是本身centos中已經(jīng)有redis佑颇,直接cp就ok
配置redis.conf
配置外網(wǎng)訪問(wèn)
原文件:
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 訪問(wèn)淮悼。 也就是說(shuō)當(dāng)開啟了 protected-mode 時(shí)咐低,如果你既沒有顯示的定義了 bind
監(jiān)聽的地址,同時(shí)又沒有設(shè)置 auth 密碼袜腥。那你只能通過(guò) 127.0.0.1 來(lái)訪問(wèn) 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
ps:
其實(shí)在文檔之前我是遇到一個(gè)BUG的,docker ps什么都沒有羹令,百度了一下是因?yàn)闄?quán)限問(wèn)題鲤屡。
問(wèn)題原因及解決辦法
原因是CentOS7中的安全模塊selinux把權(quán)限禁掉了,至少有以下三種方式解決掛載的目錄沒有權(quán)限的問(wè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訪問(wèn)出現(xiàn)Permission denied的解決辦法
客戶端測(cè)試
docker exec -it myredis /bin/bash
redis-cli -a yourpassword
...
結(jié)束
大功告成
docker應(yīng)該還有很多坑癌刽,畢竟采用的是沙盒機(jī)制役首,層層隔離尝丐,因?yàn)闀?huì)牽扯到很多安全問(wèn)題,這只是個(gè)入門衡奥。