设为首页 收藏本站
查看: 809|回复: 0

[经验分享] Docker利用 Dockerfile构建 redis3.2.9

[复制链接]

尚未签到

发表于 2018-11-3 07:37:23 | 显示全部楼层 |阅读模式
  获取redis
  root@debian1:~/redis#:docker pull hanye131/redis:3.2.9
  启动redis
  使用方法:
  docker run --name redis -d --privileged -p 6379:637 hanye131/redis3.2.9
  --privileged参数是必须要的,因为启动redis服务的时候需要修改系统内核参数,如果不加在修改内核参数的时候会提示这是只读文件的错误
  持久化存储:
  docker run --name redis-server --privileged -p 6379:6379 -d hanye131/redis3.2.9 --appendonlyyes
  如果想存在宿主机的存储上可以使用-v来挂载目录
  docker run --name redis-server --privileged -p 6379:6379 -v/data/redis:/data-d hanye131/redis:3.2.9 --appendonlyyes
  查看启动日志

  链接查看

  Dockerfile
  FROM kriation/centos7
  MAINTAINER hanye131 hz7726@163.com
  ENV REDIS_VERSION=3.2.9
  ENV REDIS_DOWNLOAD_URL=http://download.redis.io/releases/redis-${REDIS_VERSION}.tar.gz \
  REDIS_DOWNLOAD_SHA1=26c0fc282369121b4e278523fce122910b65fbbf
  RUN \
  REDIS_FILE=${REDIS_DOWNLOAD_URL##*/} && \
  mkdir/tmp/redis&& \
  cd/tmp/redis&& \
  curl -Lk"$REDIS_DOWNLOAD_URL"-o ${REDIS_DOWNLOAD_URL##*/} && \
  tarxf ${REDIS_DOWNLOAD_URL##*/} && \
  cd${REDIS_FILE%.tar*} && \
  yum install -y http://cbs.centos.org/kojifiles/packages/jemalloc/3.6.0/1.el7/x86_64/jemalloc-3.6.0-1.el7.x86_64.rpm \
  #http://cbs.centos.org/kojifiles/packages/jemalloc/3.6.0/1.el7/x86_64/jemalloc-devel-3.6.0-1.el7.x86_64.rpm && \
  yuminstalljemalloc-devel  epel* make gcc gcc-c++ -y && \
  make-j $(awk'/processor/{i++}END{print i}'/proc/cpuinfo) && \
  mkdir-p/usr/local/redis/{bin,etc,var} && \
  cp-af src/{redis-benchmark,redis-check-aof,redis-check-rdb,redis-cli,redis-sentinel,redis-server}/usr/local/redis/bin/&& \
  cp-a redis.conf/usr/local/redis/etc/&& \
  echo"export PATH=/usr/local/redis/bin:\$PATH">/etc/profile.d/redis.sh && \
  source/etc/profile.d/redis.sh && \
  useradd-r -s/sbin/nologin-c"Redis Server"-d/data-m -k no redis && \
  #chmod +x /usr/local/redis/bin/entrypoint.sh && \
  yum clean all && \
  rm-rf/tmp/redis
  COPY entrypoint.sh/usr/local/redis/bin/entrypoint.sh
  RUNchmod+x/usr/local/redis/bin/entrypoint.sh
  VOLUME ["/data"]
  WORKDIR/data
  EXPOSE 6379/tcp
  ENTRYPOINT ["/usr/local/redis/bin/entrypoint.sh"]
  CMD ["redis-server"]
  entrypoint.sh 脚本
  #!/bin/bash
  #########################################################################
  # File Name: entrypoint.sh
  # Author: hanye131
  # Email: hanye131
  # Version:
  # Created Time: 20170706
  #########################################################################
  if!whichredis-server >/dev/null2>&1;thensource/etc/profile.d/redis.sh;fi
  set-e
  sysctl -w net.core.somaxconn=1024 >/dev/null2>&1
  sysctl -w vm.overcommit_memory=1 >/dev/null2>&1
  echonever >/sys/kernel/mm/transparent_hugepage/enabled
  echonever >/sys/kernel/mm/transparent_hugepage/defrag
  # first arg is `-f` or `--some-option`
  # or first arg is `something.conf`
  if["${1#-}"!="$1"] || ["${1%.conf}"!="$1"];then
  set-- redis-server"$@"
  fi
  # allow the container to be started with `--user`
  if["$1"='redis-server'-a"$(id -u)"='0'];then
  chown-R redis .
  #exec gosu redis "$0" "$@"
  fi
  if["$1"='redis-server'];then
  # Disable Redis protected mode [1] as it is unnecessary in context
  # of Docker. Ports are not automatically exposed when running inside
  # Docker, but rather explicitely by specifying -p / -P.
  # [1] https://github.com/antirez/redis/commit/edd4d555df57dc84265fdfb4ef59a4678832f6da
  doProtectedMode=1
  configFile=
  if[ -f"$2"];then
  configFile="$2"
  ifgrep-q'^protected-mode'"$configFile";then
  # if a config file is supplied and explicitly specifies "protected-mode", let it win
  doProtectedMode=
  fi
  fi
  if["$doProtectedMode"];then
  shift# "redis-server"
  if["$configFile"];then
  shift
  fi
  set-- --protected-mode no"$@"
  if["$configFile"];then
  set--"$configFile""$@"
  fi
  set-- redis-server"$@"# redis-server [config file] --protected-mode no [other options]
  # if this is supplied again, the "latest" wins, so "--protected-mode no --protected-mode yes" will result in an enabled status
  fi
  fi
  exec"$@"
  生成docker容器
  root@debian1:~/redis# docker build -t redis3_2 ./
  启动
  docker run --name redis-server --privileged -p 6379:6379 -v /data/redis:/data -d redis3_2 --appendonly yes
  查看启动服务
  root@debian1:~/redis# docker ps -a

  CONTAINER>  f9ebf9483499        hanye131/redis:3.2.9   "/usr/local/redis/..."   8 minutes ago       Up 8 minutes                0.0.0.0:6379->6379/tcp   hanye131redis
  我的上述的Dockerfile和entryp1oint.sh  是拉去的https://www.dwhd.org/20160630_210758.html


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-630009-1-1.html 上篇帖子: 解决 php的session无法保存到redis-Linux架构师之路&DBA-51CTO博客 下篇帖子: ELK+redis管理mysql-slow和nginx的access日志
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表