![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5COhRDN1MDOlNWYlBDZ4UjYhRWZ0gDOkdTZ0gzM4ETMi9CX5d2bs92Yl1iclB3bsVmdlR2LcNWaw9CXt92Yu4GZjlGbh5yYjV3Lc9CX6MHc0RHaiojIsJye.png)
項目中使用redis很常見,是以安裝redis是每個小夥伴都應該熟練的技能。
這裡定義兩個概念 ,請記住。
- 宿主:你正在操作的linux系統(或是雲伺服器或者是實體服務)
- 容器:也就是在docker中虛拟出來的linux
1.安裝redis
1.拉取鏡像
這裡也可以加上版本号,如果不加,預設最新。
1. docker pull redis
2. 複制代碼
2.檢視本地鏡像
檢視本地鏡像是否成功。
1. docker images
2. 複制代碼
3.修改配置
在linux建立任意一檔案夾,這裡樓主建立了/usr/local/redis 。在官網或者其他redis工程中,擷取redis.conf,并以下配置修改好的後放入上文建立的檔案夾中。
1. #bind 0.0.0.0 #帶bind的注釋掉
2. protected-mode yes #開啟密碼 雲服務上一定要開啟密碼,防火牆 不信你就試試!!!!!
3. daemonize no #一定改為no 否則redis不能啟動 而且沒有日志!!!!!!!!!!
4. requirepass 123 #密碼
5. 複制代碼
4.建立資料檔案夾
建立/usr/local/docker/data檔案夾,放置容易映射過來的資料(對應着下文參數,可以修改,如果修改自己對應一下)
docker容器會與主控端建立連接配接,然後将資料同步到主控端中,這樣就不用每次都進入docker容器操作檔案了。
下圖為安裝後,宿主映射出來的檔案資料。
5.運作容器
1. docker run -p 6379:6379 --name redis -v /usr/local/redis/redis.conf:/etc/redis/redis.conf -v /usr/local/docker/data:/data -d redis redis-server /etc/redis/redis.conf --appendonly yes
2. 複制代碼
指令中的檔案夾路徑是可以更改的,請按照個人環境自行修改。
6.指令解釋
- -p 6379:6379:第一個6379是主控端的端口,第二個6379是reids容器的向外提供的端口。這個意思也就是宿主使用6379端口接收redis容器6379發出的請求。
- --name redis :容器名稱
- -v /usr/local/redis/redis.conf:/etc/redis/redis.conf :将上文指定宿主/usr/local/redis/redis.conf檔案映射到容器的/etc/redis/redis.conf
- -v /usr/local/docker/data:/data :将容器的資料映射過來
- -d redis redis-server /etc/redis/redis.conf :将容器下/etc/redis/redis.conf檔案作為容器redis的配置啟動項
- --appendonly yes :辨別開啟持久化 這裡隻是示範可以通過這種方式設定參數
7.查詢運作資訊
1. docker ps
2. 複制代碼
2.常見異常
1. changing ownership of '.': Permission denied或者chmod: changing permissions of'/var/lib/postgresql/data': Permission denied
2. 複制代碼
以上錯誤時執行
-v /usr/local/redis/redis.conf:/etc/redis/redis.conf
出現的,因為docker容器沒有主控端的權限是以報錯!
結論
關閉SELinux
1. getenforce #檢視SELinux狀态 permissive關閉狀态 enforcing開啟狀态
2. setenforce 0 #臨時關閉
3. setenforce 1 #臨時開啟
4.
5. //永久關閉
6. 修改 /etc/selinux/config
7. SELINUX=enforcing改為SELINUX=disabled