【云原生】第五篇--Docker容器化部署企业级应用集群

Docker容器化部署企业级应用集群

  • 一、Docker容器化部署企业级应用
    • 1.1 使用Docker容器化部署企业级应用必要性
    • 1.2 使用Docker容器化部署企业级应用参考资料
  • 二、使用Docker容器实现Nginx部署
    • 2.1 获取参考资料
    • 2.2 运行Nginx应用容器
    • 2.3 运行Nginx应用容器
    • 2.4 运行Nginx应用容器
  • 三、使用Docker容器实现Tomcat部署
    • 3.1 获取参考资料
    • 3.2 运行tomcat应用容器
      • 3.2.1 不暴露端口运行
      • 3.2.2 暴露端口运行
      • 3.2.3 暴露端口及添加网站文件
  • 四、使用Docker容器实现MySQL部署
    • 4.1 单节点MySQL部署
    • 4.2 MySQL主从复制集群部署
      • 4.2.1 MySQL主节点部署
      • 4.2.2 MySQL主节点配置
      • 4.2.3 MySQL从节点部署
      • 4.2.4 MySQL从节点配置
      • 4.2.5 master节点配置
      • 4.2.6 slave节点配置
      • 4.2.7 验证MySQL集群可用性
  • 五、使用Docker容器实现Oracle部署
    • 5.1 获取参考资料
    • 5.2 运行oracle容器
    • 5.3 下载客户端连接工具
  • 六、使用Docker容器实现ElasticSearch+Kibana部署
    • 6.1 获取参考资料
      • 6.1.1 ES部署参考资料
      • 6.1.2 Kibana部署参考资料
    • 6.2 ES部署
    • 6.3 Kibana部署
  • 七、使用Docker容器实现Redis部署
    • 7.1 获取参考资料
    • 7.2 运行Redis容器
    • 7.3 验证
    • 7.4 Redis集群
  • 八、使用Docker容器实现RabbitMQ部署
    • 8.1 获取参考资料
    • 8.2 部署RabbitMQ

一、Docker容器化部署企业级应用

1.1 使用Docker容器化部署企业级应用必要性

  • 有利于快速实现企业级应用部署
  • 有利于快速实现企业级应用恢复

1.2 使用Docker容器化部署企业级应用参考资料

【云原生】第五篇--Docker容器化部署企业级应用集群_第1张图片

二、使用Docker容器实现Nginx部署

2.1 获取参考资料

【云原生】第五篇--Docker容器化部署企业级应用集群_第2张图片
【云原生】第五篇--Docker容器化部署企业级应用集群_第3张图片
【云原生】第五篇--Docker容器化部署企业级应用集群_第4张图片

2.2 运行Nginx应用容器

不在docker host暴露端口

# docker run -d --name nginx-server -v /opt/nginx-server:/usr/share/nginx/html:ro nginx
664cd1bbda4ad2a71cbd09f0c6baa9b34db80db2d69496670a960be07b9521cb
# docker ps
CONTAINER ID   IMAGE       COMMAND                  CREATED          STATUS          PORTS                                                  NAMES
664cd1bbda4a   nginx       "/docker-entrypoint.…"   4 seconds ago    Up 3 seconds    80/tcp                                                 nginx-server
# docker inspect 664 | grep IPAddress
            "SecondaryIPAddresses": null,
            "IPAddress": "172.17.0.3",
                    "IPAddress": "172.17.0.3",
# curl http://172.17.0.3

403 Forbidden<<span class="token operator">/</span>title><<span class="token operator">/</span>head>
<body>
<center><h1>403 Forbidden<<span class="token operator">/</span>h1><<span class="token operator">/</span>center>
<hr><center>nginx/1<span class="token punctuation">.</span>21<span class="token punctuation">.</span>6<<span class="token operator">/</span>center>
<<span class="token operator">/</span>body>
<<span class="token operator">/</span>html>
</code></pre> 
  <pre><code class="prism language-powershell"><span class="token comment"># ls /opt</span>
nginx-server
<span class="token comment"># echo "nginx is working" > /opt/nginx-server/index.html</span>
</code></pre> 
  <pre><code class="prism language-powershell"><span class="token comment"># curl http://172.17.0.3</span>
nginx is working
</code></pre> 
  <h2>2.3 运行Nginx应用容器</h2> 
  <blockquote> 
   <p>在docker host暴露80端口</p> 
  </blockquote> 
  <pre><code class="prism language-powershell"><span class="token comment"># docker run -d -p 80:80 --name nginx-server-port -v /opt/nginx-server-port:/usr/share/nginx/html:ro nginx</span>
</code></pre> 
  <pre><code class="prism language-powershell"><span class="token comment"># docker ps</span>
CONTAINER ID   IMAGE       COMMAND                  CREATED             STATUS             PORTS                                                  NAMES
74dddf51983d   nginx       <span class="token string">"/docker-entrypoint.…"</span>   3 seconds ago       Up 2 seconds       0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0:80->80/tcp<span class="token punctuation">,</span> :::80->80/tcp                      nginx-server-port
</code></pre> 
  <pre><code class="prism language-powershell"><span class="token comment"># ls /opt</span>
nginx-server  nginx-server-port
</code></pre> 
  <pre><code class="prism language-powershell"><span class="token comment"># echo "nginx is running" > /opt/nginx-server-port/index.html</span>
</code></pre> 
  <p><strong>在宿主机上访问</strong><br> <a href="http://img.e-com-net.com/image/info8/b809068da88844569692ebea5d0ea6df.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/b809068da88844569692ebea5d0ea6df.jpg" alt="【云原生】第五篇--Docker容器化部署企业级应用集群_第5张图片" width="431" height="177" style="border:1px solid black;"></a></p> 
  <pre><code class="prism language-powershell"><span class="token comment"># docker top nginx-server-port</span>
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                22195               22163               0                   15:08               ?                   00:00:00            nginx: master <span class="token keyword">process</span> nginx <span class="token operator">-</span>g daemon off<span class="token punctuation">;</span>
101                 22387               22195               0                   15:08               ?                   00:00:00            nginx: worker <span class="token keyword">process</span>

</code></pre> 
  <h2>2.4 运行Nginx应用容器</h2> 
  <blockquote> 
   <p>挂载配置文件,需要创建一个nginx容器,把配置文件复制出来修改后使用。</p> 
  </blockquote> 
  <pre><code class="prism language-powershell"><span class="token comment"># docker cp nginxwebcontainername:/etc/nginx/nginx.conf /opt/nginxcon/</span>
修改后即可使用
</code></pre> 
  <pre><code class="prism language-powershell"><span class="token comment"># ls /opt/nginxcon/nginx.conf</span>
<span class="token operator">/</span>opt/nginxcon/nginx<span class="token punctuation">.</span>conf
</code></pre> 
  <pre><code class="prism language-powershell"><span class="token comment"># docker run -d \</span>
<span class="token operator">-</span>p 82:80 <span class="token operator">--</span>name nginx-server-conf \
<span class="token operator">-</span>v <span class="token operator">/</span>opt/nginx-server-conf:<span class="token operator">/</span>usr/share/nginx/html:ro \
<span class="token operator">-</span>v <span class="token operator">/</span>opt/nginxcon/nginx<span class="token punctuation">.</span>conf:<span class="token operator">/</span>etc/nginx/nginx<span class="token punctuation">.</span>conf:ro \
nginx
76251ec44e5049445399303944fc96eb8161ccb49e27b673b99cb2492009523c
</code></pre> 
  <pre><code class="prism language-powershell"><span class="token comment"># docker top nginx-server-conf</span>
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                25005               24972               0                   15:38               ?                   00:00:00            nginx: master <span class="token keyword">process</span> nginx <span class="token operator">-</span>g daemon off<span class="token punctuation">;</span>
101                 25178               25005               0                   15:38               ?                   00:00:00            nginx: worker <span class="token keyword">process</span>
101                 25179               25005               0                   15:38               ?                   00:00:00            nginx: worker <span class="token keyword">process</span>
</code></pre> 
  <h1>三、使用Docker容器实现Tomcat部署</h1> 
  <h2>3.1 获取参考资料</h2> 
  <p><a href="http://img.e-com-net.com/image/info8/9cb1f4b8b29241deb716a5752434a33f.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/9cb1f4b8b29241deb716a5752434a33f.jpg" alt="【云原生】第五篇--Docker容器化部署企业级应用集群_第6张图片" width="650" height="451" style="border:1px solid black;"></a><br> <a href="http://img.e-com-net.com/image/info8/d2cdbaffc634447e8e53edd4e593a0a3.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/d2cdbaffc634447e8e53edd4e593a0a3.jpg" alt="【云原生】第五篇--Docker容器化部署企业级应用集群_第7张图片" width="650" height="290" style="border:1px solid black;"></a><br> <a href="http://img.e-com-net.com/image/info8/fd0c8a8e8e4e42a5a52c54d3b73c479c.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/fd0c8a8e8e4e42a5a52c54d3b73c479c.jpg" alt="【云原生】第五篇--Docker容器化部署企业级应用集群_第8张图片" width="650" height="315" style="border:1px solid black;"></a></p> 
  <h2>3.2 运行tomcat应用容器</h2> 
  <h3>3.2.1 不暴露端口运行</h3> 
  <pre><code class="prism language-powershell"><span class="token comment"># docker run -d --rm tomcat:9.0</span>
</code></pre> 
  <pre><code class="prism language-powershell"><span class="token comment"># docker ps</span>
CONTAINER ID   IMAGE        COMMAND                  CREATED             STATUS             PORTS                                                  NAMES
c20a0e781246   tomcat:9<span class="token punctuation">.</span>0   <span class="token string">"catalina.sh run"</span>        27 seconds ago      Up 25 seconds      8080/tcp                                               heuristic_cori
</code></pre> 
  <h3>3.2.2 暴露端口运行</h3> 
  <pre><code class="prism language-powershell"><span class="token comment"># docker run -d -p 8080:8080 --rm tomcat:9.0</span>
2fcf5762314373c824928490b871138a01a94abedd7e6814ad5f361d09fbe1de
</code></pre> 
  <pre><code class="prism language-powershell"><span class="token comment"># docker ps</span>
CONTAINER ID   IMAGE        COMMAND                  CREATED             STATUS             PORTS                                                  NAMES
2fcf57623143   tomcat:9<span class="token punctuation">.</span>0   <span class="token string">"catalina.sh run"</span>        3 seconds ago       Up 1 second        0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0:8080->8080/tcp<span class="token punctuation">,</span> :::8080->8080/tcp              eloquent_chatelet
</code></pre> 
  <p><strong>在宿主机访问</strong><br> <a href="http://img.e-com-net.com/image/info8/900aac1e32e345b2a51f404fca98cb1c.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/900aac1e32e345b2a51f404fca98cb1c.jpg" alt="【云原生】第五篇--Docker容器化部署企业级应用集群_第9张图片" width="553" height="264" style="border:1px solid black;"></a></p> 
  <pre><code class="prism language-powershell"><span class="token comment"># docker exec 2fc ls /usr/local/tomcat/webapps</span>
里面为空,所以可以添加网站文件。
</code></pre> 
  <h3>3.2.3 暴露端口及添加网站文件</h3> 
  <pre><code class="prism language-powershell"><span class="token comment"># docker run -d -p 8081:8080 -v /opt/tomcat-server:/usr/local/tomcat/webapps/ROOT tomcat:9.0</span>
f456e705d48fc603b7243a435f0edd6284558c194e105d87befff2dccddc0b63
</code></pre> 
  <pre><code class="prism language-powershell"><span class="token comment"># docker ps</span>
CONTAINER ID   IMAGE        COMMAND             CREATED         STATUS         PORTS                                       NAMES
f456e705d48f   tomcat:9<span class="token punctuation">.</span>0   <span class="token string">"catalina.sh run"</span>   3 seconds ago   Up 2 seconds   0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0:8081->8080/tcp<span class="token punctuation">,</span> :::8081->8080/tcp   cool_germain
</code></pre> 
  <pre><code class="prism language-powershell"><span class="token comment"># echo "tomcat running" > /opt/tomcat-server/index.html</span>
</code></pre> 
  <p><strong>在宿主机访问</strong><br> <a href="http://img.e-com-net.com/image/info8/96fb4144964f428e8c38295496ee0c35.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/96fb4144964f428e8c38295496ee0c35.jpg" alt="【云原生】第五篇--Docker容器化部署企业级应用集群_第10张图片" width="611" height="217" style="border:1px solid black;"></a></p> 
  <h1>四、使用Docker容器实现MySQL部署</h1> 
  <h2>4.1 单节点MySQL部署</h2> 
  <p><a href="http://img.e-com-net.com/image/info8/846c5ce4d9a643509e4d47bb98eda968.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/846c5ce4d9a643509e4d47bb98eda968.jpg" alt="【云原生】第五篇--Docker容器化部署企业级应用集群_第11张图片" width="650" height="585" style="border:1px solid black;"></a><a href="http://img.e-com-net.com/image/info8/85bce8e17c4d46a8ae2bcbd02f5119ed.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/85bce8e17c4d46a8ae2bcbd02f5119ed.jpg" alt="【云原生】第五篇--Docker容器化部署企业级应用集群_第12张图片" width="650" height="269" style="border:1px solid black;"></a><br> <a href="http://img.e-com-net.com/image/info8/c7f8b733dd524955bae79c4a0ee5eb8a.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/c7f8b733dd524955bae79c4a0ee5eb8a.jpg" alt="【云原生】第五篇--Docker容器化部署企业级应用集群_第13张图片" width="650" height="337" style="border:1px solid black;"></a></p> 
  <pre><code class="prism language-powershell"><span class="token comment"># docker run -p 3306:3306 \</span>
 <span class="token operator">--</span>name mysql \
 <span class="token operator">-</span>v <span class="token operator">/</span>opt/mysql/log:<span class="token operator">/</span><span class="token keyword">var</span><span class="token operator">/</span>log/mysql \
 <span class="token operator">-</span>v <span class="token operator">/</span>opt/mysql/<span class="token keyword">data</span>:<span class="token operator">/</span><span class="token keyword">var</span><span class="token operator">/</span>lib/mysql \
 <span class="token operator">-</span>v <span class="token operator">/</span>opt/mysql/conf:<span class="token operator">/</span>etc/mysql \
 <span class="token operator">-</span>e MYSQL_ROOT_PASSWORD=root \
 <span class="token operator">-</span>d \
 mysql:5<span class="token punctuation">.</span>7
</code></pre> 
  <pre><code class="prism language-powershell"><span class="token comment"># docker ps</span>
CONTAINER ID   IMAGE       COMMAND                  CREATED          STATUS          PORTS                                                  NAMES
6d16ca21cf31   mysql:5<span class="token punctuation">.</span>7   <span class="token string">"docker-entrypoint.s…"</span>   32 seconds ago   Up 30 seconds   0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0:3306->3306/tcp<span class="token punctuation">,</span> :::3306->3306/tcp<span class="token punctuation">,</span> 33060/tcp   mysql
</code></pre> 
  <pre><code class="prism language-powershell">通过容器中客户端访问
<span class="token comment"># docker exec -it mysql mysql -uroot -proot</span>
mysql: <span class="token namespace">[Warning]</span> <span class="token keyword">Using</span> a password on the command line interface can be insecure<span class="token punctuation">.</span>
Welcome to the MySQL monitor<span class="token punctuation">.</span>  Commands <span class="token keyword">end</span> with <span class="token punctuation">;</span> or \g<span class="token punctuation">.</span>
Your MySQL connection id is 4
Server version: 5<span class="token punctuation">.</span>7<span class="token punctuation">.</span>37 MySQL Community Server <span class="token punctuation">(</span>GPL<span class="token punctuation">)</span>

