Discuz! Board

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1777|回复: 0
打印 上一主题 下一主题

Docker 安装 Redis

[复制链接]

697

主题

1142

帖子

4086

积分

认证用户组

Rank: 5Rank: 5

积分
4086
跳转到指定楼层
楼主
发表于 2017-12-27 13:57:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 java 于 2017-12-27 15:00 编辑

http://www.runoob.com/docker/docker-install-redis.html
通过 Dockerfile 构建
创建Dockerfile
首先,创建目录redis,用于存放后面的相关东西。
  1. runoob@runoob:~$ mkdir -p ~/redis ~/redis/data
复制代码
data目录将映射为redis容器配置的/data目录,作为redis数据持久化的存储目录
进入创建的redis目录,创建Dockerfile
  1. FROM debian:jessie

  2. # add our user and group first to make sure their IDs get assigned consistently, regardless of whatever dependencies get added
  3. RUN groupadd -r redis && useradd -r -g redis redis

  4. RUN apt-get update && apt-get install -y --no-install-recommends \
  5.                 ca-certificates \
  6.                 wget \
  7.         && rm -rf /var/lib/apt/lists/*

  8. # grab gosu for easy step-down from root
  9. ENV GOSU_VERSION 1.7
  10. RUN set -x \
  11.         && wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$(dpkg --print-architecture)" \
  12.         && wget -O /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$(dpkg --print-architecture).asc" \
  13.         && export GNUPGHOME="$(mktemp -d)" \
  14.         && gpg --keyserver ha.pool.sks-keyservers.net --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4 \
  15.         && gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu \
  16.         && rm -r "$GNUPGHOME" /usr/local/bin/gosu.asc \
  17.         && chmod +x /usr/local/bin/gosu \
  18.         && gosu nobody true

  19. ENV REDIS_VERSION 3.2.0
  20. ENV REDIS_DOWNLOAD_URL [url]http://download.redis.io/releases/redis-3.2.0.tar.gz[/url]
  21. ENV REDIS_DOWNLOAD_SHA1 0c1820931094369c8cdocker: Error response from daemon: oci runtime error: container_linux.go:247: starting container process caused "exec: \"docker-entrypoint.sh\": executable file not found in $PATH".c19fc1be62f598bc5961ca

  22. # for redis-sentinel see: [url]http://redis.io/topics/sentinel[/url]
  23. RUN buildDeps='gcc libc6-dev make' \
  24.         && set -x \
  25.         && apt-get update && apt-get install -y $buildDeps --no-install-recommends \
  26.         && rm -rf /var/lib/apt/lists/* \
  27.         && wget -O redis.tar.gz "$REDIS_DOWNLOAD_URL" \
  28.         && echo "$REDIS_DOWNLOAD_SHA1 *redis.tar.gz" | sha1sum -c - \
  29.         && mkdir -p /usr/src/redis \
  30.         && tar -xzf redis.tar.gz -C /usr/src/redis --strip-components=1 \
  31.         && rm redis.tar.gz \
  32.         && make -C /usr/src/redis \
  33.         && make -C /usr/src/redis install \
  34.         && rm -r /usr/src/redis \
  35.         && apt-get purge -y --auto-remove $buildDeps

  36. RUN mkdir /data && chown redis:redis /data
  37. VOLUME /data
  38. WORKDIR /data

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

  41. EXPOSE 6379
  42. CMD [ "redis-server" ]
复制代码
docker-entrypoint.sh 内容
  1. #!/bin/sh
  2. set -e

  3. # first arg is `-f` or `--some-option`
  4. # or first arg is `something.conf`
  5. if [ "${1#-}" != "$1" ] || [ "${1%.conf}" != "$1" ]; then
  6.         set -- redis-server "$@"
  7. fi

  8. # allow the container to be started with `--user`
  9. if [ "$1" = 'redis-server' -a "$(id -u)" = '0' ]; then
  10.         chown -R redis .
  11.         exec gosu redis "$0" "$@"
  12. fi

  13. exec "$@"
复制代码
更多内容参考:

https://github.com/docker-librar ... 342a2fc00644c4f/3.2

通过Dockerfile创建一个镜像,替换成你自己的名字
  1. runoob@runoob:~/redis$ docker build  -t redis:3.2 .
复制代码
创建完成后,我们可以在本地的镜像列表里查找到刚刚创建的镜像
  1. runoob@runoob:~/redis$ docker images redis
  2. REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
  3. redis               3.2                 43c923d57784        2 weeks ago         193.9 MB
复制代码
使用redis镜像运行容器
  1. runoob@runoob:~/redis$ docker run --name redis  -p 6379:6379 -v $PWD/data:/data  -d redis:3.2 redis-server --appendonly yes
复制代码
命令说明:
-p 6379:6379 :将容器的6379端口映射到主机的6379端口
-v $PWD/data:/data :将主机中当前目录下的data挂载到容器的/data
redis-server --appendonly yes :在容器执行redis-server启动命令,并打开redis持久化配置

出现如下错误:
docker: Error response from daemon: oci runtime error: container_linux.go:247: starting container process caused "exec: \"docker-entrypoint.sh\": executable file not found in $PATH".
在COPY后加上下面一句话:
  1. RUN chmod +x /usr/local/bin/docker-entrypoint.sh
复制代码

验证:
进入docker容器
docker exec -it redis bash
登录本机redis
~ redis-cli
redis 127.0.0.1:6379>
设置 一个键值
127.0.0.1:6379> set key1 "tutut"
OK
127.0.0.1:6379> get key1
"tutut"

远程连接 测试
redis-cli -h 192.168.134.106 -p 6379

192.168.134.106:6379> get key1
"tutut"

exit退出
测试 连接 成功!


连接、查看容器
使用redis镜像执行redis-cli命令连接到刚启动的容器,主机IP为172.17.0.1
  1. runoob@runoob:~/redis$ docker run -it redis:3.2 redis-cli -h 172.17.0.1
  2. 172.17.0.1:6379> info
  3. # Server
  4. redis_version:3.2.0
  5. redis_git_sha1:00000000
  6. redis_git_dirty:0
  7. redis_build_id:f449541256e7d446
  8. redis_mode:standalone
  9. os:Linux 4.2.0-16-generic x86_64
  10. arch_bits:64
  11. multiplexing_api:epoll
  12. ...
复制代码

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|firemail ( 粤ICP备15085507号-1 )

GMT+8, 2024-4-29 10:32 , Processed in 0.055935 second(s), 19 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

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