docker 自动以安装 redis

来源:互联网 发布:centos改成中文 编辑:程序博客网 时间:2024/06/05 03:59

创建Dockerfile

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

runoob@runoob:~$ mkdir -p ~/redis ~/redis/data

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

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

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 redisRUN apt-get update && apt-get install -y --no-install-recommends \                ca-certificates \                wget \        && rm -rf /var/lib/apt/lists/*# grab gosu for easy step-down from rootENV GOSU_VERSION 1.7RUN set -x \        && wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$(dpkg --print-architecture)" \        && wget -O /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$(dpkg --print-architecture).asc" \        && export GNUPGHOME="$(mktemp -d)" \        && gpg --keyserver ha.pool.sks-keyservers.net --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4 \        && gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu \        && rm -r "$GNUPGHOME" /usr/local/bin/gosu.asc \        && chmod +x /usr/local/bin/gosu \        && gosu nobody trueENV REDIS_VERSION 3.2.0ENV REDIS_DOWNLOAD_URL http://download.redis.io/releases/redis-3.2.0.tar.gzENV REDIS_DOWNLOAD_SHA1 0c1820931094369c8cc19fc1be62f598bc5961ca# for redis-sentinel see: http://redis.io/topics/sentinelRUN buildDeps='gcc libc6-dev make' \        && set -x \        && apt-get update && apt-get install -y $buildDeps --no-install-recommends \        && rm -rf /var/lib/apt/lists/* \        && wget -O redis.tar.gz "$REDIS_DOWNLOAD_URL" \        && echo "$REDIS_DOWNLOAD_SHA1 *redis.tar.gz" | sha1sum -c - \        && mkdir -p /usr/src/redis \        && tar -xzf redis.tar.gz -C /usr/src/redis --strip-components=1 \        && rm redis.tar.gz \        && make -C /usr/src/redis \        && make -C /usr/src/redis install \        && rm -r /usr/src/redis \        && apt-get purge -y --auto-remove $buildDepsRUN mkdir /data && chown redis:redis /dataVOLUME /dataWORKDIR /dataCOPY docker-entrypoint.sh /usr/local/bin/ENTRYPOINT ["docker-entrypoint.sh"]EXPOSE 6379CMD [ "redis-server" ]

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

runoob@runoob:~/redis$ docker build  -t redis:3.2 .

创建完成后,我们可以在本地的镜像列表里查找到刚刚创建的镜像

runoob@runoob:~/redis$ docker images redis REPOSITORY          TAG                 IMAGE ID            CREATED             SIZEredis               3.2                 43c923d57784        2 weeks ago         193.9 MB
如果创建的镜像不存在 repostoty   和  tag 可使用命令

docker tag 43c923d57784 redis:3.2
配置sh脚本作为镜像的启动文件,
touch redis.sh(创建文件)vi redis.sh (编辑文件)将一下配置复制到redis.sh文件中
#!/bin/shCURDIR=`pwd`IMGDIR=/usr/srcNAME=hy-rediscase "$1" in        create)                volumn_map="-v $PWD/data:/data"                #env_map="-e XXX=yyy"port_map="-p 172.17.0.1:6379:6379"                docker run -it -d --name $NAME $port_map $volumn_map redis:3.2               ;;        delete)                docker rm $NAME                ;;        start)                docker start  $NAME ;;        stop)                docker stop  $NAME                ;;        status)                docker ps -a | grep  $NAME                ;;        restart)                docker restart  $NAME                ;;        redis-cli)                shift                docker exec -it  $NAME redis-cli                ;;        exec)                shift                docker exec -it  $NAME $*                ;;        *)                echo "Usage: $0 {start|stop|status|redis-cli|exec|restart}" exit 1        ;;esac
接下来就可以使用./redis.sh create  (创建镜像) ./redis.sh start (启动镜像)等
原创粉丝点击