Copyright <span class="token punctuation">(</span>c<span class="token punctuation">)</span> 2000<span class="token punctuation">,</span> 2022<span class="token punctuation">,</span> Oracle and/or its affiliates<span class="token punctuation">.</span>

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates<span class="token punctuation">.</span> Other names may be trademarks of their respective
owners<span class="token punctuation">.</span>

<span class="token function">Type</span> <span class="token string">'help;'</span> or <span class="token string">'\h'</span> <span class="token keyword">for</span> help<span class="token punctuation">.</span> <span class="token function">Type</span> <span class="token string">'\c'</span> to clear the current input statement<span class="token punctuation">.</span>

mysql>
</code></pre> 
  <pre><code class="prism language-powershell">在docker host上访问
<span class="token comment"># yum -y install mariadb</span>

<span class="token comment"># mysql -h 192.168.255.157 -uroot -proot -P 3306</span>
Welcome to the MariaDB monitor<span class="token punctuation">.</span>  Commands <span class="token keyword">end</span> with <span class="token punctuation">;</span> or \g<span class="token punctuation">.</span>
Your MySQL connection id is 7
Server version: 5<span class="token punctuation">.</span>7<span class="token punctuation">.</span>37 MySQL Community Server <span class="token punctuation">(</span>GPL<span class="token punctuation">)</span>

Copyright <span class="token punctuation">(</span>c<span class="token punctuation">)</span> 2000<span class="token punctuation">,</span> 2018<span class="token punctuation">,</span> Oracle<span class="token punctuation">,</span> MariaDB Corporation Ab and others<span class="token punctuation">.</span>

<span class="token function">Type</span> <span class="token string">'help;'</span> or <span class="token string">'\h'</span> <span class="token keyword">for</span> help<span class="token punctuation">.</span> <span class="token function">Type</span> <span class="token string">'\c'</span> to clear the current input statement<span class="token punctuation">.</span>

MySQL <span class="token punctuation">[</span><span class="token punctuation">(</span>none<span class="token punctuation">)</span><span class="token punctuation">]</span>> show databases<span class="token punctuation">;</span>
<span class="token operator">+</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">+</span>
<span class="token punctuation">|</span> Database           <span class="token punctuation">|</span>
<span class="token operator">+</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">+</span>
<span class="token punctuation">|</span> information_schema <span class="token punctuation">|</span>
<span class="token punctuation">|</span> mysql              <span class="token punctuation">|</span>
<span class="token punctuation">|</span> performance_schema <span class="token punctuation">|</span>
<span class="token punctuation">|</span> sys                <span class="token punctuation">|</span>
<span class="token operator">+</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">+</span>
4 rows in <span class="token function">set</span> <span class="token punctuation">(</span>0<span class="token punctuation">.</span>00 sec<span class="token punctuation">)</span>
</code></pre> 
  <h2>4.2 MySQL主从复制集群部署</h2> 
  <h3>4.2.1 MySQL主节点部署</h3> 
  <pre><code class="prism language-powershell"><span class="token comment"># docker run -p 3306:3306 \</span>
 <span class="token operator">--</span>name mysql-master \
 <span class="token operator">-</span>v <span class="token operator">/</span>opt/mysql-master/log:<span class="token operator">/</span><span class="token keyword">var</span><span class="token operator">/</span>log/mysql \
 <span class="token operator">-</span>v <span class="token operator">/</span>opt/mysql-master/<span class="token keyword">data</span>:<span class="token operator">/</span><span class="token keyword">var</span><span class="token operator">/</span>lib/mysql \
 <span class="token operator">-</span>v <span class="token operator">/</span>opt/mysql-master/conf:<span class="token operator">/</span>etc/mysql \
 <span class="token operator">-</span>e MYSQL_ROOT_PASSWORD=root \
 <span class="token operator">-</span>d mysql:5<span class="token punctuation">.</span>7
</code></pre> 
  <pre><code class="prism language-powershell"><span class="token comment"># docker ps</span>
CONTAINER ID   IMAGE       COMMAND                  CREATED          STATUS          PORTS                                                  NAMES
2dbbed8e35c7   mysql:5<span class="token punctuation">.</span>7   <span class="token string">"docker-entrypoint.s…"</span>   58 seconds ago   Up 57 seconds   0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0:3306->3306/tcp<span class="token punctuation">,</span> :::3306->3306/tcp<span class="token punctuation">,</span> 33060/tcp   mysql-master
</code></pre> 
  <h3>4.2.2 MySQL主节点配置</h3> 
  <pre><code class="prism language-powershell"><span class="token comment"># vim /opt/mysql-master/conf/my.cnf</span>
<span class="token comment"># cat /opt/mysql-master/conf/my.cnf</span>
<span class="token namespace">[client]</span>
default-character-<span class="token function">set</span>=utf8

<span class="token namespace">[mysql]</span>
default-character-<span class="token function">set</span>=utf8

<span class="token namespace">[mysqld]</span>
init_connect=<span class="token string">'SET collation_connection = utf8_unicode_ci'</span>
init_connect=<span class="token string">'SET NAMES utf8'</span>
character-<span class="token function">set-server</span>=utf8
collation-server=utf8_unicode_ci
<span class="token function">skip-character</span><span class="token operator">-</span><span class="token function">set-client</span><span class="token operator">-</span>handshake
<span class="token function">skip-name</span><span class="token operator">-</span>resolve

server_id=1
log-bin=mysql-bin
<span class="token function">read-only</span>=0
binlog-<span class="token keyword">do</span><span class="token operator">-</span>db=kubemsb_test

replicate-ignore-db=mysql
replicate-ignore-db=sys
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema
</code></pre> 
  <h3>4.2.3 MySQL从节点部署</h3> 
  <pre><code class="prism language-powershell"><span class="token comment"># docker run -p 3307:3306 \</span>
 <span class="token operator">--</span>name mysql-slave \
 <span class="token operator">-</span>v <span class="token operator">/</span>opt/mysql-slave/log:<span class="token operator">/</span><span class="token keyword">var</span><span class="token operator">/</span>log/mysql \
 <span class="token operator">-</span>v <span class="token operator">/</span>opt/mysql-slave/<span class="token keyword">data</span>:<span class="token operator">/</span><span class="token keyword">var</span><span class="token operator">/</span>lib/mysql \
 <span class="token operator">-</span>v <span class="token operator">/</span>opt/mysql-slave/conf:<span class="token operator">/</span>etc/mysql \
 <span class="token operator">-</span>e MYSQL_ROOT_PASSWORD=root \
 <span class="token operator">-</span>d 
 <span class="token operator">--</span>link mysql-master:mysql-master
 mysql:5<span class="token punctuation">.</span>7
</code></pre> 
  <pre><code class="prism language-powershell"><span class="token comment"># docker ps</span>
CONTAINER ID   IMAGE       COMMAND                  CREATED         STATUS         PORTS                                                  NAMES
caf7bf3fc68f   mysql:5<span class="token punctuation">.</span>7   <span class="token string">"docker-entrypoint.s…"</span>   8 seconds ago   Up 6 seconds   33060/tcp<span class="token punctuation">,</span> 0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0:3307->3306/tcp<span class="token punctuation">,</span> :::3307->3306/tcp   mysql-slave
</code></pre> 
  <h3>4.2.4 MySQL从节点配置</h3> 
  <pre><code class="prism language-powershell"><span class="token comment"># vim /opt/mysql-slave/conf/my.cnf</span>
<span class="token comment"># cat /opt/mysql-slave/conf/my.cnf</span>
<span class="token namespace">[client]</span>
default-character-<span class="token function">set</span>=utf8

<span class="token namespace">[mysql]</span>
default-character-<span class="token function">set</span>=utf8

<span class="token namespace">[mysqld]</span>
init_connect=<span class="token string">'SET collation_connection = utf8_unicode_ci'</span>
init_connect=<span class="token string">'SET NAMES utf8'</span>
character-<span class="token function">set-server</span>=utf8
collation-server=utf8_unicode_ci
<span class="token function">skip-character</span><span class="token operator">-</span><span class="token function">set-client</span><span class="token operator">-</span>handshake
<span class="token function">skip-name</span><span class="token operator">-</span>resolve

server_id=2
log-bin=mysql-bin
<span class="token function">read-only</span>=1
binlog-<span class="token keyword">do</span><span class="token operator">-</span>db=kubemsb_test

replicate-ignore-db=mysql
replicate-ignore-db=sys
replicate-ignore-db=information_schema
replicate-ignore-db=performance_schema
</code></pre> 
  <h3>4.2.5 master节点配置</h3> 
  <pre><code class="prism language-powershell"><span class="token comment"># mysql -h 192.168.255.157 -uroot -proot -P 3306</span>
Welcome to the MariaDB monitor<span class="token punctuation">.</span>  Commands <span class="token keyword">end</span> with <span class="token punctuation">;</span> or \g<span class="token punctuation">.</span>
Your MySQL connection id is 2
Server version: 5<span class="token punctuation">.</span>7<span class="token punctuation">.</span>37 MySQL Community Server <span class="token punctuation">(</span>GPL<span class="token punctuation">)</span>

Copyright <span class="token punctuation">(</span>c<span class="token punctuation">)</span> 2000<span class="token punctuation">,</span> 2018<span class="token punctuation">,</span> Oracle<span class="token punctuation">,</span> MariaDB Corporation Ab and others<span class="token punctuation">.</span>

<span class="token function">Type</span> <span class="token string">'help;'</span> or <span class="token string">'\h'</span> <span class="token keyword">for</span> help<span class="token punctuation">.</span> <span class="token function">Type</span> <span class="token string">'\c'</span> to clear the current input statement<span class="token punctuation">.</span>

MySQL <span class="token punctuation">[</span><span class="token punctuation">(</span>none<span class="token punctuation">)</span><span class="token punctuation">]</span>>
</code></pre> 
  <pre><code class="prism language-powershell">授权
MySQL <span class="token punctuation">[</span><span class="token punctuation">(</span>none<span class="token punctuation">)</span><span class="token punctuation">]</span>> grant replication slave on <span class="token operator">*</span><span class="token punctuation">.</span><span class="token operator">*</span> to <span class="token string">'backup'</span>@<span class="token string">'%'</span> identified by <span class="token string">'123456'</span><span class="token punctuation">;</span>
</code></pre> 
  <pre><code class="prism language-powershell">重启容器,使用配置生效
<span class="token comment"># docker restart mysql-master</span>
</code></pre> 
  <pre><code class="prism language-powershell">查看状态
MySQL <span class="token punctuation">[</span><span class="token punctuation">(</span>none<span class="token punctuation">)</span><span class="token punctuation">]</span>> show master status\G
<span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span> 1<span class="token punctuation">.</span> row <span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span>
             File: mysql-bin<span class="token punctuation">.</span>000001
         Position: 154
     Binlog_Do_DB: kubemsb_test
 Binlog_Ignore_DB:
Executed_Gtid_Set:
1 row in <span class="token function">set</span> <span class="token punctuation">(</span>0<span class="token punctuation">.</span>00 sec<span class="token punctuation">)</span>
</code></pre> 
  <h3>4.2.6 slave节点配置</h3> 
  <pre><code class="prism language-powershell"><span class="token comment"># docker restart mysql-slave</span>
</code></pre> 
  <pre><code class="prism language-powershell"><span class="token comment"># mysql -h 192.168.255.157 -uroot -proot -P 3307</span>
Welcome to the MariaDB monitor<span class="token punctuation">.</span>  Commands <span class="token keyword">end</span> with <span class="token punctuation">;</span> or \g<span class="token punctuation">.</span>
Your MySQL connection id is 2
Server version: 5<span class="token punctuation">.</span>7<span class="token punctuation">.</span>37 MySQL Community Server <span class="token punctuation">(</span>GPL<span class="token punctuation">)</span>

Copyright <span class="token punctuation">(</span>c<span class="token punctuation">)</span> 2000<span class="token punctuation">,</span> 2018<span class="token punctuation">,</span> Oracle<span class="token punctuation">,</span> MariaDB Corporation Ab and others<span class="token punctuation">.</span>

<span class="token function">Type</span> <span class="token string">'help;'</span> or <span class="token string">'\h'</span> <span class="token keyword">for</span> help<span class="token punctuation">.</span> <span class="token function">Type</span> <span class="token string">'\c'</span> to clear the current input statement<span class="token punctuation">.</span>

MySQL <span class="token punctuation">[</span><span class="token punctuation">(</span>none<span class="token punctuation">)</span><span class="token punctuation">]</span>>
</code></pre> 
  <pre><code class="prism language-powershell">MySQL <span class="token punctuation">[</span><span class="token punctuation">(</span>none<span class="token punctuation">)</span><span class="token punctuation">]</span>> change master to master_host=<span class="token string">'mysql-master'</span><span class="token punctuation">,</span> master_user=<span class="token string">'backup'</span><span class="token punctuation">,</span> master_password=<span class="token string">'123456'</span><span class="token punctuation">,</span> master_log_file=<span class="token string">'mysql-bin.000001'</span><span class="token punctuation">,</span> master_log_pos=154<span class="token punctuation">,</span> master_port=3306<span class="token punctuation">;</span>
</code></pre> 
  <pre><code class="prism language-powershell">MySQL <span class="token punctuation">[</span><span class="token punctuation">(</span>none<span class="token punctuation">)</span><span class="token punctuation">]</span>> <span class="token function">start</span> slave<span class="token punctuation">;</span>
</code></pre> 
  <pre><code class="prism language-powershell">MySQL <span class="token punctuation">[</span><span class="token punctuation">(</span>none<span class="token punctuation">)</span><span class="token punctuation">]</span>> show slave status\G
<span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span> 1<span class="token punctuation">.</span> row <span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span><span class="token operator">*</span>
               Slave_IO_State: Waiting <span class="token keyword">for</span> master to send event
                  Master_Host: mysql-master
                  Master_User: backup
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin<span class="token punctuation">.</span>000001
          Read_Master_Log_Pos: 154
               Relay_Log_File: e0872f94c377-relay-bin<span class="token punctuation">.</span>000002
                Relay_Log_Pos: 320
        Relay_Master_Log_File: mysql-bin<span class="token punctuation">.</span>000001
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes
              Replicate_Do_DB:
          Replicate_Ignore_DB: mysql<span class="token punctuation">,</span>sys<span class="token punctuation">,</span>information_schema<span class="token punctuation">,</span>performance_schema
           Replicate_Do_Table:
       Replicate_Ignore_Table:
      Replicate_Wild_Do_Table:
  Replicate_Wild_Ignore_Table:
                   Last_Errno: 0
                   Last_Error:
                 Skip_Counter: 0
          Exec_Master_Log_Pos: 154
              Relay_Log_Space: 534
              Until_Condition: None
               Until_Log_File:
                Until_Log_Pos: 0
           Master_SSL_Allowed: No
           Master_SSL_CA_File:
           Master_SSL_CA_Path:
              Master_SSL_Cert:
            Master_SSL_Cipher:
               Master_SSL_Key:
        Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
                Last_IO_Errno: 0
                Last_IO_Error:
               Last_SQL_Errno: 0
               Last_SQL_Error:
  Replicate_Ignore_Server_Ids:
             Master_Server_Id: 1
                  Master_UUID: 0130b415-8b21-11ec-8982-0242ac110002
             Master_Info_File: <span class="token operator">/</span><span class="token keyword">var</span><span class="token operator">/</span>lib/mysql/master<span class="token punctuation">.</span>info
                    SQL_Delay: 0
          SQL_Remaining_Delay: NULL
      Slave_SQL_Running_State: Slave has read all relay log<span class="token punctuation">;</span> waiting <span class="token keyword">for</span> more updates
           Master_Retry_Count: 86400
                  Master_Bind:
      Last_IO_Error_Timestamp:
     Last_SQL_Error_Timestamp:
               Master_SSL_Crl:
           Master_SSL_Crlpath:
           Retrieved_Gtid_Set:
            Executed_Gtid_Set:
                Auto_Position: 0
         Replicate_Rewrite_DB:
                 Channel_Name:
           Master_TLS_Version:
