zoukankan      html  css  js  c++  java
  • Docker+Redis镜像的原理以及部署安装(超详解附截图)

    文章来源:公众号-智能化IT系统。

    一. DOCKER介绍

    Docker简介

    (1)Docker 是一个开源的应用容器引擎,基于 Go 语言,并遵从Apache2.0协议开源。

    (2)Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口,更重要的是容器性能开销极低。

    Docker 的优点

    (1)简化程序

    过去运维工程师部署生产环境时候需要用数天乃至数周的任务,在Docker容器的处理下,只需要数秒就能完成。同时Docker 让运维工程师可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,便可以实现虚拟化,Docker改变了虚拟化的方式。

    (2)简化部署

    Docker镜像中包含了运行环境和配置,所以 Docker 可以简化部署多种应用实例工作。比如 Web 应用、后台应用、数据库应用、大数据应用比如 Hadoop 集群、消息队列等等都可以打包成一个镜像部署。

    (3)节省开支

    云计算时代到来,使开发者不必为了追求效果而配置高额的硬件,Docker 改变了高性能必然高价格的思维定势。Docker 与云的结合,让云空间得到更充分的利用。不仅解决了硬件管理的问题,也改变了虚拟化的方式。


    二. NOSQL介绍

    NoSQL简介

    对于关系型数据库来说,是需要把数据存储到库、表、行、字段里,查询的时候根据条件一行一行地去匹配,当量非常大的时候就很耗费时间和资源,尤其是数据是需要从磁盘里去检索。

    NoSQL数据库存储原理非常简单,不存在繁杂的关系链,比如mysql查询的时候,需要找到对应的库、表(通常是多个表)以及字段。

    NOSQL有如下两点主要优势:

    (1)NoSQL数据可以存储在内存里,查询速度非常快。

    (2)NoSQL因为没有复杂的数据结构,扩展非常容易,能轻松实现分布式。

    常见的nosql数据库

    k-v型:memcached、redis,适合储存用户信息,比如会话、配置文件、参数、购物车等等。这些信息一般都和ID(键)挂钩,这种情景下键值数据库是个很好的选择。

    文档型:mongodb,将数据以文档的形式储存。每个文档都是一系列数据项的集合。每个数据项都有一个名称与对应的值,值既可以是简单的数据类型,如字符串、数字和日期等;也可以是复杂的类型,如有序列表和关联对象。数据存储的最小单位是文档,同一个表中存储的文档属性可以是不同的,数据可以使用XML、JSON或者JSONB等多种形式存储。


     三. Redis介绍

    Redis 简介

    Redis是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。

    Redis与其他 key - value 缓存产品有以下三个特点:

    (1)Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。

    (2)Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等多种数据结构的存储。

    (3)Redis支持数据的备份,即master-slave模式的数据备份。

    Redis 优势

    (1)性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。

    (2)丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets数据类型操作。

    (3)原子 – Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来。

    (4)丰富的特性 – Redis还支持 publish/subscribe, 通知, key 过期等等特性。


     四. Docker中自定义部署Redis

    部署redis镜像方法有多种,可以直接拉取官网redis镜像使用,也可根据自己需求自定义部署redis来制作镜像。下面介绍为自定义部署redis镜像。

    本案例中使用的环境:centos7.4+redis 4.0.2

    1、centos7.4配置固定IP

    #vi/etc/sysconfig/network-scripts/ifcfg-enp3s0

    2、下载doker源

    #Curl https://download.docker.com/linux/centos/docker-ce.repo -o  /etc/yum.repos.d/docker.repo

     (先下载一个docker源,因为yum list可以看出源自带的docker版本比较老。)

    3、部署安装docker(docker分了商业版和社区版,安装社区版。)

    #yumlist|grep docker  查看下有哪些可以安装的docker

    #yuminstall -y docker-ce

    也可以选择下载rpm包

    https://download.docker.com/linux/centos/7/x86_64/stable/Packages/

    下载完后yum安装

    #yuminstall -y docker-ce-xxxx.rpm

    4、安装完后启动docker,并且查看是否有docker进程。

    #systemctlstart docker.service

    #psaux|grep docker

    5、配置docker加速器,配置了加速器那你就可以国内拉取镜像,速度快。

    新增一个配置文件vi/etc/docker/daemon.json

    加入如下内容:

    {

      "registry-mirrors":["https://*********.mirror.aliyuncs.com"]

    }

    括号里的地址要去阿里云官网注册。配置完之后重启docker。

    6、拉取docker所需的官网centos镜像,(此镜像是精简版镜像)

    #dockerpull centos

    其中TAG 表示镜像标签,IMAGE ID表示镜像ID,CREATED表示创建的一个时间。

    7、把镜像把centos启动为容器,然后进入容器里安装gcc-c++编译环境、安装wget下载命令、安装net-tools、安装编译make。

    (1)#dockerrun –itd centos 

    (docker run -itd centos //把镜像启动为容器,-i表示让容器的标准输入打开,-t表示分配一个伪终端,-d表示后台启动,要把-i -t -d 放到镜像名字前面。用docker ps 查看当前运行的镜像)

    (2)#docker exec –it XXXX bin/bash  

    (其中xxx为容器ID)

    (3)#yum –y install wget

    (4)#yum –y install net-tools

    (5)#yum –y install gcc automake autoconflibtool make

    (6)#yum –y install gcc-c++ 

    8、上述安装完之后,开始部署安装redis 首先先下载redis版本(官方最新为4.0.9),实际使用4.0.2比较稳定。

    (1)# wget http://download.redis.io/releases/redis-4.0.2.tar.gz  

    (下载到/usr/local/src)

    (2)# cd /usr/local/src 

    (进入到src目录)

    (3)#tar -xzvf redis-4.0.2.tar.gz

    (解压tar包)

    (4)# cd /usr/local/src/redis-4.0.2 

    (进入解压包开始安装)

    (5)#cp redis.conf /etc/redis.conf   

    (拷贝配置文件到指定路径)

    (6)vim /etc/redis.conf   

    修改配置文件

    #bind 127.0.0.1             (注释这个,表示所有机器可以和redis交互)

    daemonizeyes              (后台守护进程运行)

    logfile "/var/log/redis.log"     (定义日志路径)

    dir/data/redis_data/         (定义数据持久化数据存放路径)

    timeout 600                 (修改超时时间)

    maxclients 50000             (修改最大链接数)

    requirepass *******          (修改auth密钥)

    (7)#mkdir /data/redis_data

           (因为没有此目录,所以要创建目录)

     #redis-server /etc/redis.conf 

    (启动redis)

    9、部署完reids后,保存为新的镜像。

    10、最后将此镜像启动为容器

    #docker run -itd -p 6379:6379 cnetos_with_redis bash

    其中-p为端口映射,意思就是将这个容器的6379端口映射到宿主机的6379端口,这样才能给局域网的其它设备连上redis服务。

    11、用redis管理工具来检验结果

      

    12、将镜像导出为文件,日后可以将此配置了redis的容器直接移植到其它服务器。

    # dockersave -o centos_with_redis.tar redis:vsofo


     五. docker私有仓库搭建

     因为自己的文件,所以不需要上传到公有仓库,需要搭建私有仓库。

    下载镜像并访问私有仓库

    1、下载一个镜像,registry

    #docker pull registry

    2、启动镜像,并且给宿主机和容器之间映射端口。

    #docker run -d -p 5000:5000 registry 

    左边的5000是宿主机,右边的5000是容器。

    3、访问私有仓镜像。

    #curl 127.0.0.1:5000/v2/_catalog

    上传一个镜像到私有仓库

    1、首先先要给你要上传到私有仓库的镜像打个标签

    #dockertag centos_with_redis 192.168.0.92:5000/ centos_with_redis

    例如给centos_with_redis打标签,打成ip+端口/标签名

    2、然后修改配置文件daemon.json。然后重启docker,启动registyr容器。编辑如下配置文件:

    #vi/etc/docker/daemon.json

    添加这行 { "insecure-registries":["192.168.0.92:5000"] }

    3、然后可以上传镜像了。

    #dockerpush 192.168.0.92:5000/centos_with_redis

    4、查看推送上来的镜像是否存在。

    #curl127.0.0.1:5000/v2/_catalog

    5、私有仓库的镜像,怎么拉取下来呢?

    (1)如果是本机宿主机,那么直接 docker pull 192.168.0.92:5000/centos_with_redis

    (2) 如果是局域网的其它机器,那么先安装docker,然后也要修改配置文件daemon.json,方法第二步一样操作。然后再去拉取。


    公众号-智能化IT系统。每周都有技术文章推送,包括原创技术干货,以及技术工作的心得分享。扫描下方关注。

  • 相关阅读:
    (算法)Hanoi Problem汉诺塔问题
    (剑指Offer)面试题48:不能被继承的类
    (剑指Offer)面试题47:不用加减乘除做加法
    (剑指Offer)面试题46:求1+2+3+....+n
    (剑指Offer)面试题45:圆圈中最后剩下的数字
    程序员应该知道的15件事 在生活与工作中用他们来警惕自己
    基于REST架构的Web Service设计
    互联网上五个最高级的搜索引擎
    哈佛经济学家关于工作效率的意外发现
    列举一些常见的系统系能瓶颈 Common Bottlenecks
  • 原文地址:https://www.cnblogs.com/xtary/p/9528023.html
Copyright © 2011-2022 走看看