Dockerfile构建Redis镜像
建立工作目录
[root@localhost ~]# mkdir redis
[root@localhost ~]# cd redis/
编写Dockerfile文件
[root@localhost redis]# vim Dockerfile
FROM centos:7
MAINTAINER dddd <dddd@163.com>
RUN yum -y install epel-release && yum -y install redis
RUN sed -i -e 's@bind 127.0.0.1@bind 0.0.0.0@g' /etc/redis.conf
RUN sed -i -e 's@protected-mode yes@protected-mode no@g' /etc/redis.conf
RUN echo "requirepass 123456" >> /etc/redis.conf
#RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 如果构建镜像报错可以试试把设置时区注释
EXPOSE 6379
CMD [ "/usr/bin/redis-server","/etc/redis.conf"]
FROM centos:7
:基于 CentOS 7 镜像构建容器。MAINTAINER dddd <dddd@163.com>
:指定作者和联系方式,但这在 Dockerfile 中已经不再推荐使用。RUN yum -y install epel-release && yum -y install redis
:安装 epel-release 仓库并通过 yum 安装 Redis。RUN sed -i -e 's@bind 127.0.0.1@bind 0.0.0.0@g' /etc/redis.conf
:将 Redis 配置文件中的绑定地址从 127.0.0.1 修改为 0.0.0.0,以允许外部访问。RUN sed -i -e 's@protected-mode yes@protected-mode no@g' /etc/redis.conf
:将 Redis 配置文件中的保护模式设置从 "yes" 修改为 "no",以允许外部访问。RUN echo "requirepass 123456" >> /etc/redis.conf
:在 Redis 配置文件末尾添加一行,设置密码为 "123456",以增加安全性。#RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
:注释掉的一行代码,原本用于设置时区为上海。EXPOSE 6379
:声明容器将监听的端口号为 6379,以便外部访问。CMD [ "/usr/bin/redis-server","/etc/redis.conf"]
:指定容器启动时要执行的命令,即运行 Redis 服务器并指定配置文件为 /etc/redis.conf。
开始构建镜像
[root@localhost redis]# docker build -t redis:new .
Sending build context to Docker daemon 2.048 kB
Step 1/9 : FROM centos:7
---> 74d9a3a7d55d
Step 2/9 : MAINTAINER dddd <dddd@163.com>
---> Using cache
---> 59011c98ef4e
Step 3/9 : RUN yum -y install epel-release && yum -y install redis
---> Using cache
---> 63ef1aba6db8
Step 4/9 : RUN sed -i -e 's@bind 127.0.0.1@bind 0.0.0.0@g' /etc/redis.conf
---> Using cache
---> 96b999c6b66a
Step 5/9 : RUN sed -i -e 's@protected-mode yes@protexted-mode no@g' /etc/redis.conf
---> Using cache
---> 3f90be33dd18
Step 6/9 : RUN echo "requirepass 123456" >> /etc/redis.conf
---> Using cache
---> 3da1345a7dea
Step 7/9 : RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
---> Running in 0ec226d6d98b
---> 76a9a29fdf78
Removing intermediate container 0ec226d6d98b
Step 8/9 : EXPOSE 6379
---> Running in 894f0be2bcb3
---> 70b6fb7cc6c9
Removing intermediate container 894f0be2bcb3
Step 9/9 : CMD /usr/bin/redis-server /etc/localtime
---> Running in f02aff397be4
---> aad25b2bc7e3
Removing intermediate container f02aff397be4
Successfully built aad25b2bc7e3
查看
[root@localhost redis]# docker images redis
REPOSITORY TAG IMAGE ID CREATED SIZE
redis new aad25b2bc7e3 42 seconds ago 851 MB
测试容器开始
[root@localhost redis]# docker run -d -p 6379:6379 --name=redis redis:new
02a84355cb28753f481df93341ac9758f78d41e35dc3f8145871573435e82916
查看
[root@localhost redis]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
redis new aad25b2bc7e3 6 minutes ago 851 MB
如果源是新的就不用
[root@localhost ~]# ll
-rw-r--r--. 1 root root 15080 7月 17 2020 epel-release-latest-7.noarch.rpm
[root@localhost ~]# rpm -ivh /root/epel-release-latest-7.noarch.rpm
准备中... ################################# [100%]
软件包 epel-release-7-14.noarch (比 epel-release-7-11.noarch 还要新) 已经安装
file /etc/yum.repos.d/epel-testing.repo from install of epel-release-7-11.noarch conflicts with file from package epel-release-7-14.noarch
file /etc/yum.repos.d/epel.repo from install of epel-release-7-11.noarch conflicts with file from package epel-release-7-14.noarch
file /usr/lib/systemd/system-preset/90-epel.preset from install of epel-release-7-11.noarch conflicts with file from package epel-release-7-14.noarch
本地没有 下载测试
[root@localhost redis]# yum -y install redis
登陆成功
[root@localhost redis]# redis-cli -h localhost -a 123456
localhost:6379> ping
PONGlocalhost:6379>