1 row in <span class="token function">set</span> <span class="token punctuation">(</span>0<span class="token punctuation">.</span>00 sec<span class="token punctuation">)</span>
</code></pre> 
  <h3>4.2.7 验证MySQL集群可用性</h3> 
  <pre><code class="prism language-powershell">在MySQL Master节点添加kubemsb_test数据库
<span class="token comment"># mysql -h 192.168.255.157 -uroot -proot -P3306</span>

MySQL <span class="token punctuation">[</span><span class="token punctuation">(</span>none<span class="token punctuation">)</span><span class="token punctuation">]</span>> create database kubemsb_test<span class="token punctuation">;</span>
Query OK<span class="token punctuation">,</span> 1 row affected <span class="token punctuation">(</span>0<span class="token punctuation">.</span>00 sec<span class="token punctuation">)</span>

MySQL <span class="token punctuation">[</span><span class="token punctuation">(</span>none<span class="token punctuation">)</span><span class="token punctuation">]</span>> show databases<span class="token punctuation">;</span>
<span class="token operator">+</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">+</span>
<span class="token punctuation">|</span> Database           <span class="token punctuation">|</span>
<span class="token operator">+</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">+</span>
<span class="token punctuation">|</span> information_schema <span class="token punctuation">|</span>
<span class="token punctuation">|</span> kubemsb_test       <span class="token punctuation">|</span>     <span class="token punctuation">|</span>
<span class="token punctuation">|</span> mysql              <span class="token punctuation">|</span>
<span class="token punctuation">|</span> performance_schema <span class="token punctuation">|</span>
<span class="token punctuation">|</span> sys                <span class="token punctuation">|</span>
<span class="token operator">+</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">+</span>
6 rows in <span class="token function">set</span> <span class="token punctuation">(</span>0<span class="token punctuation">.</span>00 sec<span class="token punctuation">)</span>
</code></pre> 
  <pre><code class="prism language-powershell">在MySQL Slave节点查看同步情况
<span class="token comment"># mysql -h 192.168.255.157 -uroot -proot -P3307</span>

MySQL <span class="token punctuation">[</span><span class="token punctuation">(</span>none<span class="token punctuation">)</span><span class="token punctuation">]</span>> show databases<span class="token punctuation">;</span>
<span class="token operator">+</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">+</span>
<span class="token punctuation">|</span> Database           <span class="token punctuation">|</span>
<span class="token operator">+</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">+</span>
<span class="token punctuation">|</span> information_schema <span class="token punctuation">|</span>
<span class="token punctuation">|</span> kubemsb_test       <span class="token punctuation">|</span>
<span class="token punctuation">|</span> mysql              <span class="token punctuation">|</span>
<span class="token punctuation">|</span> performance_schema <span class="token punctuation">|</span>
<span class="token punctuation">|</span> sys                <span class="token punctuation">|</span>
<span class="token operator">+</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">--</span><span class="token operator">+</span>
5 rows in <span class="token function">set</span> <span class="token punctuation">(</span>0<span class="token punctuation">.</span>00 sec<span class="token punctuation">)</span>
</code></pre> 
  <h1>五、使用Docker容器实现Oracle部署</h1> 
  <h2>5.1 获取参考资料</h2> 
  <p><a href="http://img.e-com-net.com/image/info8/c864506e6ba14af0a242bb0cc32dcd93.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/c864506e6ba14af0a242bb0cc32dcd93.jpg" alt="【云原生】第五篇--Docker容器化部署企业级应用集群_第14张图片" width="650" height="512" style="border:1px solid black;"></a><br> <a href="http://img.e-com-net.com/image/info8/79318dfd2d7345459a431281a9108892.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/79318dfd2d7345459a431281a9108892.jpg" alt="【云原生】第五篇--Docker容器化部署企业级应用集群_第15张图片" width="650" height="295" style="border:1px solid black;"></a></p> 
  <h2>5.2 运行oracle容器</h2> 
  <pre><code class="prism language-powershell"><span class="token comment"># docker pull oracleinanutshell/oracle-xe-11g</span>
</code></pre> 
  <pre><code class="prism language-powershell"><span class="token comment"># docker run -h oracle --name oracle -d -p 49160:22 -p 49161:1521 -p 49162:8080 oracleinanutshell/oracle-xe-11g</span>
237db949020abf2cee12e3193fa8a34d9dfadaafd9d5604564668d4472abe0b2
</code></pre> 
  <pre><code class="prism language-powershell"><span class="token comment"># docker ps</span>
CONTAINER ID   IMAGE                             COMMAND                  CREATED         STATUS         PORTS                                                                                                                               NAMES
237db949020a   oracleinanutshell/oracle-xe-11g   <span class="token string">"/bin/sh -c '/usr/sb…"</span>   7 seconds ago   Up 4 seconds   0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0:49160->22/tcp<span class="token punctuation">,</span> :::49160->22/tcp<span class="token punctuation">,</span> 0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0:49161->1521/tcp<span class="token punctuation">,</span> :::49161->1521/tcp<span class="token punctuation">,</span> 0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0:49162->8080/tcp<span class="token punctuation">,</span> :::49162->8080/tcp   oracle
</code></pre> 
  <pre><code class="prism language-powershell">说明:
49160 为ssh端口
49161 为sqlplus端口
49162 为oem端口
</code></pre> 
  <pre><code class="prism language-powershell">oracle数据库连接信息
port:49161
sid:xe
username:system
password:oracle

SYS用户密码为:oracle
</code></pre> 
  <h2>5.3 下载客户端连接工具</h2> 
  <p>下载链接地址:https://www.oracle.com/tools/downloads/sqldev-downloads.html<br> <a href="http://img.e-com-net.com/image/info8/800f6300dc62443786b0729be62a82ca.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/800f6300dc62443786b0729be62a82ca.jpg" alt="【云原生】第五篇--Docker容器化部署企业级应用集群_第16张图片" width="650" height="285" style="border:1px solid black;"></a><br> <a href="http://img.e-com-net.com/image/info8/2acc91654a3c4e2d8ae0ca1c4ac76e85.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/2acc91654a3c4e2d8ae0ca1c4ac76e85.jpg" alt="【云原生】第五篇--Docker容器化部署企业级应用集群_第17张图片" width="118" height="122" style="border:1px solid black;"></a><br> <a href="http://img.e-com-net.com/image/info8/60754255ad5f4135963ab62284f35944.png" target="_blank"><img src="http://img.e-com-net.com/image/info8/60754255ad5f4135963ab62284f35944.png" alt="【云原生】第五篇--Docker容器化部署企业级应用集群_第18张图片" width="718" height="583" style="border:1px solid black;"></a><br> <a href="http://img.e-com-net.com/image/info8/8ca310faf27349fa92848c63882818a2.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/8ca310faf27349fa92848c63882818a2.jpg" alt="【云原生】第五篇--Docker容器化部署企业级应用集群_第19张图片" width="650" height="429" style="border:1px solid black;"></a><br> <a href="http://img.e-com-net.com/image/info8/1821f93dea7c4482900ee743b791f123.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/1821f93dea7c4482900ee743b791f123.jpg" alt="【云原生】第五篇--Docker容器化部署企业级应用集群_第20张图片" width="650" height="352" style="border:1px solid black;"></a><br> <a href="http://img.e-com-net.com/image/info8/de8e4849da8847eebff7550b85fbc481.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/de8e4849da8847eebff7550b85fbc481.jpg" alt="【云原生】第五篇--Docker容器化部署企业级应用集群_第21张图片" width="650" height="353" style="border:1px solid black;"></a><br> <a href="http://img.e-com-net.com/image/info8/ab3bace4ba004a92ab2d7520217fdf5e.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/ab3bace4ba004a92ab2d7520217fdf5e.jpg" alt="【云原生】第五篇--Docker容器化部署企业级应用集群_第22张图片" width="650" height="353" style="border:1px solid black;"></a><br> <a href="http://img.e-com-net.com/image/info8/859ddef102534f19bbf5e8cfb0f756e8.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/859ddef102534f19bbf5e8cfb0f756e8.jpg" alt="【云原生】第五篇--Docker容器化部署企业级应用集群_第23张图片" width="650" height="353" style="border:1px solid black;"></a><br> <a href="http://img.e-com-net.com/image/info8/de36150165c54d74aa1c689de5c96dee.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/de36150165c54d74aa1c689de5c96dee.jpg" alt="【云原生】第五篇--Docker容器化部署企业级应用集群_第24张图片" width="650" height="418" style="border:1px solid black;"></a><br> <a href="http://img.e-com-net.com/image/info8/26f2d710bbd1431f9e245f3135812027.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/26f2d710bbd1431f9e245f3135812027.jpg" alt="【云原生】第五篇--Docker容器化部署企业级应用集群_第25张图片" width="650" height="352" style="border:1px solid black;"></a></p> 
  <h1>六、使用Docker容器实现ElasticSearch+Kibana部署</h1> 
  <h2>6.1 获取参考资料</h2> 
  <h3>6.1.1 ES部署参考资料</h3> 
  <p><a href="http://img.e-com-net.com/image/info8/bf035d97f6134a9ab744f35ff06e84a1.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/bf035d97f6134a9ab744f35ff06e84a1.jpg" alt="【云原生】第五篇--Docker容器化部署企业级应用集群_第26张图片" width="579" height="605" style="border:1px solid black;"></a><br> <a href="http://img.e-com-net.com/image/info8/cd0921bb7a1a46e29bea0fc6b943db4a.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/cd0921bb7a1a46e29bea0fc6b943db4a.jpg" alt="【云原生】第五篇--Docker容器化部署企业级应用集群_第27张图片" width="650" height="233" style="border:1px solid black;"></a><br> <a href="http://img.e-com-net.com/image/info8/47d61bb50220454ba08824fb3c223c85.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/47d61bb50220454ba08824fb3c223c85.jpg" alt="【云原生】第五篇--Docker容器化部署企业级应用集群_第28张图片" width="650" height="293" style="border:1px solid black;"></a><br> <a href="http://img.e-com-net.com/image/info8/2edfcd761794431d889630b5da85449a.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/2edfcd761794431d889630b5da85449a.jpg" alt="【云原生】第五篇--Docker容器化部署企业级应用集群_第29张图片" width="650" height="328" style="border:1px solid black;"></a></p> 
  <h3>6.1.2 Kibana部署参考资料</h3> 
  <p><a href="http://img.e-com-net.com/image/info8/4afc85700e82462cae05aea6d322be4f.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/4afc85700e82462cae05aea6d322be4f.jpg" alt="【云原生】第五篇--Docker容器化部署企业级应用集群_第30张图片" width="631" height="598" style="border:1px solid black;"></a><br> <a href="http://img.e-com-net.com/image/info8/d6d92a060db8456d8e816935ee289d7c.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/d6d92a060db8456d8e816935ee289d7c.jpg" alt="【云原生】第五篇--Docker容器化部署企业级应用集群_第31张图片" width="650" height="238" style="border:1px solid black;"></a><br> <a href="http://img.e-com-net.com/image/info8/05bf1883fb084e238da75a3d405f6846.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/05bf1883fb084e238da75a3d405f6846.jpg" alt="【云原生】第五篇--Docker容器化部署企业级应用集群_第32张图片" width="650" height="179" style="border:1px solid black;"></a><br> <a href="http://img.e-com-net.com/image/info8/daafa4f34930418c8120087b357bc91b.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/daafa4f34930418c8120087b357bc91b.jpg" alt="【云原生】第五篇--Docker容器化部署企业级应用集群_第33张图片" width="650" height="351" style="border:1px solid black;"></a></p> 
  <h2>6.2 ES部署</h2> 
  <pre><code class="prism language-powershell"><span class="token comment"># docker pull elasticsearch:7.17.0</span>
</code></pre> 
  <pre><code class="prism language-powershell"><span class="token comment"># mkdir -p /opt/es/config</span>
<span class="token comment"># mkdir -p /opt/es/data</span>
</code></pre> 
  <pre><code class="prism language-powershell"><span class="token comment"># echo "http.host: 0.0.0.0" >> /opt/es/config/elasticsearch.yml</span>
</code></pre> 
  <pre><code class="prism language-powershell"><span class="token comment"># chmod -R 777 /opt/es/</span>
</code></pre> 
  <pre><code class="prism language-powershell"><span class="token comment"># docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \</span>
<span class="token operator">-</span>e <span class="token string">"discovery.type=single-node"</span> \
<span class="token operator">-</span>e ES_JAVA_OPTS=<span class="token string">"-Xms64m -Xmx512m"</span> \
<span class="token operator">-</span>v <span class="token operator">/</span>opt/es/config/elasticsearch<span class="token punctuation">.</span>yml:<span class="token operator">/</span>usr/share/elasticsearch/config/elasticsearch<span class="token punctuation">.</span>yml \
<span class="token operator">-</span>v <span class="token operator">/</span>opt/es/<span class="token keyword">data</span>:<span class="token operator">/</span>usr/share/elasticsearch/<span class="token keyword">data</span> \
<span class="token operator">-</span>v <span class="token operator">/</span>opt/es/plugins:<span class="token operator">/</span>usr/share/elasticsearch/plugins \
<span class="token operator">-</span>d elasticsearch:7<span class="token punctuation">.</span>17<span class="token punctuation">.</span>0
</code></pre> 
  <pre><code class="prism language-powershell"><span class="token comment"># docker ps</span>
CONTAINER ID   IMAGE                 COMMAND                  CREATED          STATUS          PORTS                                                                                  NAMES
e1c306e6e5a3   elasticsearch:7<span class="token punctuation">.</span>17<span class="token punctuation">.</span>0   <span class="token string">"/bin/tini -- /usr/l…"</span>   22 seconds ago   Up 20 seconds   0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0:9200->9200/tcp<span class="token punctuation">,</span> :::9200->9200/tcp<span class="token punctuation">,</span> 0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0:9300->9300/tcp<span class="token punctuation">,</span> :::9300->9300/tcp   elasticsearch
</code></pre> 
  <p><a href="http://img.e-com-net.com/image/info8/56650e953b2545a3a5d973ae85ce84ec.png" target="_blank"><img src="http://img.e-com-net.com/image/info8/56650e953b2545a3a5d973ae85ce84ec.png" alt="【云原生】第五篇--Docker容器化部署企业级应用集群_第34张图片" width="581" height="376" style="border:1px solid black;"></a></p> 
  <h2>6.3 Kibana部署</h2> 
  <pre><code class="prism language-powershell"><span class="token comment"># docker pull kibana:7.17.0</span>
