docker安装redis并配置外网可访问和密码

docker安装redis并配置外网可访问和密码 基于Dockerfile的方式

  1. 本人对docker的理解是docker是一个服务器部署的容器,在某种程度上类似于Java的Maven,我们可以在这个容器中以镜像的形式安装很多服务,现在我来演示下安装redis,安装方式基本有两种,一种是pull的方式,一种是Dockerfile的方式,由于pull的方式pull下来后还需配置许多东西且不便于复用,个人比较喜欢使用Dockerfile的方式

  2. 所有docker支持的镜像基本都在https://hub.docker.com/
    docker的官网上能找到合适版本的Dockerfile
    在这里插入图片描述

首先mkdir新建redis文件夹

mkdir redis

在这里插入图片描述
然后cd进redis文件夹, vim Dockerfile,然后把复制的Dockerfile内容粘贴进去

cd redis
vim Dockerfile

在这里插入图片描述
Dockerfile的内容为(在官网上也能找到你要的redis的版本的Dockerfile,我这里是redis5.0.5的版本)

FROM alpine:3.9

# add our user and group first to make sure their IDs get assigned consistently, regardless of whatever dependencies get added
RUN addgroup -S redis && adduser -S -G redis redis

RUN apk add --no-cache \
# grab su-exec for easy step-down from root
		'su-exec>=0.2' \
# add tzdata for https://github.com/docker-library/redis/issues/138
		tzdata

ENV REDIS_VERSION 5.0.5
ENV REDIS_DOWNLOAD_URL http://download.redis.io/releases/redis-5.0.5.tar.gz
ENV REDIS_DOWNLOAD_SHA 2139009799d21d8ff94fc40b7f36ac46699b9e1254086299f8d3b223ca54a375

# for redis-sentinel see: http://redis.io/topics/sentinel
RUN set -ex; \
	\
	apk add --no-cache --virtual .build-deps \
		coreutils \
		gcc \
		linux-headers \
		make \
		musl-dev \
	; \
	\
	wget -O redis.tar.gz "$REDIS_DOWNLOAD_URL"; \
	echo "$REDIS_DOWNLOAD_SHA *redis.tar.gz" | sha256sum -c -; \
	mkdir -p /usr/src/redis; \
	tar -xzf redis.tar.gz -C /usr/src/redis --strip-components=1; \
	rm redis.tar.gz; \
	\
# disable Redis protected mode [1] as it is unnecessary in context of Docker
# (ports are not automatically exposed when running inside Docker, but rather explicitly by specifying -p / -P)
# [1]: https://github.com/antirez/redis/commit/edd4d555df57dc84265fdfb4ef59a4678832f6da
	grep -q '^#define CONFIG_DEFAULT_PROTECTED_MODE 1$' /usr/src/redis/src/server.h; \
	sed -ri 's!^(#define CONFIG_DEFAULT_PROTECTED_MODE) 1$!\1 0!' /usr/src/redis/src/server.h; \
	grep -q '^#define CONFIG_DEFAULT_PROTECTED_MODE 0$' /usr/src/redis/src/server.h; \
# for future reference, we modify this directly in the source instead of just supplying a default configuration flag because apparently "if you specify any argument to redis-server, [it assumes] you are going to specify everything"
# see also https://github.com/docker-library/redis/issues/4#issuecomment-50780840
# (more exactly, this makes sure the default behavior of "save on SIGTERM" stays functional by default)
	\
	make -C /usr/src/redis -j "$(nproc)"; \
	make -C /usr/src/redis install; \
	\
	rm -r /usr/src/redis; \
	\
	runDeps="$( \
		scanelf --needed --nobanner --format '%n#p' --recursive /usr/local \
			| tr ',' '\n' \
			| sort -u \
			| awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }' \
	)"; \
	apk add --virtual .redis-rundeps $runDeps; \
	apk del .build-deps; \
	\
	redis-server --version

RUN mkdir /data && chown redis:redis /data
VOLUME /data
WORKDIR /data

COPY docker-entrypoint.sh /usr/local/bin/
ENTRYPOINT ["docker-entrypoint.sh"]

EXPOSE 6379
CMD ["redis-server"]

然后按下Esc键 :wq保存

:wq

mkdir data新建data文件夹

mkdir data

配置文件:从网上下载一个Linux对应版本的redis的redis.conf ,http://download.redis.io/releases/

配置外网可访问和密码:
修改redis.conf的三个地方

bind 127.0.0.1

protected-mode yes

#requirepass foobared

修改为
#bind 127.0.0.1

protected-mode no

requirepass password

password为你的密码

在这里插入图片描述

sudo docker build -t redis .

在这里插入图片描述

sudo docker run -d --privileged=true -p 6379:6379 -v /home/mhyj_dev/redis/redis.conf:/etc/redis/redis.conf -v /home/mhyj_dev/redis/data:/data --name redis redis:5.0.5 redis-server /etc/redis/redis.conf --appendonly yes

在这里插入图片描述
1.说明:

  • –name redis :指定容器名称
  • -p 6379:6379 :端口映射,默认redis启动的是6379
  • -v /home/mhyj_dev/redis/redis.conf:/etc/redis/redis.conf :将宿主机目录/home/mhyj_dev/redis/redis.conf文件挂载到容器 的/etc/redis/redis.conf
  • -v /home/mhyj_dev/redis/data:/data :将宿主机目录/home/mhyj_dev/redis/data挂载到容器的/data
  • redis-server /etc/redis/redis.conf --appendonly yes :在容器执行redis-server启动命令,并打开redis持久化配置

如果顺利,你现在已经安装成功了,你可以sudo docker ps -a查看自己安装的redis进程,sudo docker images查看镜像列表可以看到你自己装的redis镜像

sudo docker ps -a

在这里插入图片描述

sudo docker images

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值