參考於: https://hub.docker.com/_/redis/
- 記錄
docker
啓動redis
鏡像,redis
使用自定義redis.conf
配置文件; - 記錄
selinux
開啓,使用自定義配置文件產生的問題; - 記錄
docker
下使用redis-cli
,通過容器互聯訪問和遠程訪問。
1.啓動
docker run -d \
--name redis-server \
-p 6379:6379 \
--restart always \
-v $PWD/Dockers/redis/data:/data:Z \
-v $PWD/Dockers/redis/redis.conf:/usr/local/etc/redis/redis.conf:Z \
redis:latest \
redis-server /usr/local/etc/redis/redis.conf
- -v $PWD/Dockers/redis/redis.conf:/usr/local/etc/redis/redis.conf:Z,使用自定義配置。最後的
:Z
在selinux
爲開啓狀態下必須添加。 - 執行上述命令前,先在相應的目錄下準備好
redis.conf
文件(此處全路徑爲:$PWD/Dockers/redis/redis.conf
)。 - 需要密碼則開啓
requirepass
參數配置。 - 需要遠程對外提供服務則註釋
bind 127.0.0.1
。
首先看數據卷映射不加:Z
:
[root@Riped-MicroService-04 kygl]# docker run -d \
> --name redis-server \
> -p 6379:6379 \
> --restart always \
> -v $PWD/Dockers/redis/data:/data:Z \
> -v $PWD/Dockers/redis/redis.conf:/usr/local/etc/redis/redis.conf \
> redis:latest \
> redis-server /usr/local/etc/redis/redis.conf
213b57fb720ad736938e5a8d7ccd8448e469a5dd6a501d4765e58f400a7f8214
#容器被創建,狀態一直爲Restarting
[root@Riped-MicroService-04 kygl]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
213b57fb720a redis:latest "docker-entrypoint.sh" 4 seconds ago Restarting (1) 1 seconds ago 0.0.0.0:6379->6379/tcp redis-server
#由於selinux的原因,redis-server啓動的時候不能訪問/usr/local/etc/redis/redis.conf
[root@Riped-MicroService-04 kygl]# docker logs redis-server
1:C 22 Sep 07:26:38.330 # Fatal error, can't open config file '/usr/local/etc/redis/redis.conf'
1:C 22 Sep 07:26:38.824 # Fatal error, can't open config file '/usr/local/etc/redis/redis.conf'
1:C 22 Sep 07:26:39.407 # Fatal error, can't open config file '/usr/local/etc/redis/redis.conf'
......
通過systemctl status -l docker.service
也可以看到以上錯誤。
數據卷映射加入:Z
:
通過docker rm -f redis-server
之上創建的容器,然後執行帶:Z
的啓動命令
,再次查看容器狀態:
[root@Riped-MicroService-04 kygl]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2b21841e768d redis:latest "docker-entrypoint.sh" 2 minutes ago Up 2 minutes 0.0.0.0:6379->6379/tcp redis-server
2.使用redis-cli訪問redis-server
- 在本地通過容器互聯
docker run -it \
--name redis-cli \
--rm \
--link redis-server:r-server \
redis:latest \
redis-cli -h r-server -p 6379 -a redis-67
-
--name redis-cli 容器名稱,可省略
-
--rm 容器退出後自動刪除當前容器
-
--link redis-server:r-server,連接之前啓動的名字爲
redis-server
的容器,並且設置別名爲r-server
-
遠程訪問
docker run -it \
--name redis-cli \
--rm \
redis:latest \
redis-cli -h 10.27.213.67 -p 6379 -a redis-67
和上述本地訪問基本一樣,在本地用這種方式也是同樣可以的。
网友评论