</code></pre> 
  <pre><code class="prism language-powershell"><span class="token comment"># docker run --name kibana -e ELASTICSEARCH_HOSTS=http://192.168.255.157:9200 -p 5601:5601 \</span>
<span class="token operator">-</span>d kibana:7<span class="token punctuation">.</span>17<span class="token punctuation">.</span>0
</code></pre> 
  <pre><code class="prism language-powershell"><span class="token comment"># docker ps</span>
CONTAINER ID   IMAGE                  COMMAND                  CREATED         STATUS         PORTS                                                                                  NAMES
fb60e73f9cd5   kibana:7<span class="token punctuation">.</span>17<span class="token punctuation">.</span>0          <span class="token string">"/bin/tini -- /usr/l…"</span>   2 minutes ago   Up 2 minutes   0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0:5601->5601/tcp<span class="token punctuation">,</span> :::5601->5601/tcp                                              kibana
</code></pre> 
  <p><a href="http://img.e-com-net.com/image/info8/746067e05f104f199d7d67cd710ef2ff.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/746067e05f104f199d7d67cd710ef2ff.jpg" alt="【云原生】第五篇--Docker容器化部署企业级应用集群_第35张图片" width="650" height="493" style="border:1px solid black;"></a></p> 
  <h1>七、使用Docker容器实现Redis部署</h1> 
  <h2>7.1 获取参考资料</h2> 
  <p><a href="http://img.e-com-net.com/image/info8/dfc8b4ee4abb4a5f9d3bade1b01cf85c.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/dfc8b4ee4abb4a5f9d3bade1b01cf85c.jpg" alt="【云原生】第五篇--Docker容器化部署企业级应用集群_第36张图片" width="650" height="512" style="border:1px solid black;"></a><br> <a href="http://img.e-com-net.com/image/info8/3f9af5315ee240a9ba61a9d22ed82ca8.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/3f9af5315ee240a9ba61a9d22ed82ca8.jpg" alt="【云原生】第五篇--Docker容器化部署企业级应用集群_第37张图片" width="650" height="307" style="border:1px solid black;"></a><br> <a href="http://img.e-com-net.com/image/info8/53d12db9604a42758663df8b4eb2970f.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/53d12db9604a42758663df8b4eb2970f.jpg" alt="【云原生】第五篇--Docker容器化部署企业级应用集群_第38张图片" width="650" height="374" style="border:1px solid black;"></a><br> <a href="http://img.e-com-net.com/image/info8/7d7325f849db4dff91c8e28380c1cf56.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/7d7325f849db4dff91c8e28380c1cf56.jpg" alt="【云原生】第五篇--Docker容器化部署企业级应用集群_第39张图片" width="650" height="332" style="border:1px solid black;"></a></p> 
  <h2>7.2 运行Redis容器</h2> 
  <pre><code class="prism language-powershell"><span class="token comment"># mkdir -p /opt/redis/conf</span>
</code></pre> 
  <pre><code class="prism language-powershell"><span class="token comment"># touch /opt/redis/conf/redis.conf</span>
</code></pre> 
  <pre><code class="prism language-powershell"><span class="token comment"># docker run -p 6379:6379 --name redis -v /opt/redis/data:/data \</span>
<span class="token operator">-</span>v <span class="token operator">/</span>opt/redis/conf:<span class="token operator">/</span>etc/redis \
<span class="token operator">-</span>d redis redis-server <span class="token operator">/</span>etc/redis/redis<span class="token punctuation">.</span>conf
</code></pre> 
  <pre><code class="prism language-powershell"><span class="token comment"># docker ps</span>
CONTAINER ID   IMAGE                  COMMAND                  CREATED          STATUS          PORTS                                                                                  NAMES
9bd2b39cd92a   redis                  <span class="token string">"docker-entrypoint.s…"</span>   44 seconds ago   Up 42 seconds   0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0:6379->6379/tcp<span class="token punctuation">,</span> :::6379->6379/tcp                                              redis
</code></pre> 
  <h2>7.3 验证</h2> 
  <pre><code class="prism language-powershell"><span class="token comment"># wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo</span>
</code></pre> 
  <pre><code class="prism language-powershell"><span class="token comment"># yum -y install redis</span>
</code></pre> 
  <pre><code class="prism language-powershell"><span class="token comment"># redis-cli -h 192.168.255.157 -p 6379</span>

192<span class="token punctuation">.</span>168<span class="token punctuation">.</span>255<span class="token punctuation">.</span>157:6379> <span class="token function">set</span> test1 a
OK
192<span class="token punctuation">.</span>168<span class="token punctuation">.</span>255<span class="token punctuation">.</span>157:6379> get test1
<span class="token string">"a"</span>
</code></pre> 
  <h2>7.4 Redis集群</h2> 
  <p>安装redis-cluster;3主3从方式,从为了同步备份,主进行slot数据分片</p> 
  <pre><code class="prism language-powershell">编辑运行多个redis容器脚本文件
<span class="token comment"># vim redis-cluster.sh</span>
<span class="token comment"># cat redis-cluster.sh</span>
<span class="token keyword">for</span> port in $<span class="token punctuation">(</span>seq 8001 8006<span class="token punctuation">)</span><span class="token punctuation">;</span> \
<span class="token keyword">do</span> \
mkdir <span class="token operator">-</span>p <span class="token operator">/</span>mydata/redis/node-$<span class="token punctuation">{</span>port<span class="token punctuation">}</span><span class="token operator">/</span>conf
touch <span class="token operator">/</span>mydata/redis/node-$<span class="token punctuation">{</span>port<span class="token punctuation">}</span><span class="token operator">/</span>conf/redis<span class="token punctuation">.</span>conf
<span class="token function">cat</span> << EOF ><span class="token operator">/</span>mydata/redis/node-$<span class="token punctuation">{</span>port<span class="token punctuation">}</span><span class="token operator">/</span>conf/redis<span class="token punctuation">.</span>conf
port $<span class="token punctuation">{</span>port<span class="token punctuation">}</span>
cluster-enabled yes
cluster-config-file nodes<span class="token punctuation">.</span>conf
cluster-node-timeout 5000
cluster-announce-ip 192<span class="token punctuation">.</span>168<span class="token punctuation">.</span>255<span class="token punctuation">.</span>157
cluster-announce-port $<span class="token punctuation">{</span>port<span class="token punctuation">}</span>
cluster-announce-bus-port 1$<span class="token punctuation">{</span>port<span class="token punctuation">}</span>
appendonly yes
EOF
docker run <span class="token operator">-</span>p $<span class="token punctuation">{</span>port<span class="token punctuation">}</span>:$<span class="token punctuation">{</span>port<span class="token punctuation">}</span> <span class="token operator">-</span>p 1$<span class="token punctuation">{</span>port<span class="token punctuation">}</span>:1$<span class="token punctuation">{</span>port<span class="token punctuation">}</span> <span class="token operator">--</span>name redis-$<span class="token punctuation">{</span>port<span class="token punctuation">}</span> \
<span class="token operator">-</span>v <span class="token operator">/</span>mydata/redis/node-$<span class="token punctuation">{</span>port<span class="token punctuation">}</span><span class="token operator">/</span><span class="token keyword">data</span>:<span class="token operator">/</span><span class="token keyword">data</span> \
<span class="token operator">-</span>v <span class="token operator">/</span>mydata/redis/node-$<span class="token punctuation">{</span>port<span class="token punctuation">}</span><span class="token operator">/</span>conf/redis<span class="token punctuation">.</span>conf:<span class="token operator">/</span>etc/redis/redis<span class="token punctuation">.</span>conf \
<span class="token operator">-</span>d redis:5<span class="token punctuation">.</span>0<span class="token punctuation">.</span>7 redis-server <span class="token operator">/</span>etc/redis/redis<span class="token punctuation">.</span>conf<span class="token punctuation">;</span> \
done
</code></pre> 
  <pre><code class="prism language-powershell">执行脚本
<span class="token comment"># sh redis-cluster.sh</span>
</code></pre> 
  <pre><code class="prism language-powershell">查看已运行容器
<span class="token comment"># docker ps</span>
CONTAINER ID   IMAGE         COMMAND                  CREATED              STATUS              PORTS                                                                                                NAMES
8d53864a98ce   redis:5<span class="token punctuation">.</span>0<span class="token punctuation">.</span>7   <span class="token string">"docker-entrypoint.s…"</span>   About a minute ago   Up About a minute   0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0:8006->8006/tcp<span class="token punctuation">,</span> :::8006->8006/tcp<span class="token punctuation">,</span> 6379/tcp<span class="token punctuation">,</span> 0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0:18006->18006/tcp<span class="token punctuation">,</span> :::18006->18006/tcp   redis-8006
e2b5da0f0605   redis:5<span class="token punctuation">.</span>0<span class="token punctuation">.</span>7   <span class="token string">"docker-entrypoint.s…"</span>   2 minutes ago        Up About a minute   0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0:8005->8005/tcp<span class="token punctuation">,</span> :::8005->8005/tcp<span class="token punctuation">,</span> 6379/tcp<span class="token punctuation">,</span> 0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0:18005->18005/tcp<span class="token punctuation">,</span> :::18005->18005/tcp   redis-8005
70e8e8f15aea   redis:5<span class="token punctuation">.</span>0<span class="token punctuation">.</span>7   <span class="token string">"docker-entrypoint.s…"</span>   2 minutes ago        Up 2 minutes        0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0:8004->8004/tcp<span class="token punctuation">,</span> :::8004->8004/tcp<span class="token punctuation">,</span> 6379/tcp<span class="token punctuation">,</span> 0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0:18004->18004/tcp<span class="token punctuation">,</span> :::18004->18004/tcp   redis-8004
dff8e4bf02b4   redis:5<span class="token punctuation">.</span>0<span class="token punctuation">.</span>7   <span class="token string">"docker-entrypoint.s…"</span>   2 minutes ago        Up 2 minutes        0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0:8003->8003/tcp<span class="token punctuation">,</span> :::8003->8003/tcp<span class="token punctuation">,</span> 6379/tcp<span class="token punctuation">,</span> 0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0:18003->18003/tcp<span class="token punctuation">,</span> :::18003->18003/tcp   redis-8003
c34dc4c423ef   redis:5<span class="token punctuation">.</span>0<span class="token punctuation">.</span>7   <span class="token string">"docker-entrypoint.s…"</span>   2 minutes ago        Up 2 minutes        0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0:8002->8002/tcp<span class="token punctuation">,</span> :::8002->8002/tcp<span class="token punctuation">,</span> 6379/tcp<span class="token punctuation">,</span> 0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0:18002->18002/tcp<span class="token punctuation">,</span> :::18002->18002/tcp   redis-8002
b8cb5feffb43   redis:5<span class="token punctuation">.</span>0<span class="token punctuation">.</span>7   <span class="token string">"docker-entrypoint.s…"</span>   2 minutes ago        Up 2 minutes        0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0:8001->8001/tcp<span class="token punctuation">,</span> :::8001->8001/tcp<span class="token punctuation">,</span> 6379/tcp<span class="token punctuation">,</span> 0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0:18001->18001/tcp<span class="token punctuation">,</span> :::18001->18001/tcp   redis-8001
</code></pre> 
  <pre><code class="prism language-powershell">登录redis容器
<span class="token comment"># docker exec -it redis-8001 bash</span>
root@b8cb5feffb43:<span class="token operator">/</span><span class="token keyword">data</span><span class="token comment">#</span>
</code></pre> 
  <pre><code class="prism language-powershell">创建redis-cluster
root@b8cb5feffb43:<span class="token operator">/</span><span class="token keyword">data</span><span class="token comment"># redis-cli --cluster create 192.168.255.157:8001 192.168.255.157:8002 192.168.255.157:8003 192.168.255.157:8004 192.168.255.157:8005 192.168.255.157:8006 --cluster-replicas 1</span>
</code></pre> 
  <pre><code class="prism language-powershell">输出:
>>> Performing hash slots allocation on 6 nodes<span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span>
Master<span class="token punctuation">[</span>0<span class="token punctuation">]</span> <span class="token operator">-</span>> Slots 0 <span class="token operator">-</span> 5460
Master<span class="token punctuation">[</span>1<span class="token punctuation">]</span> <span class="token operator">-</span>> Slots 5461 <span class="token operator">-</span> 10922
Master<span class="token punctuation">[</span>2<span class="token punctuation">]</span> <span class="token operator">-</span>> Slots 10923 <span class="token operator">-</span> 16383
Adding replica 192<span class="token punctuation">.</span>168<span class="token punctuation">.</span>255<span class="token punctuation">.</span>157:8005 to 192<span class="token punctuation">.</span>168<span class="token punctuation">.</span>255<span class="token punctuation">.</span>157:8001
Adding replica 192<span class="token punctuation">.</span>168<span class="token punctuation">.</span>255<span class="token punctuation">.</span>157:8006 to 192<span class="token punctuation">.</span>168<span class="token punctuation">.</span>255<span class="token punctuation">.</span>157:8002
Adding replica 192<span class="token punctuation">.</span>168<span class="token punctuation">.</span>255<span class="token punctuation">.</span>157:8004 to 192<span class="token punctuation">.</span>168<span class="token punctuation">.</span>255<span class="token punctuation">.</span>157:8003
>>> Trying to optimize slaves allocation <span class="token keyword">for</span> anti-affinity
<span class="token namespace">[WARNING]</span> Some slaves are in the same host as their master
M: abd07f1a2679fe77558bad3ff4b7ab70ec41efa5 192<span class="token punctuation">.</span>168<span class="token punctuation">.</span>255<span class="token punctuation">.</span>157:8001
   slots:<span class="token punctuation">[</span>0-5460<span class="token punctuation">]</span> <span class="token punctuation">(</span>5461 slots<span class="token punctuation">)</span> master
M: 40e69202bb3eab13a8157c33da6240bb31f2fd6f 192<span class="token punctuation">.</span>168<span class="token punctuation">.</span>255<span class="token punctuation">.</span>157:8002
   slots:<span class="token punctuation">[</span>5461-10922<span class="token punctuation">]</span> <span class="token punctuation">(</span>5462 slots<span class="token punctuation">)</span> master
M: 9a927abf3c2982ba9ffdb29176fc8ffa77a2cf03 192<span class="token punctuation">.</span>168<span class="token punctuation">.</span>255<span class="token punctuation">.</span>157:8003
   slots:<span class="token punctuation">[</span>10923-16383<span class="token punctuation">]</span> <span class="token punctuation">(</span>5461 slots<span class="token punctuation">)</span> master
S: 81d0a4056328830a555fcd75cf523d4c9d52205c 192<span class="token punctuation">.</span>168<span class="token punctuation">.</span>255<span class="token punctuation">.</span>157:8004
   replicates 9a927abf3c2982ba9ffdb29176fc8ffa77a2cf03
S: 8121a28519e5b52e4817913aa3969d9431bb68af 192<span class="token punctuation">.</span>168<span class="token punctuation">.</span>255<span class="token punctuation">.</span>157:8005
   replicates abd07f1a2679fe77558bad3ff4b7ab70ec41efa5
S: 3a8dd5343c0b8f5580bc44f6b3bb5b4371d4dde5 192<span class="token punctuation">.</span>168<span class="token punctuation">.</span>255<span class="token punctuation">.</span>157:8006
   replicates 40e69202bb3eab13a8157c33da6240bb31f2fd6f
