精华内容
下载资源
问答
  • Linux Minio服务器部署(无容器

    千次阅读 2021-01-25 09:57:47
    附件微服务多节点分布式部署实现 问题描述: 分布式存储,很关键的点在于数据的可靠性,即保证数据的完整,不丢失,不损坏。只有在可靠性实现的前提下,才有了追求一致性、高可用、高性能的基础。而对于在存储领域,...

    项目场景:

    附件微服务多节点分布式部署实现

    问题描述:

    分布式存储,很关键的点在于数据的可靠性,即保证数据的完整,不丢失,不损坏。只有在可靠性实现的前提下,才有了追求一致性、高可用、高性能的基础。而对于在存储领域,一般对于保证数据可靠性的方法主要有两类,一类是冗余法,一类是校验法。好在这些问题已经有相关中间件给我们解决了。Minio就是这样的一个中间件,同类型的还有FastDfs等。但是FastDfs部署较为复杂,所以我采用的Minio。

    MinIO 是一个基于Apache License v2.0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等。

    MinIO是一个非常轻量的服务,可以很简单的和其他应用的结合,类似 NodeJS, Redis 或者 MySQL。

    冗余
    冗余法最简单直接,即对存储的数据进行副本备份,当数据出现丢失,损坏,即可使用备份内容进行恢复,而副本 备份的多少,决定了数据可靠性的高低。这其中会有成本的考量,副本数据越多,数据越可靠,但需要的设备就越多,成本就越高。可靠性是允许丢失其中一份数据。当前已有很多分布式系统是采用此种方式实现,如Hadoop 的文件系统(3个副本),Redis 的集群,MySQL 的主备模式等。

    校验
    校验法即通过校验码的数学计算的方式,对出现丢失、损坏的数据进行校验、还原。注意,这里有两个作用,一个校验,通过对数据进行校验和( checksum )进行计算,可以检查数据是否完整,有无损坏或更改,在数据传输和保存时经常用到,如 TCP协议;二是恢复还原,通过对数据结合校验码,通过数学计算,还原丢失或损坏的数据,可以在保证数据可靠的前提下,降低冗余,如单机硬盘存储中的 RAID 技术,纠删码(Erasure Code)技术等。MinIO 采用的就是纠删码技术。


    Linux Minio服务器部署:

    1、下载minio服务

    minio

    2、前期准备

    minio分布式部署最少要求4个存储,资源限制,我采用了两台服务器双盘存储。

    服务器:172.-.-.252,172.-.-.126

    1、创建存储空间:

    # 172.*.*.252
    mkdir data
    cd data 
    mkdir export1
    mkdir export2
    
    # 172.*.*.126
    mkdir data
    cd data 
    mkdir export3
    mkdir export4
    

    这样两台服务器的附件对象存储位置就设置好了。

    2、 服务处理:分别上传下载好的服务到 /usr/local/minio/bin,并添加执行权限

    cd /usr/local/minio/bin
    # 添加执行权限
    chmod +x minio
    

    3、服务启动

    分别在两台服务器上启动服务。当第一台服务器启动时,日志会打印寻找另一台服务器的日志,此时只要启动第二台服务器后,两个节点相互找到后就启动成功啦。

    cd /usr/local/minio/bin
    # 设置用户名密码,两台服务器需要一致
    export MINIO_ACCESS_KEY=admin
    export MINIO_SECRET_KEY=admin123
    # 直接启动
    ./minio server http://172.*.*.252/data/export1 http://172.*.*.252/data/export2 http://172.*.*.126/data/export3 http://172.*.*.126/data/export4
    # 后台启动
    nohup ./minio server http://172.*.*.252/data/export1 http://172.*.*.252/data/export2 http://172.*.*.126/data/export3 http://172.*.*.126/data/export4 &
    

    在这里插入图片描述

    4、服务验证

    服务端验证:

    ps -ef|grep minio
    

    在这里插入图片描述
    客户端验证:
    浏览器查看:http://172.-.-.252:9000/,直接在浏览器上上传下载进行测试
    在这里插入图片描述

    5、存储形式

    文件对象上传到 MinIO ,会在对应的数据存储磁盘中,以 Bucket 名称为目录,文件名称为下一级目录,文件名称下是 part.1 和 xl.json,前者是编码数据块及检验块,后者是元数据文件。如有4个磁盘,当文件上传后,会有2个编码数据块,2个检验块,分别存储在4个磁盘中。如下图,bg-01.jpg 是上传的文件对象:

    在这里插入图片描述

    6、nginx 负载均衡

    前面单独对每个节点进行访问显然不合理,通过使用 nginx 代理,进行负载均衡则很有必要。简单的配置如下:

    upstream http_minio {
        server 172.-.-.252:9000;
        server 172.-.-.126:9000;
    }
    
    server{
        listen       8991;
        server_name  localhost;
    
        ignore_invalid_headers off;
        client_max_body_size 0;
        proxy_buffering off;
    
        location / {
            proxy_set_header   X-Real-IP $remote_addr;
            proxy_set_header   X-Forwarded-Host  $host:$server_port;
            proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header   X-Forwarded-Proto  $http_x_forwarded_proto;
            proxy_set_header   Host $http_host;
    
            proxy_connect_timeout 300;
            proxy_http_version 1.1;
            chunked_transfer_encoding off;
            proxy_ignore_client_abort on;
    
            proxy_pass http://http_minio;
        }
    }
    

    其中主要是 upstream 及 proxy_pass 的配置。如此,即可使用http://${MINIO_HOST}:8888 进行访问。

    参考:
    https://docs.min.io/cn/
    https://my.oschina.net/mianshenglee/blog/4259970

    展开全文
  • mall在Linux环境下的部署(基于Docker容器)本文主要以图文的形式讲解mall在Linux环境下的部署,涉及在Docker容器中安装Mysql、Redis、Ng...

    mall在Linux环境下的部署(基于Docker容器)

    本文主要以图文的形式讲解mall在Linux环境下的部署,涉及在Docker容器中安装Mysql、Redis、Nginx、RabbitMQ、Elasticsearch、Mongodb,以及SpringBoot应用部署,基于CenterOS7.6。

    Docker环境安装

    • 安装yum-utils:

    yum install -y yum-utils device-mapper-persistent-data lvm2
    • 为yum源添加docker仓库位置:

    yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
    • 安装docker:

    yum install docker-ce
    • 启动docker:

    systemctl start docker

    Mysql安装

    • 下载mysql5.7的docker镜像:

    docker pull mysql:5.7
    • 使用docker命令启动:

    docker run -p 3306:3306 --name mysql \	
    -v /mydata/mysql/log:/var/log/mysql \	
    -v /mydata/mysql/data:/var/lib/mysql \	
    -v /mydata/mysql/conf:/etc/mysql \	
    -e MYSQL_ROOT_PASSWORD=root  \	
    -d mysql:5.7
    • 参数说明

      • -p 3306:3306:将容器的3306端口映射到主机的3306端口

      • -v /mydata/mysql/conf:/etc/mysql:将配置文件夹挂在到主机

      • -v /mydata/mysql/log:/var/log/mysql:将日志文件夹挂载到主机

      • -v /mydata/mysql/data:/var/lib/mysql/:将数据文件夹挂载到主机

      • -e MYSQLROOTPASSWORD=root:初始化root用户的密码

    • 进入运行mysql的docker容器:

    docker exec -it mysql /bin/bash
    • 使用mysql命令打开客户端:

    mysql -uroot -proot --default-character-set=utf8
    • 创建mall数据库:

    create database mall character set utf8
    • 安装上传下载插件,并将docment/sql/mall.sql上传到Linux服务器上:

    yum -y install lrzsz
    • 将mall.sql文件拷贝到mysql容器的/目录下:

    docker cp /mydata/mall.sql mysql:/
    • 将sql文件导入到数据库:

    use mall;	
    source /mall.sql;
    • 创建一个reader帐号并修改权限,使得任何ip都能访问:

    grant all privileges on *.* to 'reader' @'%' identified by '123456';

    Redis安装

    • 下载redis3.2的docker镜像:

    docker pull redis:3.2
    • 使用docker命令启动:

    docker run -p 6379:6379 --name redis \	
    -v /mydata/redis/data:/data \	
    -d redis:3.2 redis-server --appendonly yes
    • 进入redis容器使用redis-cli命令进行连接:

    docker exec -it redis redis-cli

    640?wx_fmt=png

    Nginx安装

    下载nginx1.10的docker镜像:

    docker pull nginx:1.10

    从容器中拷贝nginx配置

    • 先运行一次容器(为了拷贝配置文件):

    docker run -p 80:80 --name nginx \	
    -v /mydata/nginx/html:/usr/share/nginx/html \	
    -v /mydata/nginx/logs:/var/log/nginx  \	
    -d nginx:1.10
    • 将容器内的配置文件拷贝到指定目录:

    docker container cp nginx:/etc/nginx /mydata/nginx/
    • 修改文件名称:

    mv nginx conf
    • 终止并删除容器:

    docker stop nginx	
    docker rm nginx

    使用docker命令启动:

    docker run -p 80:80 --name nginx \	
    -v /mydata/nginx/html:/usr/share/nginx/html \	
    -v /mydata/nginx/logs:/var/log/nginx  \	
    -v /mydata/nginx/conf:/etc/nginx \	
    -d nginx:1.10

    RabbitMQ安装

    • 下载rabbitmq3.7.15的docker镜像:

    docker pull rabbitmq:3.7.15
    • 使用docker命令启动:

    docker run -d --name rabbitmq \	
    --publish 5671:5671 --publish 5672:5672 --publish 4369:4369 \	
    --publish 25672:25672 --publish 15671:15671 --publish 15672:15672 \	
    rabbitmq:3.7.15
    • 进入容器并开启管理功能:

    docker exec -it rabbitmq /bin/bash	
    rabbitmq-plugins enable rabbitmq_management

    640?wx_fmt=png

    • 开启防火墙:

    firewall-cmd --zone=public --add-port=15672/tcp --permanent	
    firewall-cmd --reload
    • 访问地址查看是否安装成功:http://192.168.3.101:15672/ 640?wx_fmt=png

    • 输入账号密码并登录:guest guest

    • 创建帐号并设置其角色为管理员:mall mall 640?wx_fmt=png

    • 创建一个新的虚拟host为:/mall 640?wx_fmt=png

    • 点击mall用户进入用户配置页面 640?wx_fmt=png

    • 给mall用户配置该虚拟host的权限 640?wx_fmt=png

    Elasticsearch安装

    • 下载elasticsearch6.4.0的docker镜像:

    docker pull elasticsearch:6.4.0
    • 修改虚拟内存区域大小,否则会因为过小而无法启动:

    sysctl -w vm.max_map_count=262144
    • 使用docker命令启动:

    docker run -p 9200:9200 -p 9300:9300 --name elasticsearch \	
    -e "discovery.type=single-node" \	
    -e "cluster.name=elasticsearch" \	
    -v /mydata/elasticsearch/plugins:/usr/share/elasticsearch/plugins \	
    -v /mydata/elasticsearch/data:/usr/share/elasticsearch/data \	
    -d elasticsearch:6.4.0
    • 启动时会发现/usr/share/elasticsearch/data目录没有访问权限,只需要修改/mydata/elasticsearch/data目录的权限,再重新启动。

    chmod 777 /mydata/elasticsearch/data/
    • 安装中文分词器IKAnalyzer,并重新启动:

    docker exec -it elasticsearch /bin/bash	
    #此命令需要在容器中运行	
    elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.4.0/elasticsearch-analysis-ik-6.4.0.zip	
    docker restart elasticsearch
    • 开启防火墙:

    firewall-cmd --zone=public --add-port=9200/tcp --permanent	
    firewall-cmd --reload
    • 访问会返回版本信息:http://192.168.3.101:9200/ 640?wx_fmt=png

    kibana安装

    • 下载kibana6.4.0的docker镜像:

    docker pull kibana:6.4.0
    • 使用docker命令启动:

    docker run --name kibana -p 5601:5601 \	
    --link elasticsearch:es \	
    -e "elasticsearch.hosts=http://es:9200" \	
    -d kibana:6.4.0
    • 开启防火墙:

    firewall-cmd --zone=public --add-port=5601/tcp --permanent	
    firewall-cmd --reload
    • 访问地址进行测试:http://192.168.3.101:5601 640?wx_fmt=png

    Mongodb安装

    • 下载mongo3.2的docker镜像:

    docker pull mongo:3.2
    • 使用docker命令启动:

    docker run -p 27017:27017 --name mongo \	
    -v /mydata/mongo/db:/data/db \	
    -d mongo:3.2

    Docker全部环境安装完成

    • 所有下载镜像文件: 640?wx_fmt=png

    • 所有运行在容器里面的应用: 640?wx_fmt=png

    SpringBoot应用部署

    构建所有Docker镜像并上传

    • 打开pom.xml中使用docker插件的注释: 640?wx_fmt=png

    • 修改dockerHost为你自己的docker服务器地址:

    • 构建镜像并上传:
      640?wx_fmt=png 640?wx_fmt=png

    部署mall-admin

    docker run -p 8080:8080 --name mall-admin \	
    --link mysql:db \	
    -v /etc/localtime:/etc/localtime \	
    -v /mydata/app/admin/logs:/var/logs \	
    -d mall/mall-admin:1.0-SNAPSHOT

    注意:CenterOS7.2版本需要加入此行,否则容器时区和宿主机无法同步

    -v /etc/timezone:/etc/timezone \

    部署mall-search

    docker run -p 8081:8081 --name mall-search \	
    --link elasticsearch:es \	
    --link mysql:db \	
    -v /etc/localtime:/etc/localtime \	
    -v /mydata/app/search/logs:/var/logs \	
    -d mall/mall-search:1.0-SNAPSHOT

    部署mall-port

    docker run -p 8085:8085 --name mall-portal \	
    --link mysql:db \	
    --link redis:redis \	
    --link mongo:mongo \	
    --link rabbitmq:rabbit \	
    -v /etc/localtime:/etc/localtime \	
    -v /mydata/app/portal/logs:/var/logs \	
    -d mall/mall-portal:1.0-SNAPSHOT

    开启防火墙

    firewall-cmd --zone=public --add-port=8080/tcp --permanent	
    firewall-cmd --zone=public --add-port=8081/tcp --permanent	
    firewall-cmd --zone=public --add-port=8085/tcp --permanent	
    firewall-cmd --reload

    访问接口进行测试

    • mall-admin的api接口文档地址:http://192.168.3.101:8080/swagger-ui.html 640?wx_fmt=png

    • mall-search的api接口文档地址:http://192.168.3.101:8081/swagger-ui.html 640?wx_fmt=png

    • mall-portal的api接口文档地址:http://192.168.3.101:8085/swagger-ui.html 640?wx_fmt=png

    推荐阅读



    640?wx_fmt=jpeg

    欢迎关注,点个在看

    展开全文
  • linux 部署分布式ehcache,两个实例无法同步数据的一个坑 windows系统测试过分布式ehcache,两个实例ehcache数据彼此之间可以同步,到了linux环境无法同步: linux实例1:192.168.0.228 linux实例2:192.168.0.77...

    linux 部署分布式ehcache,两个实例无法同步数据的一个坑

    windows系统测试过分布式ehcache,两个实例ehcache数据彼此之间可以同步,到了linux环境无法同步:

    • linux实例1:192.168.0.228
    • linux实例2:192.168.0.77
    • jdk版本: JDK1.6
    • web容器: jboss-4.2.3.GA
    • ehcache版本: ehcache-2.10.5-distribution

    linux实例1配置

    <cacheManagerPeerProviderFactory
                class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory"
                properties="peerDiscovery=manual,rmiUrls=//192.168.0.77:40000/cdmsObjectCache"
                propertySeparator=","
                />
    
    <cacheManagerPeerListenerFactory
                class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory"
                properties="hostName=192.168.0.228,port=40000,socketTimeoutMillis=120000" 
                propertySeparator="," />
    
        <!-- cacheEventListenerFactory - 监听缓存中element的put, remove, update和expire事件 -->
        <!-- bootstrapCacheLoaderFactory - 启动时加载缓存的element每个用来做分布式缓存都必须设定element的事件监听器,用来在各个CacheManager节点复制消息。 -->
        <!-- eternal:boolean类型,表示是否永恒,默认为false。 如果设为true,将忽略timeToIdleSeconds和timeToLiveSeconds,Cache内的元素永远都不会过期,也就不会因为元素的过期而被清除了。 -->
        <cache name="cdmsObjectCache"
               maxEntriesLocalHeap="10000"
               maxEntriesLocalDisk="10000000"
               eternal="true"
               diskSpoolBufferSizeMB="20"
               memoryStoreEvictionPolicy="LFU"
               transactionalMode="off">
            <persistence strategy="localTempSwap"/>
            <cacheEventListenerFactory
                    class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"
                    properties="replicateAsynchronously=true, replicatePuts=true,
                                replicatePutsViaCopy=true, replicateUpdates=true,
                                replicateUpdatesViaCopy=true, replicateRemovals=true,
                                asynchronousReplicationIntervalMillis=200"/>
            <bootstrapCacheLoaderFactory
                    class="net.sf.ehcache.distribution.RMIBootstrapCacheLoaderFactory"/>
        </cache>

    linux实例2配置

    <cacheManagerPeerProviderFactory
                class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory"
                properties="peerDiscovery=manual,rmiUrls=//192.168.0.228:40000/cdmsObjectCache"
                propertySeparator=","
                />
    
    <cacheManagerPeerListenerFactory
                class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory"
                properties="hostName=192.168.0.77,port=40000,socketTimeoutMillis=120000" 
                propertySeparator="," />
    
        <!-- cacheEventListenerFactory - 监听缓存中element的put, remove, update和expire事件 -->
        <!-- bootstrapCacheLoaderFactory - 启动时加载缓存的element每个用来做分布式缓存都必须设定element的事件监听器,用来在各个CacheManager节点复制消息。 -->
        <!-- eternal:boolean类型,表示是否永恒,默认为false。 如果设为true,将忽略timeToIdleSeconds和timeToLiveSeconds,Cache内的元素永远都不会过期,也就不会因为元素的过期而被清除了。 -->
        <cache name="cdmsObjectCache"
               maxEntriesLocalHeap="10000"
               maxEntriesLocalDisk="10000000"
               eternal="true"
               diskSpoolBufferSizeMB="20"
               memoryStoreEvictionPolicy="LFU"
               transactionalMode="off">
            <persistence strategy="localTempSwap"/>
            <cacheEventListenerFactory
                    class="net.sf.ehcache.distribution.RMICacheReplicatorFactory"
                    properties="replicateAsynchronously=true, replicatePuts=true,
                                replicatePutsViaCopy=true, replicateUpdates=true,
                                replicateUpdatesViaCopy=true, replicateRemovals=true,
                                asynchronousReplicationIntervalMillis=200"/>
            <bootstrapCacheLoaderFactory
                    class="net.sf.ehcache.distribution.RMIBootstrapCacheLoaderFactory"/>
        </cache>

    百度的答案没有解决我的问题

    jboss服务器起来后报错,然后根据错误提示,搜索说是要改 修改/etc/hosts
    Linux系统使用/etc/hosts文件中localhost解析ip为127.0.0.1,当客户端向服务器Lookup时,服务端就会把解析出来的地址发给客户端,让客户端再根据这个地址去连接,客户端收到127.0.0.1这个地址,也使用/etc/hosts文件中localhost解析ip去连接,实际连接的是自己本身,当然也就不行了。
    我把服务器的IP地址加到服务器的/etc/hosts文件中,并放在127.0.0.1之前,以让该服务能先解析到这个IP,从而正确解析出来机器名所对应的IP。
    机器的实际IP为192.168.0.77,则可以添加以下内容
    192.168.0.77 77Linux localhost


    17:46:09,496 ERROR [STDERR] 2018-8-10 17:46:09 net.sf.ehcache.distribution.RMIAsynchronousCacheReplicator writeReplicationQueue
    警告: Unable to send message to remote peer. Message was: Connection refused to host: 127.0.0.1; nested exception is:
    java.net.ConnectException: Connection refused: connect
    java.rmi.ConnectException: Connection refused to host: 127.0.0.1; nested exception is:
    java.net.ConnectException: Connection refused: connect
    at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:601)
    at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:198)
    at sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:184)
    at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:110)
    at net.sf.ehcache.distribution.RMICachePeer_Stub.send(Unknown Source)
    at net.sf.ehcache.distribution.RMIAsynchronousCacheReplicator.writeReplicationQueue(RMIAsynchronousCacheReplicator.java:314)
    at net.sf.ehcache.distribution.RMIAsynchronousCacheReplicator.replicationThreadMain(RMIAsynchronousCacheReplicator.java:127)
    at net.sf.ehcache.distribution.RMIAsynchronousCacheReplicator.access$000(RMIAsynchronousCacheReplicator.java:58)
    at net.sf.ehcache.distribution.RMIAsynchronousCacheReplicator$ReplicationThread.run(RMIAsynchronousCacheReplicator.java:389)
    Caused by: java.net.ConnectException: Connection refused: connect
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
    at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
    at java.net.Socket.connect(Socket.java:519)
    at java.net.Socket.connect(Socket.java:469)
    at java.net.Socket.<init>(Socket.java:366)
    at java.net.Socket.<init>(Socket.java:180)
    at sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(RMIDirectSocketFactory.java:22)
    at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(RMIMasterSocketFactory.java:128)
    at net.sf.ehcache.distribution.ConfigurableRMIClientSocketFactory.createSocket(ConfigurableRMIClientSocketFactory.java:70)
    at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:595)
    ... 8 more

    就在我百思不得其解时,各种尝试,在确定ehcache.xml配置都是正确的情况下,我终于发现是web容器jboss的坑。我换成以前的jboss-4.0.5.GA版本,问题就解决了。两个实例之间彼此之间终于可以同步数据。

    展开全文
  • 什么容器数据卷 将应用和环境打包成一个镜像! 如果数据都在容器中,那么我们容器删除,数据就会丢失!需求:数据可以持久化 MySQL,容器删了,删库跑路!需求:MySQL数据可以存储在本地! 容器之间可以有一个数据...

    容器数据卷

    什么是容器数据卷

    将应用和环境打包成一个镜像!

    如果数据都在容器中,那么我们容器删除,数据就会丢失!需求:数据可以持久化

    MySQL,容器删了,删库跑路!需求:MySQL数据可以存储在本地!

    容器之间可以有一个数据共享的技术!Docker容器中产生的数据,同步到本地!

    这就是卷技术!目录的挂载,将我们容器内的目录,挂载到Linux上面

    总结:容器的持久化和同步操作!容器间是可以数据共享的!

    使用数据卷

    方式一:直接使用命令来挂载 -v

    docker run -it -v 主机目录: 容器内目录
    
    #测试
    [root@localhost home]# docker run -it -v /home/cishi:/home centos /bin/bash
    
    
    

    测试同步
    在这里插入图片描述
    再来测试

    1、停止容器

    2、宿主机上修改了文件

    3、启动容器

    4、容器内的数据依旧是同步的!

    在这里插入图片描述

    好处:我们以后修改只需要在本地修改即可,容器内会自动同步

    实战:部署Mysql

    #获取镜像
    [root@localhost home]# docker pull mysql:5.7
    
    #运行容器,需要做数据挂载! 安装mysql,需要配置密码,这是需要注意的点
    #官方测试:docker run --name some-mysql -v /my/custom:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
    
    #启动我们的
    -d 后台运行
    -p 端口映射
    -v 卷挂载
    -e 环境配置
    --name 容器名字
    [root@localhost home]# docker run -d -p 3306:3306 -v /home/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7
    
    #启动成功之后,可以用Navicat 来连接测试一下
    
    #在本地测试创建一个数据库,查看一下映射的路径是否ok!
    
    #如果把容器删除了,本地的数据也不会丢失  这就持久化了
    

    具名和匿名挂载

    #具名挂载
    docker run -d -p --name nginx02 -v juming-nginx:/etc/nginx nginx
    

    所有的docker容器内的卷,没有指定目录的情况下都是在/var/lib/docker/volumes/xxx/_data

    #如何确定是具名挂载还是匿名挂载,还是指定路径挂载
    -v 容器内路径   #匿名挂载
    -v 卷名:容器内路径  #具名挂载
    -v /宿主机路径:容器内路径  #指定路径挂载
    

    拓展:

    #通过 -v 容器内路径:ro  rw 改变读写权限
    ro  readonly   #只读
    rw  readwrite  #可读可写
    
    #一旦设置了容器权限,容器对我们挂载出来的内容就有限定了
    docker run -d -p --name nginx02 -v juming-nginx:/etc/nginx:ro nginx
    docker run -d -p --name nginx02 -v juming-nginx:/etc/nginx:rw nginx
    
    
    展开全文
  • 一、安装部署Docker容器 第一步:查看系统要求删除旧版本要求 CentOS 系统的内核版本高于 3.10 #查看内核版本 uname -a #删除旧版本 yum remove docker docker-common docker-selinux docker-engine 第二步:安装...
  • 译文转载自:https://www.oschina.net/translate/docker-lightweight-linux-containers-consistent-development-and-deployment ...英文题目:Docker:lightweight linux containers for consistent dev
  • Springboot系列-部署Springboot项目到Docker容器 前言:在平时的项目开发中,我们部署项目的方式可能是打成Jar包直接运行,或者将项目打成war包然后部署到tomcat容器中运行等;不过微服务和单体应用不一样,由于...
  • 近几年来,Docker 在企业环境的应用端具有很大的潜力,在这一点上我想大家是有目共睹的,无状态的服务采用容器化已经是一种大趋势,那么问题来了,作为系统核心的数据库是否需要容器化?针对数...
  • 在集群中有多台tomcat,对于集群中的tomcat部署的代码是同一份代码的副本,如果页面文件发生变化,意味着每个容器中的页面文件都要进行更新,在大规模的集群中这样的工作量会被无限放大,这时候就需要用到数据共享...
  • 前言:当希望在本地上配置容器中的mysql时,发现一个问题,本地需要完整的配置文件目录,如果本地是空目录,那么容器中的配置目录也是空的所以不能运行镜像,这里解决这个问题,思路是任意运行一个容器,把里面的...
  • 不过据松哥了解,容器部署应该是目前的主流方案。 不同于传统的单体应用,微服务由于服务数量众多,在部署的时候出问题的可能性更大,这个时候,结合 Docker 来部署,就可以很好的解决这个问题,这也是目前使用较...
  • prometheus 容器安装部署

    千次阅读 2020-08-07 18:09:37
    TSDB(Time Series Database)时序列数据库,我们可以简单的理解一个优化后用来处理时间序列数据的软件,并且数据中的数组是由时间进行索引的。 时间序列数据库的特点 大部分时间都是写入操作。 写入操作几乎是顺序...
  • Python项目打包部署Linux服务上

    千次阅读 2020-11-22 17:47:13
    文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结 前言 一个Python项目的完成...而部署可以是直接部署,也可以是docker容器部署,相比直接部署docker部署方式会省去一堆环境的配置,且轻量,启动
  • 通过Docker部署Linux版SqlServer

    千次阅读 2018-09-28 16:04:16
    很多人不知道SqlServer还有Linux版的,微软官方于2016年就发布了SqlServer 2017 for Linux,使得SqlServer数据库可以运行在Linux内核的服务器上。按照微软官方的解释,SQL Server 2017 在所有支持的平台(包括 Linux...
  • 使用docker在linux部署MySQL

    万次阅读 2021-04-08 16:11:47
    docker部署框架支持mysql服务器的简单安装和配置。本篇介绍如何使用MySQL Server Docker映像。...注意:mysql团队维护的MySQL Docker映像是专门为linux平台构建的。其他平台不受支持。 1,下载MySQL Do
  • Linux下Docker快速部署LAMP

    千次阅读 2019-04-16 21:11:35
    Linux下Docker快速部署LAMP目录获取基础镜像自定义你的镜像基于你的镜像运行一个容器权限修改访问测试 若你的mac或Linux环境未上安装Docker,请移步Docker安装,确认安装成功之后再进行下文内容。 目录 获取基础...
  • Docker部署nginx的web服务,VOLUME的使用详解,实现数据持久化!持续更新,建议收藏❤
  • 容器部署Ganglia并监控Hadoop集群

    千次阅读 2018-05-29 16:47:40
    网上有很多Ganglia部署的教程,每一个我都觉得繁琐,我的目的只是用来监控Hadoop测试集群,能即刻使用才是王道,于是我想到通过Rancher部署Ganglia应用服务(类似于我在上一篇文章中部署Jmeter容器集群的方式),以...
  • Linux部署DocSystem知识/文件管理系统

    千次阅读 2019-09-12 15:55:21
    这里是作者的部署地址...以下是自己部署遇到的解决经过 目录系统安装一、准备工作1、下载DocSystem.war和DocSystem.sql2、DocSystem.war配置文件修改(1) 数据库配置:jdbc.properties(2)...
  • 使用docker在linux环境中部署springboot包

    千次阅读 多人点赞 2021-01-27 13:57:08
    首先我们看一下,在windows环境下的打包部署 1. 进行install打包 2. 检查,在target目录中是否存在了项目jar包 3.如果已经存在了项目jar包,就可以直接运行了(前面说了,springboot包是可以直接运行的) 4.在dos...
  • 容器部署解决方案Docker

    千次阅读 2017-12-17 11:44:01
    容器部署解决方案Docker                     课程目标 目标1:了解Docker与虚拟机的不同点,相比的优势 目标2:掌握Docker的启动方法 目标3:掌握Docker镜像操作 目标4:掌握Docker容器操作 目标5:掌握...
  • 需求分析—原型设计—开发代码—内网部署-提交测试—确认上线—备份数据—外网更新-最终测试 ,如果发现外网部署的代码有异常,需要及时回滚。一般是运维来做 1、功能测试 2、上线的时间 3、 jenkins 4、运维 5、...
  • 为什么程序员要学linux

    万次阅读 多人点赞 2020-08-16 14:01:38
    作为一个开发者,或者说一个合格的后端开发人员,熟练使用linux和编写基本的shell是必须的,后端经常在开发后需要部署和调试web服务,静态的如Nginx、Apache, 动态的如Tomcat、PHP等,以及web服务的依赖数据库、缓存...
  • 文章目录一、部署环境信息二、docker部署grafana服务2.1、grafana镜像下载2.2、创建数据目录及配置文件目录2.3、拷贝grafana配置文件2.4、启动grafana容器2.5、检查grafana状态2.6、grafana配置域名反向代理2.7、...
  • linux运维需要掌握什么知识?linux运维学习路线

    千次阅读 多人点赞 2019-04-28 17:59:29
    linux运维需要掌握什么知识?这个问题算是老生常谈了,但是本人认为知道需要掌握什么知识不是重点,重点是我们需要知道运维是做什么的?再来根据工作需求去讨论需要学习什么知识才是正途,须知知识是学不完的,技能...
  • 文章目录什么是dockerdocker的优点docker image镜像Dockerfile 文件Dockerfile配置例子创建docker镜像docker container 容器模型部署参考和更多阅读 docker部署机器学习或深度学习模型正在成为企业大规模部署的一种...
  • 最近公司使用帆软(finereport)报表工具制作数据报表,并且需要将制作好的报表打包成war包通过docker部署,并且将部署好的项目制作成docker镜像,发给客户,下面将部署过程中踩的坑总结一下。 想要了解帆软可以点击官方...
  • 在Docker容器部署Web应用

    万次阅读 2015-02-02 23:20:57
    演示如何在Docker容器部署一个Java Web应用程序,需要准备的软件工具包括:jre,tomcat和webapp应用。另外,为了实现在容器启动时自动启动webapp,需要编写一个脚本工具完成该工作。 安装jre,请参考:http
  • Linux环境下部署java项目上线

    千次阅读 2020-08-20 15:36:08
    docker容器 ntp服务器 nginx服务器 postgresql数据库 redis缓存 profile项目运行指令配置 jdk文件夹下镜像和脚本-setup.sh #!/bin/bash echo '检查java运行环境' if grep -q "JAVA_HOME" /etc/profile ;...
  • Linux+db2+was部署问题总结

    千次阅读 2016-11-22 13:10:28
    db2+rbp+was的部署,由于是集群,切涉及到了很多was的东西,搞了很长时间,在此做一个问题总结,供后续查询: 环境:红旗linux  db29.7  was6.1 所遇到问题总结: 1. RBP系统中不能输入中文的修改:  在sh文件...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 66,498
精华内容 26,599
关键字:

linux部署数据为什么需要容器

linux 订阅