方法一、通过 Dockerfile 构建

创建 Dockerfile
首先,创建目录redis,用于存放后面的相关东西。

  1. mkdir -p ~/redis ~/redis/data

data目录将映射为redis容器配置的/data目录,作为redis数据持久化的存储目录

进入创建的redis目录,创建Dockerfile

  1. FROM debian:jessie# add our user and group first to make sure their IDs get assigned consistently, regardless of whatever dependencies get addedRUN groupadd -r redis && useradd -r -g redis redis
  2. RUN apt-get update && apt-get install -y --no-install-recommends \
  3. ca-certificates \
  4. wget \ && rm -rf /var/lib/apt/lists/*
  5. # grab gosu for easy step-down from root
  6. ENV GOSU_VERSION 1.7
  7. RUN set -x \
  8. && wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$(dpkg --print-architecture)" \
  9. && wget -O /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$(dpkg --print-architecture).asc" \
  10. && export GNUPGHOME="$(mktemp -d)" \
  11. && gpg --keyserver ha.pool.sks-keyservers.net --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4 \
  12. && gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu \
  13. && rm -r "$GNUPGHOME" /usr/local/bin/gosu.asc \
  14. && chmod +x /usr/local/bin/gosu \
  15. && gosu nobody true
  16. ENV REDIS_VERSION 3.2.0
  17. ENV REDIS_DOWNLOAD_URL http://download.redis.io/releases/redis-3.2.0.tar.gz
  18. ENV REDIS_DOWNLOAD_SHA1 0c1820931094369c8cc19fc1be62f598bc5961ca
  19. # for redis-sentinel see: http://redis.io/topics/sentinel
  20. RUN buildDeps='gcc libc6-dev make' \
  21. && set -x \
  22. && apt-get update && apt-get install -y $buildDeps --no-install-recommends \
  23. && rm -rf /var/lib/apt/lists/* \
  24. && wget -O redis.tar.gz "$REDIS_DOWNLOAD_URL" \
  25. && echo "$REDIS_DOWNLOAD_SHA1 *redis.tar.gz" | sha1sum -c - \
  26. && mkdir -p /usr/src/redis \
  27. && tar -xzf redis.tar.gz -C /usr/src/redis --strip-components=1 \
  28. && rm redis.tar.gz \
  29. && make -C /usr/src/redis \
  30. && make -C /usr/src/redis install \
  31. && rm -r /usr/src/redis \
  32. && apt-get purge -y --auto-remove $buildDeps
  33. RUN mkdir /data && chown redis:redis /data
  34. VOLUME /data
  35. WORKDIR /data
  36. COPY docker-entrypoint.sh /usr/local/bin/
  37. ENTRYPOINT ["docker-entrypoint.sh"]
  38. EXPOSE 6379
  39. CMD [ "redis-server" ]

通过Dockerfile 创建一个镜像,替换成自己的名字

  1. docker build -t redis:3.2 .

创建完成后,可在本地的镜像列表中查找刚创建的镜像

  1. docker images redis

方式二、docker pull redis:3.2

查找Docker Hub上的redis镜像

  1. docker search redis

这里拉取官方的镜像,标签为3.2

  1. docker pull redis:3.2

等待下载完成后,我们就可以在本地镜像列表里查到REPOSITORY为redis,标签为3.2的镜像。

使用redis镜像

运行容器

  1. docker run -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持久化配置

查看容器启动情况

  1. docker ps

连接、查看容器

使用redis镜像执行redis-cli命令连接到刚启动的容器,主机IP为172.17.0.1

  1. docker run -it redis:3.2 redis-cli -h 172.17.0.1172.17.0.1:6379> info