Can I <span class="token function">set</span> the above configuration? <span class="token punctuation">(</span><span class="token function">type</span> <span class="token string">'yes'</span> to accept<span class="token punctuation">)</span>: yes 输入yes
>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting <span class="token keyword">for</span> the cluster to join
<span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span>
>>> Performing Cluster Check <span class="token punctuation">(</span><span class="token keyword">using</span> node 192<span class="token punctuation">.</span>168<span class="token punctuation">.</span>255<span class="token punctuation">.</span>157:8001<span class="token punctuation">)</span>
M: abd07f1a2679fe77558bad3ff4b7ab70ec41efa5 192<span class="token punctuation">.</span>168<span class="token punctuation">.</span>255<span class="token punctuation">.</span>157:8001
   slots:<span class="token punctuation">[</span>0-5460<span class="token punctuation">]</span> <span class="token punctuation">(</span>5461 slots<span class="token punctuation">)</span> master
   1 additional replica<span class="token punctuation">(</span>s<span class="token punctuation">)</span>
S: 81d0a4056328830a555fcd75cf523d4c9d52205c 192<span class="token punctuation">.</span>168<span class="token punctuation">.</span>255<span class="token punctuation">.</span>157:8004
   slots: <span class="token punctuation">(</span>0 slots<span class="token punctuation">)</span> slave
   replicates 9a927abf3c2982ba9ffdb29176fc8ffa77a2cf03
M: 40e69202bb3eab13a8157c33da6240bb31f2fd6f 192<span class="token punctuation">.</span>168<span class="token punctuation">.</span>255<span class="token punctuation">.</span>157:8002
   slots:<span class="token punctuation">[</span>5461-10922<span class="token punctuation">]</span> <span class="token punctuation">(</span>5462 slots<span class="token punctuation">)</span> master
   1 additional replica<span class="token punctuation">(</span>s<span class="token punctuation">)</span>
S: 8121a28519e5b52e4817913aa3969d9431bb68af 192<span class="token punctuation">.</span>168<span class="token punctuation">.</span>255<span class="token punctuation">.</span>157:8005
   slots: <span class="token punctuation">(</span>0 slots<span class="token punctuation">)</span> slave
   replicates abd07f1a2679fe77558bad3ff4b7ab70ec41efa5
M: 9a927abf3c2982ba9ffdb29176fc8ffa77a2cf03 192<span class="token punctuation">.</span>168<span class="token punctuation">.</span>255<span class="token punctuation">.</span>157:8003
   slots:<span class="token punctuation">[</span>10923-16383<span class="token punctuation">]</span> <span class="token punctuation">(</span>5461 slots<span class="token punctuation">)</span> master
   1 additional replica<span class="token punctuation">(</span>s<span class="token punctuation">)</span>
S: 3a8dd5343c0b8f5580bc44f6b3bb5b4371d4dde5 192<span class="token punctuation">.</span>168<span class="token punctuation">.</span>255<span class="token punctuation">.</span>157:8006
   slots: <span class="token punctuation">(</span>0 slots<span class="token punctuation">)</span> slave
   replicates 40e69202bb3eab13a8157c33da6240bb31f2fd6f
<span class="token namespace">[OK]</span> All nodes agree about slots configuration<span class="token punctuation">.</span>
>>> Check <span class="token keyword">for</span> open slots<span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span>
>>> Check slots coverage<span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span>
<span class="token namespace">[OK]</span> All 16384 slots covered<span class="token punctuation">.</span>
</code></pre> 
  <h1>八、使用Docker容器实现RabbitMQ部署</h1> 
  <h2>8.1 获取参考资料</h2> 
  <p><a href="http://img.e-com-net.com/image/info8/22ac8d29eb7d46cb86e683091fabdb49.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/22ac8d29eb7d46cb86e683091fabdb49.jpg" alt="【云原生】第五篇--Docker容器化部署企业级应用集群_第40张图片" width="650" height="537" style="border:1px solid black;"></a><br> <a href="http://img.e-com-net.com/image/info8/9c1b1d1193d44234a4ed5e444759ff40.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/9c1b1d1193d44234a4ed5e444759ff40.jpg" alt="【云原生】第五篇--Docker容器化部署企业级应用集群_第41张图片" width="650" height="279" style="border:1px solid black;"></a><br> <a href="http://img.e-com-net.com/image/info8/07f6797937af4a03ab23e3f59a27411c.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/07f6797937af4a03ab23e3f59a27411c.jpg" alt="【云原生】第五篇--Docker容器化部署企业级应用集群_第42张图片" width="650" height="369" style="border:1px solid black;"></a><br> <a href="http://img.e-com-net.com/image/info8/fe63e0010df146558a747f6ae67864eb.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/fe63e0010df146558a747f6ae67864eb.jpg" alt="【云原生】第五篇--Docker容器化部署企业级应用集群_第43张图片" width="650" height="355" style="border:1px solid black;"></a></p> 
  <h2>8.2 部署RabbitMQ</h2> 
  <blockquote> 
   <p>部署带管理控制台的RabbitMQ</p> 
  </blockquote> 
  <pre><code class="prism language-powershell"><span class="token comment"># docker run -d --name rabbitmq -p 5671:5671 -p 5672:5672 -p 4369:4369 -p 25672:25672 -p 15671:15671 -p 15672:15672 -v /opt/rabbitmq:/var/lib/rabbitmq rabbitmq:management</span>
</code></pre> 
  <pre><code class="prism language-powershell"><span class="token comment"># docker ps</span>
CONTAINER ID   IMAGE                 COMMAND                  CREATED          STATUS         PORTS                                                                                                                                                                                                                                             NAMES
97d28093faa4   rabbitmq:management   <span class="token string">"docker-entrypoint.s…"</span>   11 seconds ago   Up 6 seconds   0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0:4369->4369/tcp<span class="token punctuation">,</span> :::4369->4369/tcp<span class="token punctuation">,</span> 0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0:5671-5672->5671-5672/tcp<span class="token punctuation">,</span> :::5671-5672->5671-5672/tcp<span class="token punctuation">,</span> 0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0:15671-15672->15671-15672/tcp<span class="token punctuation">,</span> :::15671-15672->15671-15672/tcp<span class="token punctuation">,</span> 0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0:25672->25672/tcp<span class="token punctuation">,</span> :::25672->25672/tcp<span class="token punctuation">,</span> 15691-15692/tcp   rabbitmq
</code></pre> 
  <pre><code class="prism language-powershell">端口说明:
4369<span class="token punctuation">,</span> 25672 <span class="token punctuation">(</span>Erlang发现&集群端口<span class="token punctuation">)</span>
5672<span class="token punctuation">,</span> 5671 <span class="token punctuation">(</span>AMQP端口<span class="token punctuation">)</span>
15672 <span class="token punctuation">(</span>web管理后台端口<span class="token punctuation">)</span>
61613<span class="token punctuation">,</span> 61614 <span class="token punctuation">(</span>STOMP协议端口<span class="token punctuation">)</span>
1883<span class="token punctuation">,</span> 8883 <span class="token punctuation">(</span>MQTT协议端口<span class="token punctuation">)</span>
</code></pre> 
  <p><a href="http://img.e-com-net.com/image/info8/3c5fb17b80b2400588b1d3493d7e9b83.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/3c5fb17b80b2400588b1d3493d7e9b83.jpg" alt="【云原生】第五篇--Docker容器化部署企业级应用集群_第44张图片" width="650" height="177" style="border:1px solid black;"></a><br> <a href="http://img.e-com-net.com/image/info8/509cf6a8c64c4e31a617119cc26a09f1.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/509cf6a8c64c4e31a617119cc26a09f1.jpg" alt="【云原生】第五篇--Docker容器化部署企业级应用集群_第45张图片" width="650" height="198" style="border:1px solid black;"></a><br> <a href="http://img.e-com-net.com/image/info8/d9cd4f0d858a44e6b16fcf4c7f68c4e7.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/d9cd4f0d858a44e6b16fcf4c7f68c4e7.jpg" alt="【云原生】第五篇--Docker容器化部署企业级应用集群_第46张图片" width="650" height="359" style="border:1px solid black;"></a></p> 
 </div> 
</div>
                            </div>
                        </div>
                    </div>
                    <!--PC和WAP自适应版-->
                    <div id="SOHUCS" sid="1547048524372316160"></div>
                    <script type="text/javascript" src="/views/front/js/chanyan.js"></script>
                    <!-- 文章页-底部 动态广告位 -->
                    <div class="youdao-fixed-ad" id="detail_ad_bottom"></div>
                </div>
                <div class="col-md-3">
                    <div class="row" id="ad">
                        <!-- 文章页-右侧1 动态广告位 -->
                        <div id="right-1" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
                            <div class="youdao-fixed-ad" id="detail_ad_1"> </div>
                        </div>
                        <!-- 文章页-右侧2 动态广告位 -->
                        <div id="right-2" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
                            <div class="youdao-fixed-ad" id="detail_ad_2"></div>
                        </div>
                        <!-- 文章页-右侧3 动态广告位 -->
                        <div id="right-3" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
                            <div class="youdao-fixed-ad" id="detail_ad_3"></div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <div class="container">
        <h4 class="pt20 mb15 mt0 border-top">你可能感兴趣的:(云原生,docker,容器,云原生)</h4>
        <div id="paradigm-article-related">
            <div class="recommend-post mb30">
                <ul class="widget-links">
                    <li><a href="/article/1903956025778696192.htm"
                           title="使用Docker部署RabbitMQ" target="_blank">使用Docker部署RabbitMQ</a>
                        <span class="text-muted">九思x</span>
<a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/rabbitmq/1.htm">rabbitmq</a><a class="tag" taget="_blank" href="/search/%E5%AE%B9%E5%99%A8/1.htm">容器</a>
                        <div>第一步:安装RabbitMQ#1.拉取镜像dockerpullrabbitmq:3.12.0-management#2.启动容器(开放端口+数据持久化)dockerrun-d\--name=share_rabbitmq\-p5672:5672\#AMQP协议端口-p15672:15672\#管理界面端口-v/opt/rabbitmq/data:/var/lib/rabbitmq\#数据持久化目录r</div>
                    </li>
                    <li><a href="/article/1903954008637239296.htm"
                           title="Spring Boot拦截器(Interceptor)与过滤器(Filter)深度解析:区别、实现与实战指南" target="_blank">Spring Boot拦截器(Interceptor)与过滤器(Filter)深度解析:区别、实现与实战指南</a>
                        <span class="text-muted">QQ828929QQ</span>
<a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/boot/1.htm">boot</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                        <div>SpringBoot拦截器(Interceptor)与过滤器(Filter)深度解析:区别、实现与实战指南一、核心概念对比1.本质区别维度过滤器(Filter)拦截器(Interceptor)规范层级Servlet规范(J2EE标准)SpringMVC框架机制作用范围所有请求(包括静态资源)只处理Controller请求依赖关系不依赖Spring容器完全集成SpringIOC容器执行顺序最先执行(</div>
                    </li>
                    <li><a href="/article/1903950224913657856.htm"
                           title="Kubernets命名空间" target="_blank">Kubernets命名空间</a>
                        <span class="text-muted">忍界英雄</span>
