序言
這篇文章沒有什么知識點,只是為了新伙伴少踩點坑
1. 問題重現
創建容器
2. 解讀參數
-d: 后台運行容器,並返回容器ID;
-i: 以交互模式運行容器,通常與 -t 同時使用;
-p: 端口映射,格式為:主機(宿主)端口:容器端口
-t: 為容器重新分配一個偽輸入終端,通常與 -i 同時使用;
--ip: 為容器制定一個固定的ip
--net: 指定網絡模式
3. 進入容器查看redis.conf文件
發現是並沒有redis.conf文件的,那么這個時候就是新手踩坑階段了,因為沒有系統的學習docker所以會花費很多時間
2. 解決問題
沒有配置文件這件事呢!那是因為redis容器里邊的配置文件是需要在創建容器時映射進來的
那么就需要刪除我們之前創建好的容器,在刪除前需要先停止容器后才可以刪除
停止容器:docker container stop redis-test
刪除容器:docker container rm redis-test
1. 開始重新創建redis容器
docker run -itd --name redis-slave -v /usr/local/redis/redis.conf:/etc/redis.conf -v /root/usr/local/redis/data:/data --net mynetwork -p 6381:6379 --ip 172.10.0.3 redis
參數解釋:
-v /usr/local/redis/redis.conf:/etc/redis.conf:映射配置文件
-v /root/usr/local/redis/data:/data:映射數據目錄
那么這個時候就有redis配置文件了
3. 搭建容器並掛載外部配置
上邊是在我宿主機有redis的情況下的,那么下來說宿主機沒有redis的情況
這里說的映射其實就是掛載外部配置和數據安裝
1. 創建docker統一的外部配置文件
mkdir -p docker/redis/
2. 在conf目錄創建redis.conf的配置文件
touch /docker/redis/conf/redis.conf
3. redis.conf文件的內容需要自行去下載,網上很多
4. 創建啟動容器,加載配置文件並持久化數據
docker run -d --privileged=true -p 6379:6379 -v /docker/redis/conf/redis.conf:/etc/redis/redis.conf -v /docker/redis/data:/data --name redis-test redis redis-server /etc/redis/redis.conf --appendonly yes
參數說明:
--privileged=true:容器內的root擁有真正root權限,否則容器內root只是外部普通用戶權限
-v /docker/redis/conf/redis.conf:/etc/redis/redis.conf:映射配置文件
-v /docker/redis/data:/data:映射數據目錄
redis-server /etc/redis/redis.conf:指定配置文件啟動redis-server進程
--appendonly yes:開啟數據持久化