<a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/k8s/1.htm">k8s</a>
                        <div>Kubernets命名空间什么是命名空间命名空间(Namespace)是一种用于组织和隔离Kubernetes资源的机制。在Kubernetes集群中,命名空间将物理集群划分为多个逻辑部分,每个部分都拥有自己的一组资源(如Pod、Service、ConfigMap等),彼此之间互不干扰,实现资源的隔离管理。不仅Kubernetes具备命名空间的概念,在Docker等容器技术中,也通过命名空间(Na</div>
                    </li>
                    <li><a href="/article/1903943907293589504.htm"
                           title="操作系统高频(一)线程与进程" target="_blank">操作系统高频(一)线程与进程</a>
                        <span class="text-muted">HUZ_小Z</span>
<a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/1.htm">操作系统</a><a class="tag" taget="_blank" href="/search/%E8%AF%BE%E7%A8%8B%E8%AE%BE%E8%AE%A1/1.htm">课程设计</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a><a class="tag" taget="_blank" href="/search/%E7%BB%8F%E9%AA%8C%E5%88%86%E4%BA%AB/1.htm">经验分享</a>
                        <div>操作系统高频(一)线程与进程1.什么是线程?进程,线程,彼此有什么区别?⭐⭐⭐进程进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配的基本单位。是操作系统结构的基础。进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。线程线程是操作系统最小的运算调度单位。线程包含在进程中,是进程中实际执行任务的单位。在一些操作系统中,线程也被称为轻量级进程</div>
                    </li>
                    <li><a href="/article/1903936720018141184.htm"
                           title="sealos自动部署k8s集群" target="_blank">sealos自动部署k8s集群</a>
                        <span class="text-muted">SilentCodeY</span>
<a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a><a class="tag" taget="_blank" href="/search/%E4%BA%91%E5%8E%9F%E7%94%9F/1.htm">云原生</a><a class="tag" taget="_blank" href="/search/kubernetes/1.htm">kubernetes</a><a class="tag" taget="_blank" href="/search/%E5%AE%B9%E5%99%A8/1.htm">容器</a>
                        <div>官网:安装K8s集群|Sealos:专为云原生开发打造的以K8s为内核的云操作系统1、sealos工具下载二进制自动下载VERSION=`curl-shttps://api.github.com/repos/labring/sealos/releases/latest|grep-oE'"tag_name":"[^"]+"'|head-n1|cut-d'"'-f4`curl-sfLhttps://m</div>
                    </li>
                    <li><a href="/article/1903932806526988288.htm"
                           title="运维面试题(七)" target="_blank">运维面试题(七)</a>
                        <span class="text-muted">a_j58</span>
<a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a>
                        <div>1.statefulset用来管理有状态的应用程序,有状态是什么意思?每一个pod都有一个固定的网络标识符,在整个生命周期中不会改变。每个实例都可以拥有自己的持久化存储卷,即使容器被删除并重新创建,存储卷仍然存在。StatefulSet确保了Pod按照顺序启动、更新和终止。2.主键是什么,它与索引有什么关系?主键确保表中每一行数据都可以被唯一标识,避免数据重复。主键通常会自动创建一个唯一索引,加快</div>
                    </li>
                    <li><a href="/article/1903930539040108544.htm"
                           title="云原生工程师必修课:如何揪出“假忙真闲”的应用元凶" target="_blank">云原生工程师必修课:如何揪出“假忙真闲”的应用元凶</a>
                        <span class="text-muted">YAMLMaster</span>
<a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95%E9%A2%98/1.htm">面试题</a><a class="tag" taget="_blank" href="/search/kubernetes/1.htm">kubernetes</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4%E5%BC%80%E5%8F%91/1.htm">运维开发</a><a class="tag" taget="_blank" href="/search/devops/1.htm">devops</a>
                        <div>Tagamanent,Spain引言这是一个再经典不过的面试题了,希望大家能学到精髓。开始介绍在分布式系统和高并发场景中,高负载(HighLoad)与低使用率(LowUtilization)的共存矛盾是运维和开发者的常见挑战。这种问题往往隐蔽性强,传统监控指标难以直接定位根因。本文从系统层、应用层、架构层多维度拆解,提供一套完整的排查与优化方法论。核心概念厘清•负载(Load):系统当前待处理任务</div>
                    </li>
                    <li><a href="/article/1903929655296061440.htm"
                           title="k8s运维 设置Pod实现JVM内存根据容器内存动态调整" target="_blank">k8s运维 设置Pod实现JVM内存根据容器内存动态调整</a>
                        <span class="text-muted">风行無痕</span>
<a class="tag" taget="_blank" href="/search/K8S/1.htm">K8S</a><a class="tag" taget="_blank" href="/search/kubernetes/1.htm">kubernetes</a><a class="tag" taget="_blank" href="/search/jvm/1.htm">jvm</a><a class="tag" taget="_blank" href="/search/%E5%AE%B9%E5%99%A8/1.htm">容器</a>
                        <div>一、实现方式推荐方案:利用JVM容器感知特性,按比例动态分配。适用场景‌:动态根据Pod内存限制自动分配堆内存,无需硬编码参数Java要求:Java8u191+或Java11+Java8u191+或Java11+支持通过-XX:InitialRAMPercentage替代-Xms,根据容器内存限制自动计算堆内存。在容器环境变量中配置-XX:MaxRAMPercentage=75.0,使JVM根据容</div>
                    </li>
                    <li><a href="/article/1903914891757023232.htm"
                           title="微服务即时通信系统---(五)框架学习" target="_blank">微服务即时通信系统---(五)框架学习</a>
                        <span class="text-muted">YangZ123123</span>
<a class="tag" taget="_blank" href="/search/%E5%BE%AE%E6%9C%8D%E5%8A%A1%E5%8D%B3%E6%97%B6%E9%80%9A%E4%BF%A1%E7%B3%BB%E7%BB%9F/1.htm">微服务即时通信系统</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/%E5%BE%AE%E6%9C%8D%E5%8A%A1/1.htm">微服务</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a>
                        <div>目录ODB介绍安装build2安装odb-compiler安装ODB运行时库安装mysql和客户端开发包安装boostprofile库安装总体打包安装总体卸载总体升级头文件包含和编译时指明库ODB常见操作介绍类型映射ODB编程类与接口介绍mysql连接池对象类mysql客户端操作句柄类mysql事务操作类针对可能为空的字段封装的类似于智能指针的类型针对查询结果所封装的容器类和条件类mysql操作句</div>
                    </li>
                    <li><a href="/article/1903910602888245248.htm"
                           title="阿里云在使用 Docker 过程中踩过的坑" target="_blank">阿里云在使用 Docker 过程中踩过的坑</a>
                        <span class="text-muted">weixin_34293059</span>
<a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a>
                        <div>昨天下午朋友在微信上丢给我一条新闻,看看,我们阿里云支持Docker企业版了。我打开一看,果然,阿里云发布了飞天敏捷版,开始支持企业级的Docker容器。美国中部时间4月19日,阿里云在容器技术大会DockerCon2017上正式推出了ApsaraStackAgility,也就是飞天的敏捷版。Docker公司首席执行官BenGolub在大会上宣布了ApsaraStackAgility的正式发布,这</div>
                    </li>
                    <li><a href="/article/1903896851413790720.htm"
                           title="Centos使用docker搭建Graylog日志平台" target="_blank">Centos使用docker搭建Graylog日志平台</a>
                        <span class="text-muted">moxiaoran5753</span>
<a class="tag" taget="_blank" href="/search/centos/1.htm">centos</a><a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/graylog/1.htm">graylog</a>
                        <div>日志管理系统有很多,比如ELK,Graylog,Loki+Grafana+Promtail适用场景:1.如果需求复杂,服务器资源不受限制,推荐使用ELK(Logstash+Elasticsearch+Kibana)方案;2.如果需求仅是将不同服务器上的日志采集上来集中展示和检索,且需要一个轻量级的框架,那使用PLG(Promtail+Loki+Grafana)最合适不过了。3.Graylog专注于</div>
                    </li>
                    <li><a href="/article/1903896343613599744.htm"
                           title="MotionLayout(二):MotionLayout是什么?MotionLayout调试技巧、KeyFrame关键帧等等" target="_blank">MotionLayout(二):MotionLayout是什么?MotionLayout调试技巧、KeyFrame关键帧等等</a>
                        <span class="text-muted">前期后期</span>
<a class="tag" taget="_blank" href="/search/android/1.htm">android</a><a class="tag" taget="_blank" href="/search/kotlin/1.htm">kotlin</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a>
                        <div>一、MotionLayout是什么?●定位:AndroidJetpack中的高级布局容器,继承自ConstraintLayout。●核心功能:通过状态(State)和过渡(Transition)定义复杂的界面动画,支持手势交互、路径动画等。●优势:简化动画开发流程,替代传统Animator或TransitionManager,适合处理多视图联动、复杂转场效果。1.1应用场景使用MotionLayo</div>
                    </li>
                    <li><a href="/article/1903895456547663872.htm"
                           title="一文读懂 Linux 下 Docker 搭建及简单应用" target="_blank">一文读懂 Linux 下 Docker 搭建及简单应用</a>
                        <span class="text-muted">Waitccy</span>
<a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a>
                        <div>一、引言在Linux系统的运维与开发场景中,Docker凭借其高效的容器化技术,极大地简化了应用部署与管理流程。它打破了传统环境配置的复杂性,实现应用及其依赖的封装,确保在不同环境中稳定运行。本文将详细介绍在Linux系统下搭建Docker的步骤,并通过几个简单应用示例,带你快速上手Docker。二、Linux下Docker搭建(一)准备工作系统要求:建议使用主流的Linux发行版,如Ubuntu</div>
                    </li>
                    <li><a href="/article/1903893816243449856.htm"
                           title="docker(10、日志管理4)5、Graylog 日志系统(1、部署Graylog日志系统,2、Graylog管理日志)" target="_blank">docker(10、日志管理4)5、Graylog 日志系统(1、部署Graylog日志系统,2、Graylog管理日志)</a>
                        <span class="text-muted">junior1206</span>
<a class="tag" taget="_blank" href="/search/k8s/1.htm">k8s</a><a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a>
                        <div>部署Graylog日志系统Graylog是与ELK可以相提并论的一款几种式日志管理方案,支持数据收集、检索、可视化Dashboard。将实践用Graylog来管理Docker日志Graylog架构Graylog架构如下图所示:Graylog负责接收来自各种设备和应用的日志,并未用户提供Web访问接口。Elasticsearch用于索引和保存Graylog接收到的日志MongoDB负责保存Grayl</div>
                    </li>
                    <li><a href="/article/1903884867855249408.htm"
                           title="微服务 - 中级篇" target="_blank">微服务 - 中级篇</a>
                        <span class="text-muted">编程在手天下我有</span>
<a class="tag" taget="_blank" href="/search/%E5%BE%AE%E6%9C%8D%E5%8A%A1/1.htm">微服务</a><a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84/1.htm">架构</a><a class="tag" taget="_blank" href="/search/%E4%BA%91%E5%8E%9F%E7%94%9F/1.htm">云原生</a>
                        <div>微服务-中级篇一、微服务架构深化(一)服务拆分原则(二)服务通信方式二、微服务技术选型(一)开发框架(二)容器技术三、微服务实践与优化(后续会详细分析)一、微服务架构深化(一)服务拆分原则1.业务功能内聚性核心概念是将逻辑上紧密关联的业务功能组合在一个微服务中。以电商系统为例,用户管理模块包含用户注册、登录、个人信息修改、密码重置等功能。这些功能围绕用户实体展开,相互之间存在紧密的业务逻辑联系。将</div>
                    </li>
                    <li><a href="/article/1903872496633966592.htm"
                           title="区块链环境配置自用" target="_blank">区块链环境配置自用</a>
                        <span class="text-muted">Xmas190</span>
<a class="tag" taget="_blank" href="/search/%E5%85%B6%E5%AE%83/1.htm">其它</a><a class="tag" taget="_blank" href="/search/%E5%8C%BA%E5%9D%97%E9%93%BE/1.htm">区块链</a>
                        <div>FabricLab1.Fabric环境搭建与基本操作2.Fabric链码基础3.Fabric项目架构Fabric实践一:环境搭建与基本操作一、Fabric环境搭建本文用于指导Fabric在基于Ubuntu的Linux系统中的安装与配置,如有未安装过的同学可以参考本指南自行配置。相关组件版本号:名称版本Ubuntu16.04Fabric1.4Docker20.10.5Docker-compose1.</div>
                    </li>
                    <li><a href="/article/1903870731561791488.htm"
                           title="CentOS 7 64位安装Docker" target="_blank">CentOS 7 64位安装Docker</a>
                        <span class="text-muted">咯拉咯啦</span>
<a class="tag" taget="_blank" href="/search/Docker/1.htm">Docker</a><a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a>
                        <div>以下是在已有的CentOS764位虚拟机上安装Docker并配置华为镜像源的详细步骤:1.备份原有Yum源(可选,建议操作)#备份原有仓库文件sudomv/etc/yum.repos.d/CentOS-Base.repo/etc/yum.repos.d/CentOS-Base.repo.backup2.更换CentOS7Yum源为华为源#下载华为云CentOS7的仓库文件sudocurl-o/et</div>
                    </li>
                    <li><a href="/article/1903846389566205952.htm"
                           title="Docker 容器基础技术:namespace" target="_blank">Docker 容器基础技术:namespace</a>
                        <span class="text-muted">寻雾&启示</span>
<a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/%E5%AE%B9%E5%99%A8/1.htm">容器</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a>
                        <div>在容器内进程是隔离的,比如容器有自己的网络和文件系统,容器内进程的PID为1,这些都是依赖于Linuxnamespace所提供的隔离机制。本篇我们来了解下Linux有哪些namespace,以及它们是如何实现隔离的。文中案例代码均由ChatGPT生成,在Linux内核5.15.0-124-generic,ubuntu22.04LTS系统上测试通过。namespace类型每个进程都有自己所属的nam</div>
                    </li>
                    <li><a href="/article/1903822055128756224.htm"
                           title="Windows10本地部署Dify+Xinference" target="_blank">Windows10本地部署Dify+Xinference</a>
                        <span class="text-muted">橘长长长</span>
<a class="tag" taget="_blank" href="/search/AI%E7%9B%B8%E5%85%B3/1.htm">AI相关</a><a class="tag" taget="_blank" href="/search/ai/1.htm">ai</a><a class="tag" taget="_blank" href="/search/dify/1.htm">dify</a><a class="tag" taget="_blank" href="/search/xinference/1.htm">xinference</a><a class="tag" taget="_blank" href="/search/glm4/1.htm">glm4</a>
                        <div>目录前言一、安装必要项1.安装Docker和AnaConda2.安装Xinference3.通过Xinference部署本地glm4-chat-1m4.验证glm4-chat-1m是否部署完成5.安装Dify三、Dify中配置大模型1.浏览器输入http://localhost:80启动Dify页面2.随便注册账户登录3.配置Xinference四、运行Dify1.设置系统推理模型2.对话窗口验证</div>
                    </li>
                    <li><a href="/article/1903821676244692992.htm"
                           title="Docker之安装与配置" target="_blank">Docker之安装与配置</a>
                        <span class="text-muted">雨五夜</span>
<a class="tag" taget="_blank" href="/search/Docker/1.htm">Docker</a><a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/%E5%AE%B9%E5%99%A8/1.htm">容器</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a>
                        <div>Docker之安装与配置一、Docker环境配置1.基本配置2.镜像加速3.网络配置4.数据持久化5.优化建议6.常见问题与解决方案7.补充工具二、Docker配置本地仓库指南1.拉取Registry镜像2.启动本地仓库3.配置Docker客户端Linux/macOSWindows4.推送镜像到本地仓库标记镜像推送镜像5.推送镜像到本地仓库6.管理本地仓库7.优化与安全性8.常见问题一、Docke</div>
                    </li>
                    <li><a href="/article/1903813728168636416.htm"
                           title="基于AWS Endpoint Security(EPS)的自动化安全基线部署" target="_blank">基于AWS Endpoint Security(EPS)的自动化安全基线部署</a>
                        <span class="text-muted">weixin_30777913</span>
<a class="tag" taget="_blank" href="/search/%E4%BA%91%E8%AE%A1%E7%AE%97/1.htm">云计算</a><a class="tag" taget="_blank" href="/search/aws/1.htm">aws</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E5%AE%89%E5%85%A8/1.htm">安全</a><a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84/1.htm">架构</a>
                        <div>设计AWS云架构方案实现基于AWSEndpointSecurity(EPS)的自动化安全基线部署,AMSAdvanced(AWS托管服务)环境会为所有新部署的资源自动安装EPS监控客户端,无需人工干预即可建立统一的安全基线。这种自动化机制特别适用于动态扩缩的云环境,确保新启动的EC2实例、容器等终端设备从初始状态即受保护,以及具体实现的详细步骤和关键代码。以下是基于AWSEndpointSecur</div>
                    </li>
                    <li><a href="/article/1903781066372608000.htm"
                           title="第十八章:模板的多态力量_《C++ Templates》notes" target="_blank">第十八章:模板的多态力量_《C++ Templates》notes</a>
                        <span class="text-muted">郭涤生</span>
<a class="tag" taget="_blank" href="/search/c%2Fc%2B%2B/1.htm">c/c++</a><a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a>
                        <div>模板的多态力量一、动态多态vs静态多态二、奇异递归模板模式(CRTP)三、策略模式(编译期策略选择)关键要点总结第一部分:多选题(10题)第二部分:设计题(5题)答案与详解多选题答案:设计题参考答案1.编译期策略选择器2.类型安全访问者模式3.概念约束数学库4.编译期工厂模式5.静态多态容器测试说明一、动态多态vs静态多态核心概念:动态多态:基于虚函数和继承体系,函数调用在运行时决定(通过虚函数表</div>
                    </li>
                    <li><a href="/article/1903774251270336512.htm"
                           title="docker gitlab 无法访问及502错误" target="_blank">docker gitlab 无法访问及502错误</a>
                        <span class="text-muted">破解中小学~软硬件Ai(植入数学与物理)</span>
<a class="tag" taget="_blank" href="/search/java%E6%8A%80%E6%9C%AF/1.htm">java技术</a>
                        <div>1、dockergitlab创建dockerrun-d--namegitlab\--restartalways\-p8443:443\-p83:80\-p8822:22\-v/gitlab/config:/etc/gitlab\-v/gitlab/logs:/var/log/gitlab\-vgitlab/data:/var/opt/gitlab\gitlab/gitlab-ce:13.3.7-c</div>
                    </li>
                    <li><a href="/article/1903769584306024448.htm"
                           title="SSLTLS加密传输与数字证书的前世今生" target="_blank">SSLTLS加密传输与数字证书的前世今生</a>
                        <span class="text-muted">云来雁去</span>
<a class="tag" taget="_blank" href="/search/.NET/1.htm">.NET</a><a class="tag" taget="_blank" href="/search/%E6%BA%90%E4%BB%A3%E7%A0%81%E6%8E%A2%E6%A1%88%E7%B3%BB%E5%88%97/1.htm">源代码探案系列</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E5%AD%97%E8%AF%81%E4%B9%A6/1.htm">数字证书</a><a class="tag" taget="_blank" href="/search/HTTPS/1.htm">HTTPS</a><a class="tag" taget="_blank" href="/search/%E5%8A%A0%E5%AF%86/1.htm">加密</a><a class="tag" taget="_blank" href="/search/SSL/1.htm">SSL</a>
                        <div>Hi,大家好,我是飞鸿踏雪,欢迎大家关注我的博客。近来,博主经历了一次服务器迁移,本以为有Docker-Compose加持,一切应该会非常顺利,没想到最终还是在证书上栽了跟头,因为它的证书是和IP地址绑定的。对,你没听错,这个世界上还真就有这么别扭的设定,尤其是你折腾了一整天,发现你需要到一个CA服务器上去申请证书的时候,那种绝望你晓得吧?数字证书、HTTPS、SSL/TLS、加密……无数的词汇在</div>
                    </li>
                    <li><a href="/article/1903736158651740160.htm"
                           title="OpenLayers集成天地图服务开发指南" target="_blank">OpenLayers集成天地图服务开发指南</a>
                        <span class="text-muted">喆星时瑜</span>
<a class="tag" taget="_blank" href="/search/WebGIS/1.htm">WebGIS</a><a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/%E5%A4%A9%E5%9C%B0%E5%9B%BE/1.htm">天地图</a><a class="tag" taget="_blank" href="/search/OpenLayers/1.htm">OpenLayers</a><a class="tag" taget="_blank" href="/search/GIS/1.htm">GIS</a><a class="tag" taget="_blank" href="/search/%E5%A4%A9%E5%9C%B0%E5%9B%BE/1.htm">天地图</a><a class="tag" taget="_blank" href="/search/WebGIS/1.htm">WebGIS</a><a class="tag" taget="_blank" href="/search/HTML/1.htm">HTML</a><a class="tag" taget="_blank" href="/search/%E5%9C%B0%E5%9B%BE/1.htm">地图</a><a class="tag" taget="_blank" href="/search/%E5%9C%B0%E5%9B%BEAPI/1.htm">地图API</a>
                        <div>以下是一份面向GIS初学者的OpenLayers开发详细教程,深度解析代码:一、开发环境搭建1.1OpenLayers库引入ol.css:包含地图控件、图层等可视化样式ol.js:OpenLayers核心功能库推荐使用固定版本号(如v7.3.0)确保稳定性1.2地图容器设置.map{//设置地图控件显示尺寸height:95vh;width:95vw;}使用视口单位(vh/vw)实现响应式布局保留</div>
                    </li>
                    <li><a href="/article/1903734266844475392.htm"
                           title="利用docker部署单节点milvus并实现图像化管理" target="_blank">利用docker部署单节点milvus并实现图像化管理</a>
                        <span class="text-muted">听说唐僧不吃肉</span>
<a class="tag" taget="_blank" href="/search/Linux/1.htm">Linux</a><a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/milvus/1.htm">milvus</a>
                        <div>Docker部署单机版milvus使用DockerCompose安装Milvusstandalone(即单机版),进行一个快速milvus的体验。1.前提条件系统可以使用centos或者ubuntu系统已经安装docker和docker-composemilvus版本这里选择2.3.12.启动etcd、minio、milvus由于milvus依赖etcd和minio,因此需要先启动这2个组件。同样</div>
                    </li>
                    <li><a href="/article/1903732376769458176.htm"
                           title="Spring容器初始化扩展点:ApplicationContextInitializer" target="_blank">Spring容器初始化扩展点:ApplicationContextInitializer</a>
                        <span class="text-muted">web14786210723</span>
<a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0%E8%B7%AF%E7%BA%BF/1.htm">学习路线</a><a class="tag" taget="_blank" href="/search/%E9%98%BF%E9%87%8C%E5%B7%B4%E5%B7%B4/1.htm">阿里巴巴</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a>
                        <div>目录一、什么是ApplicationContextInitializer?1、核心作用2、适用场景二、ApplicationContextInitializer的使用方式1、实现ApplicationContextInitializer接口2、注册初始化器三、ApplicationContextInitializer的执行时机四、实际应用案例1、动态设置环境变量2、注册自定义的Bean定义五、注意</div>
                    </li>
                    <li><a href="/article/1903731494430502912.htm"
                           title="【Docker系列四】Docker 网络" target="_blank">【Docker系列四】Docker 网络</a>
                        <span class="text-muted">Kwan的解忧杂货铺@新空间代码工作室</span>
<a class="tag" taget="_blank" href="/search/s4/1.htm">s4</a><a class="tag" taget="_blank" href="/search/Docker%E7%B3%BB%E5%88%97/1.htm">Docker系列</a><a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a><a class="tag" taget="_blank" href="/search/%E5%AE%B9%E5%99%A8/1.htm">容器</a>
                        <div>欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。推荐:kwan的首页,持续学习,不断总结,共同进步,活到老学到老导航檀越剑指大厂系列:全面总结java核心技术,jvm,并发编程redis,kafka,Spring,微服务等常用开发工具系列:常用的开发工具,IDEA,Mac,Alfred,Git,</div>
                    </li>
                    <li><a href="/article/1903731493532921856.htm"
                           title="新手如何使用 Milvus" target="_blank">新手如何使用 Milvus</a>
                        <span class="text-muted">巴依老爷coder</span>
<a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a><a class="tag" taget="_blank" href="/search/milvus/1.htm">milvus</a><a class="tag" taget="_blank" href="/search/%E5%90%91%E9%87%8F%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">向量数据库</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a>
                        <div>一文带你入门Milvus:详细指南新手如何使用Milvus:详细指南一、Milvus简介主要特点应用领域二、安装Milvus安装DockerCompose基于DockerCompose安装Milvus服务端安装attu-可视化界面工具三、快速入门安装PythonSDK连接数据库方式1方式2(方式1的封装)数据库操作核心概念集合操作数据操作插入数据精准查询数据-get条件查询数据-query查询数据</div>
                    </li>
                    <li><a href="/article/1903731237260947456.htm"
                           title="使用Docker部署Nacosv2.1.1" target="_blank">使用Docker部署Nacosv2.1.1</a>
                        <span class="text-muted">九思x</span>
<a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/%E5%AE%B9%E5%99%A8/1.htm">容器</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a>
                        <div>第一步:拉取镜像dockerpullnacos/nacos-server:v2.1.1作用:从DockerHub拉取Nacos2.1.1官方镜像。第二步:启动容器dockerrun-d\-eMODE=standalone\#单机模式运行-p8848:8848\#HTTPAPI/UI端口-p9848:9848\#gRPC通信端口(客户端-服务端)-p9849:9849\#gRPC通信端口(集群间通信</div>
                    </li>
                                <li><a href="/article/25.htm"
                                       title="Java实现的简单双向Map,支持重复Value" target="_blank">Java实现的简单双向Map,支持重复Value</a>
                                    <span class="text-muted">superlxw1234</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%8F%8C%E5%90%91map/1.htm">双向map</a>
                                    <div>关键字:Java双向Map、DualHashBidiMap 
  
  
有个需求,需要根据即时修改Map结构中的Value值,比如,将Map中所有value=V1的记录改成value=V2,key保持不变。 
  
数据量比较大,遍历Map性能太差,这就需要根据Value先找到Key,然后去修改。 
  
即:既要根据Key找Value,又要根据Value</div>
                                </li>
                                <li><a href="/article/152.htm"
                                       title="PL/SQL触发器基础及例子" target="_blank">PL/SQL触发器基础及例子</a>
                                    <span class="text-muted">百合不是茶</span>
<a class="tag" taget="_blank" href="/search/oracle%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">oracle数据库</a><a class="tag" taget="_blank" href="/search/%E8%A7%A6%E5%8F%91%E5%99%A8/1.htm">触发器</a><a class="tag" taget="_blank" href="/search/PL%2FSQL%E7%BC%96%E7%A8%8B/1.htm">PL/SQL编程</a>
                                    <div>  
触发器的简介; 
触发器的定义就是说某个条件成立的时候,触发器里面所定义的语句就会被自动的执行。因此触发器不需要人为的去调用,也不能调用。触发器和过程函数类似 过程函数必须要调用, 
  
一个表中最多只能有12个触发器类型的,触发器和过程函数相似 触发器不需要调用直接执行,


 
触发时间:指明触发器何时执行,该值可取:
before:表示在数据库动作之前触发</div>
                                </li>
                                <li><a href="/article/279.htm"
                                       title="[时空与探索]穿越时空的一些问题" target="_blank">[时空与探索]穿越时空的一些问题</a>
                                    <span class="text-muted">comsci</span>
<a class="tag" taget="_blank" href="/search/%E9%97%AE%E9%A2%98/1.htm">问题</a>
                                    <div> 
      我们还没有进行过任何数学形式上的证明,仅仅是一个猜想..... 
 
      这个猜想就是; 任何有质量的物体(哪怕只有一微克)都不可能穿越时空,该物体强行穿越时空的时候,物体的质量会与时空粒子产生反应,物体会变成暗物质,也就是说,任何物体穿越时空会变成暗物质..(暗物质就我的理</div>
                                </li>
                                <li><a href="/article/406.htm"
                                       title="easy ui datagrid上移下移一行" target="_blank">easy ui datagrid上移下移一行</a>
                                    <span class="text-muted">商人shang</span>
<a class="tag" taget="_blank" href="/search/js/1.htm">js</a><a class="tag" taget="_blank" href="/search/%E4%B8%8A%E7%A7%BB%E4%B8%8B%E7%A7%BB/1.htm">上移下移</a><a class="tag" taget="_blank" href="/search/easyui/1.htm">easyui</a><a class="tag" taget="_blank" href="/search/datagrid/1.htm">datagrid</a>
                                    <div>/**
 * 向上移动一行
 * 
 * @param dg
 * @param row
 */
function moveupRow(dg, row) {
	var datagrid = $(dg);
	var index = datagrid.datagrid("getRowIndex", row);
	if (isFirstRow(dg, row)) {</div>
                                </li>
                                <li><a href="/article/533.htm"
                                       title="Java反射" target="_blank">Java反射</a>
                                    <span class="text-muted">oloz</span>
<a class="tag" taget="_blank" href="/search/%E5%8F%8D%E5%B0%84/1.htm">反射</a>
                                    <div>本人菜鸟,今天恰好有时间,写写博客,总结复习一下java反射方面的知识,欢迎大家探讨交流学习指教 
 
首先看看java中的Class 
 
package demo;

public class ClassTest {
	
	/*先了解java中的Class*/
	
	public static void main(String[] args) {
		
    //任何一个类都</div>
                                </li>
                                <li><a href="/article/660.htm"
                                       title="springMVC 使用JSR-303 Validation验证" target="_blank">springMVC 使用JSR-303 Validation验证</a>
                                    <span class="text-muted">杨白白</span>
<a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/mvc/1.htm">mvc</a>
                                    <div>JSR-303是一个数据验证的规范,但是spring并没有对其进行实现,Hibernate Validator是实现了这一规范的,通过此这个实现来讲SpringMVC对JSR-303的支持。 
 JSR-303的校验是基于注解的,首先要把这些注解标记在需要验证的实体类的属性上或是其对应的get方法上。 
 
登录需要验证类 
 
public class Login {

	@NotEmpty</div>
                                </li>
                                <li><a href="/article/787.htm"
                                       title="log4j" target="_blank">log4j</a>
                                    <span class="text-muted">香水浓</span>
<a class="tag" taget="_blank" href="/search/log4j/1.htm">log4j</a>
                                    <div>
log4j.rootCategory=DEBUG, STDOUT, DAILYFILE, HTML, DATABASE
#log4j.rootCategory=DEBUG, STDOUT, DAILYFILE, ROLLINGFILE, HTML

#console
log4j.appender.STDOUT=org.apache.log4j.ConsoleAppender
log4</div>
                                </li>
                                <li><a href="/article/914.htm"
                                       title="使用ajax和history.pushState无刷新改变页面URL" target="_blank">使用ajax和history.pushState无刷新改变页面URL</a>
                                    <span class="text-muted">agevs</span>
<a class="tag" taget="_blank" href="/search/jquery/1.htm">jquery</a><a class="tag" taget="_blank" href="/search/%E6%A1%86%E6%9E%B6/1.htm">框架</a><a class="tag" taget="_blank" href="/search/Ajax/1.htm">Ajax</a><a class="tag" taget="_blank" href="/search/html5/1.htm">html5</a><a class="tag" taget="_blank" href="/search/chrome/1.htm">chrome</a>
                                    <div>表现 
如果你使用chrome或者firefox等浏览器访问本博客、github.com、plus.google.com等网站时,细心的你会发现页面之间的点击是通过ajax异步请求的,同时页面的URL发生了了改变。并且能够很好的支持浏览器前进和后退。 
是什么有这么强大的功能呢? 
HTML5里引用了新的API,history.pushState和history.replaceState,就是通过</div>
                                </li>
                                <li><a href="/article/1041.htm"
                                       title="centos中文乱码" target="_blank">centos中文乱码</a>
                                    <span class="text-muted">AILIKES</span>
<a class="tag" taget="_blank" href="/search/centos/1.htm">centos</a><a class="tag" taget="_blank" href="/search/OS/1.htm">OS</a><a class="tag" taget="_blank" href="/search/ssh/1.htm">ssh</a>
                                    <div>一、CentOS系统访问 g.cn ,发现中文乱码。 
于是用以前的方式:yum -y install fonts-chinese 
CentOS系统安装后,还是不能显示中文字体。我使用 gedit 编辑源码,其中文注释也为乱码。     
  
      
  
后来,终于找到以下方法可以解决,需要两个中文支持的包: 
fonts-chinese-3.02-12.</div>
                                </li>
                                <li><a href="/article/1168.htm"
                                       title="触发器" target="_blank">触发器</a>
                                    <span class="text-muted">baalwolf</span>
<a class="tag" taget="_blank" href="/search/%E8%A7%A6%E5%8F%91%E5%99%A8/1.htm">触发器</a>
                                    <div>触发器(trigger):监视某种情况,并触发某种操作。 
触发器创建语法四要素:1.监视地点(table) 2.监视事件(insert/update/delete) 3.触发时间(after/before) 4.触发事件(insert/update/delete) 
语法: 
create trigger triggerName 
after/before </div>
                                </li>
                                <li><a href="/article/1295.htm"
                                       title="JS正则表达式的i m g" target="_blank">JS正则表达式的i m g</a>
                                    <span class="text-muted">bijian1013</span>
<a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F/1.htm">正则表达式</a>
                                    <div>        g:表示全局(global)模式,即模式将被应用于所有字符串,而非在发现第一个匹配项时立即停止。         i:表示不区分大小写(case-insensitive)模式,即在确定匹配项时忽略模式与字符串的大小写。         m:表示</div>
                                </li>
                                <li><a href="/article/1422.htm"
                                       title="HTML5模式和Hashbang模式" target="_blank">HTML5模式和Hashbang模式</a>
                                    <span class="text-muted">bijian1013</span>
<a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/AngularJS/1.htm">AngularJS</a><a class="tag" taget="_blank" href="/search/Hashbang%E6%A8%A1%E5%BC%8F/1.htm">Hashbang模式</a><a class="tag" taget="_blank" href="/search/HTML5%E6%A8%A1%E5%BC%8F/1.htm">HTML5模式</a>
                                    <div>        我们可以用$locationProvider来配置$location服务(可以采用注入的方式,就像AngularJS中其他所有东西一样)。这里provider的两个参数很有意思,介绍如下。 
html5Mode 
        一个布尔值,标识$location服务是否运行在HTML5模式下。 
ha</div>
                                </li>
                                <li><a href="/article/1549.htm"
                                       title="[Maven学习笔记六]Maven生命周期" target="_blank">[Maven学习笔记六]Maven生命周期</a>
                                    <span class="text-muted">bit1129</span>
<a class="tag" taget="_blank" href="/search/maven/1.htm">maven</a>
                                    <div>从mvn test的输出开始说起 
  
当我们在user-core中执行mvn test时,执行的输出如下: 
  
/software/devsoftware/jdk1.7.0_55/bin/java -Dmaven.home=/software/devsoftware/apache-maven-3.2.1 -Dclassworlds.conf=/software/devs</div>
                                </li>
                                <li><a href="/article/1676.htm"
                                       title="【Hadoop七】基于Yarn的Hadoop Map Reduce容错" target="_blank">【Hadoop七】基于Yarn的Hadoop Map Reduce容错</a>
                                    <span class="text-muted">bit1129</span>
<a class="tag" taget="_blank" href="/search/hadoop/1.htm">hadoop</a>
                                    <div>运行于Yarn的Map Reduce作业,可能发生失败的点包括 
 
 Task Failure 
 Application Master Failure 
 Node Manager Failure 
 Resource Manager Failure 
 1. Task Failure 
任务执行过程中产生的异常和JVM的意外终止会汇报给Application Master。僵死的任务也会被A</div>
                                </li>
                                <li><a href="/article/1803.htm"
                                       title="记一次数据推送的异常解决端口解决" target="_blank">记一次数据推送的异常解决端口解决</a>
                                    <span class="text-muted">ronin47</span>
<a class="tag" taget="_blank" href="/search/%E8%AE%B0%E4%B8%80%E6%AC%A1%E6%95%B0%E6%8D%AE%E6%8E%A8%E9%80%81%E7%9A%84%E5%BC%82%E5%B8%B8%E8%A7%A3%E5%86%B3/1.htm">记一次数据推送的异常解决</a>
                                    <div>   需求:从db获取数据然后推送到B 
        程序开发完成,上jboss,刚开始报了很多错,逐一解决,可最后显示连接不到数据库。机房的同事说可以ping 通。 
    自已画了个图,逐一排除,把linux 防火墙 和 setenforce 设置最低。 
   service iptables stop 
</div>
                                </li>
                                <li><a href="/article/1930.htm"
                                       title="巧用视错觉-UI更有趣" target="_blank">巧用视错觉-UI更有趣</a>
                                    <span class="text-muted">brotherlamp</span>
<a class="tag" taget="_blank" href="/search/UI/1.htm">UI</a><a class="tag" taget="_blank" href="/search/ui%E8%A7%86%E9%A2%91/1.htm">ui视频</a><a class="tag" taget="_blank" href="/search/ui%E6%95%99%E7%A8%8B/1.htm">ui教程</a><a class="tag" taget="_blank" href="/search/ui%E8%87%AA%E5%AD%A6/1.htm">ui自学</a><a class="tag" taget="_blank" href="/search/ui%E8%B5%84%E6%96%99/1.htm">ui资料</a>
                                    <div>我们每个人在生活中都曾感受过视错觉(optical illusion)的魅力。 
视错觉现象是双眼跟我们开的一个玩笑,而我们往往还心甘情愿地接受我们看到的假象。其实不止如此,视觉错现象的背后还有一个重要的科学原理——格式塔原理。 
格式塔原理解释了人们如何以视觉方式感觉物体,以及图像的结构,视角,大小等要素是如何影响我们的视觉的。 
在下面这篇文章中,我们首先会简单介绍一下格式塔原理中的基本概念,</div>
                                </li>
                                <li><a href="/article/2057.htm"
                                       title="线段树-poj1177-N个矩形求边长(离散化+扫描线)" target="_blank">线段树-poj1177-N个矩形求边长(离散化+扫描线)</a>
                                    <span class="text-muted">bylijinnan</span>
<a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%E7%BA%BF%E6%AE%B5%E6%A0%91/1.htm">线段树</a>
                                    <div>package com.ljn.base;

import java.util.Arrays;
import java.util.Comparator;
import java.util.Set;
import java.util.TreeSet;

/**
 * POJ 1177 (线段树+离散化+扫描线),题目链接为http://poj.org/problem?id=1177
</div>
                                </li>
                                <li><a href="/article/2184.htm"
                                       title="HTTP协议详解" target="_blank">HTTP协议详解</a>
                                    <span class="text-muted">chicony</span>
<a class="tag" taget="_blank" href="/search/http%E5%8D%8F%E8%AE%AE/1.htm">http协议</a>
                                    <div>引言                                 </div>
                                </li>
                                <li><a href="/article/2311.htm"
                                       title="Scala设计模式" target="_blank">Scala设计模式</a>
                                    <span class="text-muted">chenchao051</span>
<a class="tag" taget="_blank" href="/search/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/1.htm">设计模式</a><a class="tag" taget="_blank" href="/search/scala/1.htm">scala</a>
                                    <div>Scala设计模式 
        
       我的话: 在国外网站上看到一篇文章,里面详细描述了很多设计模式,并且用Java及Scala两种语言描述,清晰的让我们看到各种常规的设计模式,在Scala中是如何在语言特性层面直接支持的。基于文章很nice,我利用今天的空闲时间将其翻译,希望大家能一起学习,讨论。翻译</div>
                                </li>
                                <li><a href="/article/2438.htm"
                                       title="安装mysql" target="_blank">安装mysql</a>
                                    <span class="text-muted">daizj</span>
<a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/%E5%AE%89%E8%A3%85/1.htm">安装</a>
                                    <div>安装mysql 
  (1)删除linux上已经安装的mysql相关库信息。rpm  -e  xxxxxxx   --nodeps (强制删除) 
     执行命令rpm -qa |grep mysql 检查是否删除干净 
  (2)执行命令  rpm -i MySQL-server-5.5.31-2.el</div>
                                </li>
                                <li><a href="/article/2565.htm"
                                       title="HTTP状态码大全" target="_blank">HTTP状态码大全</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/http%E7%8A%B6%E6%80%81%E7%A0%81/1.htm">http状态码</a>
                                    <div>完整的 HTTP 1.1规范说明书来自于RFC 2616,你可以在http://www.talentdigger.cn/home/link.php?url=d3d3LnJmYy1lZGl0b3Iub3JnLw%3D%3D在线查阅。HTTP 1.1的状态码被标记为新特性,因为许多浏览器只支持 HTTP 1.0。你应只把状态码发送给支持 HTTP 1.1的客户端,支持协议版本可以通过调用request</div>
                                </li>
                                <li><a href="/article/2692.htm"
                                       title="asihttprequest上传图片" target="_blank">asihttprequest上传图片</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/ASIHTTPRequest/1.htm">ASIHTTPRequest</a>
                                    <div>NSURL *url =@"yourURL";
    ASIFormDataRequest*currentRequest =[ASIFormDataRequest requestWithURL:url];
    [currentRequest setPostFormat:ASIMultipartFormDataPostFormat];[currentRequest se</div>
                                </li>
                                <li><a href="/article/2819.htm"
                                       title="C语言中,关键字static的作用" target="_blank">C语言中,关键字static的作用</a>
                                    <span class="text-muted">e200702084</span>
<a class="tag" taget="_blank" href="/search/C%2B%2B/1.htm">C++</a><a class="tag" taget="_blank" href="/search/c/1.htm">c</a><a class="tag" taget="_blank" href="/search/C%23/1.htm">C#</a>
                                    <div>在C语言中,关键字static有三个明显的作用: 
 
1)在函数体,局部的static变量。生存期为程序的整个生命周期,(它存活多长时间);作用域却在函数体内(它在什么地方能被访问(空间))。 
一个被声明为静态的变量在这一函数被调用过程中维持其值不变。因为它分配在静态存储区,函数调用结束后并不释放单元,但是在其它的作用域的无法访问。当再次调用这个函数时,这个局部的静态变量还存活,而且用在它的访</div>
                                </li>
                                <li><a href="/article/2946.htm"
                                       title="win7/8使用curl" target="_blank">win7/8使用curl</a>
                                    <span class="text-muted">geeksun</span>
<a class="tag" taget="_blank" href="/search/win7/1.htm">win7</a>
                                    <div>1.  WIN7/8下要使用curl,需要下载curl-7.20.0-win64-ssl-sspi.zip和Win64OpenSSL_Light-1_0_2d.exe。  下载地址:  
http://curl.haxx.se/download.html   请选择不带SSL的版本,否则还需要安装SSL的支持包       2.  可以给Windows增加c</div>
                                </li>
                                <li><a href="/article/3073.htm"
                                       title="Creating a Shared Repository; Users Sharing The Repository" target="_blank">Creating a Shared Repository; Users Sharing The Repository</a>
                                    <span class="text-muted">hongtoushizi</span>
<a class="tag" taget="_blank" href="/search/git/1.htm">git</a>
                                    <div>转载自:  
http://www.gitguys.com/topics/creating-a-shared-repository-users-sharing-the-repository/  Commands discussed in this section: 
 
 git init –bare 
 git clone 
 git remote 
 git pull 
 git p</div>
                                </li>
                                <li><a href="/article/3200.htm"
                                       title="Java实现字符串反转的8种或9种方法" target="_blank">Java实现字符串反转的8种或9种方法</a>
                                    <span class="text-muted">Josh_Persistence</span>
<a class="tag" taget="_blank" href="/search/%E5%BC%82%E6%88%96%E5%8F%8D%E8%BD%AC/1.htm">异或反转</a><a class="tag" taget="_blank" href="/search/%E9%80%92%E5%BD%92%E5%8F%8D%E8%BD%AC/1.htm">递归反转</a><a class="tag" taget="_blank" href="/search/%E4%BA%8C%E5%88%86%E4%BA%A4%E6%8D%A2%E5%8F%8D%E8%BD%AC/1.htm">二分交换反转</a><a class="tag" taget="_blank" href="/search/java%E5%AD%97%E7%AC%A6%E4%B8%B2%E5%8F%8D%E8%BD%AC/1.htm">java字符串反转</a><a class="tag" taget="_blank" href="/search/%E6%A0%88%E5%8F%8D%E8%BD%AC/1.htm">栈反转</a>
                                    <div>注:对于第7种使用异或的方式来实现字符串的反转,如果不太看得明白的,可以参照另一篇博客: 
http://josh-persistence.iteye.com/blog/2205768 
  
/**
 * 
 */
package com.wsheng.aggregator.algorithm.string;

import java.util.Stack;

/**
</div>
                                </li>
                                <li><a href="/article/3327.htm"
                                       title="代码实现任意容量倒水问题" target="_blank">代码实现任意容量倒水问题</a>
                                    <span class="text-muted">home198979</span>
<a class="tag" taget="_blank" href="/search/PHP/1.htm">PHP</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%E5%80%92%E6%B0%B4/1.htm">倒水</a>
                                    <div>形象化设计模式实战             HELLO!架构                     redis命令源码解析 
  
倒水问题:有两个杯子,一个A升,一个B升,水有无限多,现要求利用这两杯子装C</div>
                                </li>
                                <li><a href="/article/3454.htm"
                                       title="Druid datasource" target="_blank">Druid datasource</a>
                                    <span class="text-muted">zhb8015</span>
<a class="tag" taget="_blank" href="/search/druid/1.htm">druid</a>
                                    <div>推荐大家使用数据库连接池 DruidDataSource. http://code.alibabatech.com/wiki/display/Druid/DruidDataSource DruidDataSource经过阿里巴巴数百个应用一年多生产环境运行验证,稳定可靠。 它最重要的特点是:监控、扩展和性能。 下载和Maven配置看这里: http</div>
                                </li>
                                <li><a href="/article/3581.htm"
                                       title="两种启动监听器ApplicationListener和ServletContextListener" target="_blank">两种启动监听器ApplicationListener和ServletContextListener</a>
                                    <span class="text-muted">spjich</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/%E6%A1%86%E6%9E%B6/1.htm">框架</a>
                                    <div>引言:有时候需要在项目初始化的时候进行一系列工作,比如初始化一个线程池,初始化配置文件,初始化缓存等等,这时候就需要用到启动监听器,下面分别介绍一下两种常用的项目启动监听器 
  
ServletContextListener  
特点: 依赖于sevlet容器,需要配置web.xml 
使用方法: 
public class StartListener implements </div>
                                </li>
                                <li><a href="/article/3708.htm"
                                       title="JavaScript Rounding Methods of the Math object" target="_blank">JavaScript Rounding Methods of the Math object</a>
                                    <span class="text-muted">何不笑</span>
<a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/Math/1.htm">Math</a>
                                    <div>    The next group of methods has to do with rounding decimal values into integers. Three methods — Math.ceil(),  Math.floor(), and  Math.round() — handle rounding in differen</div>
                                </li>
                </ul>
            </div>
        </div>
    </div>

<div>
    <div class="container">
        <div class="indexes">
            <strong>按字母分类:</strong>
            <a href="/tags/A/1.htm" target="_blank">A</a><a href="/tags/B/1.htm" target="_blank">B</a><a href="/tags/C/1.htm" target="_blank">C</a><a
                href="/tags/D/1.htm" target="_blank">D</a><a href="/tags/E/1.htm" target="_blank">E</a><a href="/tags/F/1.htm" target="_blank">F</a><a
                href="/tags/G/1.htm" target="_blank">G</a><a href="/tags/H/1.htm" target="_blank">H</a><a href="/tags/I/1.htm" target="_blank">I</a><a
                href="/tags/J/1.htm" target="_blank">J</a><a href="/tags/K/1.htm" target="_blank">K</a><a href="/tags/L/1.htm" target="_blank">L</a><a
                href="/tags/M/1.htm" target="_blank">M</a><a href="/tags/N/1.htm" target="_blank">N</a><a href="/tags/O/1.htm" target="_blank">O</a><a
                href="/tags/P/1.htm" target="_blank">P</a><a href="/tags/Q/1.htm" target="_blank">Q</a><a href="/tags/R/1.htm" target="_blank">R</a><a
                href="/tags/S/1.htm" target="_blank">S</a><a href="/tags/T/1.htm" target="_blank">T</a><a href="/tags/U/1.htm" target="_blank">U</a><a
                href="/tags/V/1.htm" target="_blank">V</a><a href="/tags/W/1.htm" target="_blank">W</a><a href="/tags/X/1.htm" target="_blank">X</a><a
                href="/tags/Y/1.htm" target="_blank">Y</a><a href="/tags/Z/1.htm" target="_blank">Z</a><a href="/tags/0/1.htm" target="_blank">其他</a>
        </div>
    </div>
</div>
<footer id="footer" class="mb30 mt30">
    <div class="container">
        <div class="footBglm">
            <a target="_blank" href="/">首页</a> -
            <a target="_blank" href="/custom/about.htm">关于我们</a> -
            <a target="_blank" href="/search/Java/1.htm">站内搜索</a> -
            <a target="_blank" href="/sitemap.txt">Sitemap</a> -
            <a target="_blank" href="/custom/delete.htm">侵权投诉</a>
        </div>
        <div class="copyright">版权所有 IT知识库 CopyRight © 2000-2050 E-COM-NET.COM , All Rights Reserved.
<!--            <a href="https://beian.miit.gov.cn/" rel="nofollow" target="_blank">京ICP备09083238号</a><br>-->
        </div>
    </div>
</footer>
<!-- 代码高亮 -->
<script type="text/javascript" src="/static/syntaxhighlighter/scripts/shCore.js"></script>
<script type="text/javascript" src="/static/syntaxhighlighter/scripts/shLegacy.js"></script>
<script type="text/javascript" src="/static/syntaxhighlighter/scripts/shAutoloader.js"></script>
<link type="text/css" rel="stylesheet" href="/static/syntaxhighlighter/styles/shCoreDefault.css"/>
<script type="text/javascript" src="/static/syntaxhighlighter/src/my_start_1.js"></script>





</body>

</html>