【云原生】第五篇--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/1835505228137459712.htm"
                           title="腾讯云技术深度探索:构建高效云原生微服务架构" target="_blank">腾讯云技术深度探索:构建高效云原生微服务架构</a>
                        <span class="text-muted">我的运维人生</span>
<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/%E6%9E%B6%E6%9E%84/1.htm">架构</a><a class="tag" taget="_blank" href="/search/%E8%85%BE%E8%AE%AF%E4%BA%91/1.htm">腾讯云</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/%E6%8A%80%E6%9C%AF%E5%85%B1%E4%BA%AB/1.htm">技术共享</a>
                        <div>腾讯云技术深度探索:构建高效云原生微服务架构在当今快速发展的技术环境中,云原生技术已成为企业数字化转型的关键驱动力。腾讯云作为行业领先的云服务提供商,不断推出创新的产品和技术,助力企业构建高效、可扩展的云原生微服务架构。本文将深入探讨腾讯云在微服务领域的最新进展,并通过一个实际案例展示如何在腾讯云平台上构建云原生应用。腾讯云微服务架构概览腾讯云微服务架构基于云原生理念,旨在帮助企业快速实现应用的容</div>
                    </li>
                    <li><a href="/article/1835502578050363392.htm"
                           title="PHP环境搭建详细教程" target="_blank">PHP环境搭建详细教程</a>
                        <span class="text-muted">好看资源平台</span>
<a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/php/1.htm">php</a>
                        <div>PHP是一个流行的服务器端脚本语言,广泛用于Web开发。为了使PHP能够在本地或服务器上运行,我们需要搭建一个合适的PHP环境。本教程将结合最新资料,介绍在不同操作系统上搭建PHP开发环境的多种方法,包括Windows、macOS和Linux系统的安装步骤,以及本地和Docker环境的配置。1.PHP环境搭建概述PHP环境的搭建主要分为以下几类:集成开发环境:例如XAMPP、WAMP、MAMP,这</div>
                    </li>
                    <li><a href="/article/1835495770502033408.htm"
                           title="Day17笔记-高阶函数" target="_blank">Day17笔记-高阶函数</a>
                        <span class="text-muted">~在杰难逃~</span>
<a class="tag" taget="_blank" href="/search/Python/1.htm">Python</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</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/pycharm/1.htm">pycharm</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%88%86%E6%9E%90/1.htm">数据分析</a>
                        <div>高阶函数【重点掌握】函数的本质:函数是一个变量,函数名是一个变量名,一个函数可以作为另一个函数的参数或返回值使用如果A函数作为B函数的参数,B函数调用完成之后,会得到一个结果,则B函数被称为高阶函数常用的高阶函数:map(),reduce(),filter(),sorted()1.map()map(func,iterable),返回值是一个iterator【容器,迭代器】func:函数iterab</div>
                    </li>
                    <li><a href="/article/1835485429059645440.htm"
                           title="docker" target="_blank">docker</a>
                        <span class="text-muted">igotyback</span>
<a class="tag" taget="_blank" href="/search/eureka/1.htm">eureka</a><a class="tag" taget="_blank" href="/search/%E4%BA%91%E5%8E%9F%E7%94%9F/1.htm">云原生</a>
                        <div>Docker容器的文件系统是隔离的,但是可以通过挂载卷(Volumes)或绑定挂载(BindMounts)将宿主机的文件系统目录映射到容器内部。要查看Docker容器的映射路径,可以使用以下方法:查看容器配置:使用dockerinspect命令可以查看容器的详细配置信息,包括挂载的卷。例如:bashdockerinspect在输出的JSON格式中,查找"Mounts"部分,这里会列出所有的挂载信息</div>
                    </li>
                    <li><a href="/article/1835457442260021248.htm"
                           title="ArrayList 源码解析" target="_blank">ArrayList 源码解析</a>
                        <span class="text-muted">程序猿进阶</span>
<a class="tag" taget="_blank" href="/search/Java%E5%9F%BA%E7%A1%80/1.htm">Java基础</a><a class="tag" taget="_blank" href="/search/ArrayList/1.htm">ArrayList</a><a class="tag" taget="_blank" href="/search/List/1.htm">List</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a><a class="tag" taget="_blank" href="/search/%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96/1.htm">性能优化</a><a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84%E8%AE%BE%E8%AE%A1/1.htm">架构设计</a><a class="tag" taget="_blank" href="/search/idea/1.htm">idea</a>
                        <div>ArrayList是Java集合框架中的一个动态数组实现,提供了可变大小的数组功能。它继承自AbstractList并实现了List接口,是顺序容器,即元素存放的数据与放进去的顺序相同,允许放入null元素,底层通过数组实现。除该类未实现同步外,其余跟Vector大致相同。每个ArrayList都有一个容量capacity,表示底层数组的实际大小,容器内存储元素的个数不能多于当前容量。当向容器中添</div>
                    </li>
                    <li><a href="/article/1835447859219099648.htm"
                           title="06选课支付模块之基于消息队列发送支付通知消息" target="_blank">06选课支付模块之基于消息队列发送支付通知消息</a>
                        <span class="text-muted">echo 云清</span>
<a class="tag" taget="_blank" href="/search/%E5%AD%A6%E6%88%90%E5%9C%A8%E7%BA%BF/1.htm">学成在线</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/rabbitmq/1.htm">rabbitmq</a><a class="tag" taget="_blank" href="/search/%E6%B6%88%E6%81%AF%E9%98%9F%E5%88%97/1.htm">消息队列</a><a class="tag" taget="_blank" href="/search/%E6%94%AF%E4%BB%98%E9%80%9A%E7%9F%A5/1.htm">支付通知</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E6%88%90%E5%9C%A8%E7%BA%BF/1.htm">学成在线</a>
                        <div>消息队列发送支付通知消息需求分析订单服务作为通用服务,在订单支付成功后需要将支付结果异步通知给其他对接的微服务,微服务收到支付结果根据订单的类型去更新自己的业务数据技术方案使用消息队列进行异步通知需要保证消息的可靠性即生产端将消息成功通知到服务端:消息发送到交换机-->由交换机发送到队列-->消费者监听队列,收到消息进行处理,参考文章02-使用Docker安装RabbitMQ-CSDN博客生产者确</div>
                    </li>
                    <li><a href="/article/1835422770016645120.htm"
                           title="《 C++ 修炼全景指南:四 》揭秘 C++ List 容器背后的实现原理,带你构建自己的双向链表" target="_blank">《 C++ 修炼全景指南:四 》揭秘 C++ List 容器背后的实现原理,带你构建自己的双向链表</a>
                        <span class="text-muted">Lenyiin</span>
<a class="tag" taget="_blank" href="/search/%E6%8A%80%E6%9C%AF%E6%8C%87%E5%8D%97/1.htm">技术指南</a><a class="tag" taget="_blank" href="/search/C%2B%2B/1.htm">C++</a><a class="tag" taget="_blank" href="/search/%E4%BF%AE%E7%82%BC%E5%85%A8%E6%99%AF%E6%8C%87%E5%8D%97/1.htm">修炼全景指南</a><a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a><a class="tag" taget="_blank" href="/search/list/1.htm">list</a><a class="tag" taget="_blank" href="/search/%E9%93%BE%E8%A1%A8/1.htm">链表</a><a class="tag" taget="_blank" href="/search/stl/1.htm">stl</a>
                        <div>本篇博客,我们将详细讲解如何从头实现一个功能齐全且强大的C++List容器,并深入到各个细节。这篇博客将包括每一步的代码实现、解释以及扩展功能的探讨,目标是让初学者也能轻松理解。一、简介1.1、背景介绍在C++中,std::list是一个基于双向链表的容器,允许高效的插入和删除操作,适用于频繁插入和删除操作的场景。与动态数组不同,list允许常数时间内的插入和删除操作,支持双向遍历。这篇文章将详细</div>
                    </li>
                    <li><a href="/article/1835408447806468096.htm"
                           title="Ubuntu18.04 Docker部署Kinship(Django)项目过程" target="_blank">Ubuntu18.04 Docker部署Kinship(Django)项目过程</a>
                        <span class="text-muted">Dante617</span>

                        <div>1Docker的安装https://blog.csdn.net/weixin_41735055/article/details/1003551792下载镜像dockerpullprogramize/python3.6.8-dlib下载的镜像里包含python3.6.8和dlib19.17.03启动镜像dockerrun-it--namekinship-p7777:80-p3307:3306-p55</div>
                    </li>
                    <li><a href="/article/1835399957885054976.htm"
                           title="docker from指令的含义_多个FROM-含义" target="_blank">docker from指令的含义_多个FROM-含义</a>
                        <span class="text-muted">weixin_39722188</span>
<a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/from%E6%8C%87%E4%BB%A4%E7%9A%84%E5%90%AB%E4%B9%89/1.htm">from指令的含义</a>
                        <div>小编典典什么是基本图片?一组文件,加上EXPOSE端口ENTRYPOINT和CMD。您可以添加文件并基于该基础图像构建新图像,Dockerfile并以FROM指令开头:后面提到的图像FROM是新图像的“基础图像”。这是否意味着如果我neo4j/neo4j在FROM指令中声明,则在运行映像时,neo数据库将自动运行并且可在端口7474的容器中使用?仅当您不覆盖CMD和时ENTRYPOINT。但是图像</div>
                    </li>
                    <li><a href="/article/1835399831116410880.htm"
                           title="Dockerfile FROM 两个" target="_blank">Dockerfile FROM 两个</a>
                        <span class="text-muted">redDelta</span>

                        <div>Docker相关视频讲解:什么是容器Docker介绍实现"DockerfileFROM两个"的步骤步骤表格步骤操作1创建一个Dockerfile文件2写入FROM指令3构建第一个镜像4创建第二个Dockerfile文件5写入FROM指令6构建第二个镜像7合并两个镜像操作步骤说明步骤1:创建一个Dockerfile文件使用任意文本编辑器创建一个名为Dockerfile的文件。登录后复制#Docker</div>
                    </li>
                    <li><a href="/article/1835395039572881408.htm"
                           title="Dockerfile命令详解之 FROM" target="_blank">Dockerfile命令详解之 FROM</a>
                        <span class="text-muted">清风怎不知意</span>
<a class="tag" taget="_blank" href="/search/%E5%AE%B9%E5%99%A8%E5%8C%96/1.htm">容器化</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a>
                        <div>许多同学不知道Dockerfile应该如何写,不清楚Dockerfile中的指令分别有什么意义,能达到什么样的目的,接下来我将在容器化专栏中详细的为大家解释每一个指令的含义以及用法。专栏订阅传送门https://blog.csdn.net/qq_38220908/category_11989778.html指令不区分大小写。但是,按照惯例,它们应该是大写的,以便更容易地将它们与参数区分开来。(引用</div>
                    </li>
                    <li><a href="/article/1835394786899619840.htm"
                           title="Dockerfile(1) - FROM 指令详解" target="_blank">Dockerfile(1) - FROM 指令详解</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/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/cmd/1.htm">cmd</a><a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%95%B0%E6%8D%AE/1.htm">大数据</a>
                        <div>FROM指明当前的镜像基于哪个镜像构建dockerfile必须以FROM开头,除了ARG命令可以在FROM前面FROM[--platform=][AS]FROM[--platform=][:][AS]FROM[--platform=][@][AS]小栗子FROMalpine:latest一个dockerfile可以有多个FROM可以有多个FROM来创建多个镜像,或区分构建阶段,将一个构建阶段作为另</div>
                    </li>
                    <li><a href="/article/1835379662918873088.htm"
                           title="【从问题中去学习k8s】k8s中的常见面试题(夯实理论基础)(二十八)" target="_blank">【从问题中去学习k8s】k8s中的常见面试题(夯实理论基础)(二十八)</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/%E5%AD%A6%E4%B9%A0/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>本站以分享各种运维经验和运维所需要的技能为主《python零基础入门》:python零基础入门学习《python运维脚本》:python运维脚本实践《shell》:shell学习《terraform》持续更新中:terraform_Aws学习零基础入门到最佳实战《k8》从问题中去学习k8s《docker学习》暂未更新《ceph学习》ceph日常问题解决分享《日志收集》ELK+各种中间件《运维日常》</div>
                    </li>
                    <li><a href="/article/1835379083945537536.htm"
                           title="leetcode 11. 盛最多水的容器" target="_blank">leetcode 11. 盛最多水的容器</a>
                        <span class="text-muted">Source_Chang</span>

                        <div>leetcode核心思想:双指针,数字小的那个指针移动classSolution{public:intmaxArea(vector&height){intleft=0;intright=height.size()-1;intmaxArea=0;while(left<right){maxArea=max(min(height[left],height[right])*(right-left),max</div>
                    </li>
                    <li><a href="/article/1835375621996376064.htm"
                           title="Kubernetes数据持久化" target="_blank">Kubernetes数据持久化</a>
                        <span class="text-muted">看清所苡看轻</span>
<a class="tag" taget="_blank" href="/search/kubernetes%28k8s%29/1.htm">kubernetes(k8s)</a><a class="tag" taget="_blank" href="/search/emptyDir/1.htm">emptyDir</a><a class="tag" taget="_blank" href="/search/HostPath/1.htm">HostPath</a><a class="tag" taget="_blank" href="/search/pv/1.htm">pv</a><a class="tag" taget="_blank" href="/search/pvc/1.htm">pvc</a><a class="tag" taget="_blank" href="/search/kubernetes/1.htm">kubernetes</a>
                        <div>在k8s中,Volume(数据卷)存在明确的生命周期(与包含该数据卷的容器组(pod)相同)。因此Volume的生命周期比同一容器组(pod)中任意容器的生命周期要更长,不管容器重启了多少次,数据都被保留下来。当然,如果pod不存在了,数据卷自然退出了。此时,根据pod所使用的数据卷类型不同,数据可能随着数据卷的退出而删除,也可能被真正持久化,并在下次容器组重启时仍然可以使用。从根本上来说,一个数</div>
                    </li>
                    <li><a href="/article/1835364027488890880.htm"
                           title="leetcode刷题day13|二叉树Part01(递归遍历、迭代遍历、统一迭代、层序遍历)" target="_blank">leetcode刷题day13|二叉树Part01(递归遍历、迭代遍历、统一迭代、层序遍历)</a>
                        <span class="text-muted">小冉在学习</span>
<a class="tag" taget="_blank" href="/search/leetcode/1.htm">leetcode</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%E8%81%8C%E5%9C%BA%E5%92%8C%E5%8F%91%E5%B1%95/1.htm">职场和发展</a>
                        <div>递归遍历思路:使用递归的方式比较简单。1、递归函数的传参:因为最后输出一个数组,所以需要传入根节点和一个容器,本来想写数组,但发现长度不能确定,所以选择list。2、终止条件:当访问的节点为空时,return3、递归函数的逻辑:先访问一个节点,递归访问其他节点144.二叉树的前序遍历代码如下:classSolution{publicListpreorderTraversal(TreeNoderoo</div>
                    </li>
                    <li><a href="/article/1835354574077128704.htm"
                           title="Kubernetes的3种数据持久化方式" target="_blank">Kubernetes的3种数据持久化方式</a>
                        <span class="text-muted">Seal^_^</span>
<a class="tag" taget="_blank" href="/search/%E3%80%90%E4%BA%91%E5%8E%9F%E7%94%9F%E3%80%91%E5%AE%B9%E5%99%A8%E5%8C%96%E4%B8%8E%E7%BC%96%E6%8E%92%E6%8A%80%E6%9C%AF/1.htm">【云原生】容器化与编排技术</a><a class="tag" taget="_blank" href="/search/%E6%8C%81%E7%BB%AD%E9%9B%86%E6%88%90/1.htm">持续集成</a><a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/Kubernetes/1.htm">Kubernetes</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><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/EmptyDir/1.htm">EmptyDir</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a><a class="tag" taget="_blank" href="/search/HostPath/1.htm">HostPath</a>
                        <div>Kubernetes的3种数据持久化方式1.EmptyDir2.HostPath3.PersistentVolume(PV)TheBegin点点关注,收藏不迷路Kubernetes提供了几种数据持久化方式,以满足不同场景的需求:1.EmptyDir用途:临时数据存储,Pod内容器间共享。特点:生命周期与Pod相同,Pod删除时数据也删除。2.HostPath用途:访问宿主机特定文件或目录。特点:增</div>
                    </li>
                    <li><a href="/article/1835331377520799744.htm"
                           title="【K8s】专题十一:Kubernetes 集群证书过期处理方法" target="_blank">【K8s】专题十一:Kubernetes 集群证书过期处理方法</a>
                        <span class="text-muted">行者Sun1989</span>
<a class="tag" taget="_blank" href="/search/Kubernetes/1.htm">Kubernetes</a><a class="tag" taget="_blank" href="/search/kubernetes/1.htm">kubernetes</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/%E5%AE%B9%E5%99%A8/1.htm">容器</a>
                        <div>本文内容均来自个人笔记并重新梳理,如有错误欢迎指正!如果对您有帮助,烦请点赞、关注、转发、订阅专栏!专栏订阅入口Linux专栏|Docker专栏|Kubernetes专栏往期精彩文章【Docker】(全网首发)KylinV10下MySQL容器内存占用异常的解决方法【Docker】(全网首发)KylinV10下MySQL容器内存占用异常的解决方法(续)【Docker】MySQL源码构建Docker镜</div>
                    </li>
                    <li><a href="/article/1835310380474265600.htm"
                           title="Java面试笔记记录6" target="_blank">Java面试笔记记录6</a>
                        <span class="text-muted">今天背八股了吗</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a>
                        <div>1.Spring是什么?特性?有哪些模块?Spring是一个轻量级、非入侵式的控制反转Ioc和面向切面AOP的框架。特性:1.Ioc和DISpring的核心就是一个大的工厂容器,可以维护所有对象的创建和依赖关系,Spring工厂用于生成Bean,并且管理Bean的生命周期,实现高内聚低耦合的设计理念。2.AOP编程Spring提供面向切面编程,可以方便实现对程序进行权限拦截、运行监控等切面功能。3</div>
                    </li>
                    <li><a href="/article/1835269935358636032.htm"
                           title="Docker学习十一:Kubernetes概述" target="_blank">Docker学习十一:Kubernetes概述</a>
                        <span class="text-muted">爱打羽球的程序猿</span>
<a class="tag" taget="_blank" href="/search/Docker%E5%AD%A6%E4%B9%A0%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/kubernetes/1.htm">kubernetes</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a>
                        <div>一、Kubernetes简介2006年,Google提出了云计算的概念,当时的云计算领域还是以虚拟机为代表的云平台。2013年,Docker横空出世,Docker提出了镜像、仓库等核心概念,规范了服务的交付标准,使得复杂服务的落地变得更加简单,之后Docker又定义了OCI标准,Docker在容器领域称为事实的标准。但是,Docker诞生只是帮助定义了开发和交付标准,如果想要在生产环境中大批量的使</div>
                    </li>
                    <li><a href="/article/1835267918531751936.htm"
                           title="安装 `privoxy` 将 Socks5 转换为 HTTP 代理" target="_blank">安装 `privoxy` 将 Socks5 转换为 HTTP 代理</a>
                        <span class="text-muted">MonkeyKing.sun</span>
<a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a>
                        <div>(base)shgbitai@shgbitai-C9X299-PGF:~/tools$curl-xhttp://127.0.0.1:1080https://registry-1.docker.io/v2/curl:(56)ProxyCONNECTaborted(base)shgbitai@shgbitai-C9X299-PGF:~/tools$curl-xhttps://127.0.0.1:108</div>
                    </li>
                    <li><a href="/article/1835267665455837184.htm"
                           title="Halo 开发者指南——容器私有化部署" target="_blank">Halo 开发者指南——容器私有化部署</a>
                        <span class="text-muted">SHENHUANJIE</span>
<a class="tag" taget="_blank" href="/search/Docker/1.htm">Docker</a><a class="tag" taget="_blank" href="/search/Halo/1.htm">Halo</a><a class="tag" taget="_blank" href="/search/%E5%8D%8E%E4%B8%BA%E4%BA%91/1.htm">华为云</a><a class="tag" taget="_blank" href="/search/SWR/1.htm">SWR</a><a class="tag" taget="_blank" href="/search/Registry/1.htm">Registry</a>
                        <div>华为云SWR私有化部署镜像构建dockerbuild-thalo-dev/halo:2.20.0.上传镜像镜像标签sudodockertag{镜像名称}:{版本名称}swr.cn-south-1.myhuaweicloud.com/{组织名称}/{镜像名称}:{版本名称}sudodockertaghalo-dev/halo:2.20.0swr.cn-south-1.myhuaweicloud.co</div>
                    </li>
                    <li><a href="/article/1835262244313722880.htm"
                           title="SpringBoot整合ES搜索引擎 实现网站热搜词及热度计算" target="_blank">SpringBoot整合ES搜索引擎 实现网站热搜词及热度计算</a>
                        <span class="text-muted">码踏云端</span>
<a class="tag" taget="_blank" href="/search/springboot/1.htm">springboot</a><a class="tag" taget="_blank" href="/search/Elasticsearch/1.htm">Elasticsearch</a><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/elasticsearch/1.htm">elasticsearch</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a><a class="tag" taget="_blank" href="/search/%E7%83%AD%E6%90%9C%E8%AF%8D/1.htm">热搜词</a><a class="tag" taget="_blank" href="/search/%E7%83%AD%E5%BA%A6%E8%AE%A1%E7%AE%97/1.htm">热度计算</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                        <div>博主简介:历代文学网(PC端可以访问:https://literature.sinhy.com/#/literature?__c=1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编程,高并发设计,Springboot和微服务,熟悉Linux,ESXI虚拟化以及云原生Docker和K8s,热衷于探索科技的边界,并将理论知识转化为实际应用。保持对新技术的好奇心,乐于</div>
                    </li>
                    <li><a href="/article/1835259716809355264.htm"
                           title="小白 | 华为云docker设置镜像加速器" target="_blank">小白 | 华为云docker设置镜像加速器</a>
                        <span class="text-muted">伏一</span>
<a class="tag" taget="_blank" href="/search/%E5%B7%A5%E5%85%B7%E5%AE%89%E8%A3%85/1.htm">工具安装</a><a class="tag" taget="_blank" href="/search/%E5%8D%8E%E4%B8%BA%E4%BA%91/1.htm">华为云</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>
                        <div>一、操作场景通过dockerpull命令下载镜像中心的公有镜像时,往往会因为网络原因而需要很长时间,甚至可能因超时而下载失败。为此,容器镜像服务提供了镜像下载加速功能,帮助您获得更快的下载体验。二、约束与限制构建镜像的客户端所安装的容器引擎(Docker)版本必须为1.11.2及以上。“华北-乌兰察布一”、“亚太-雅加达”、“拉美-墨西哥城一”、“拉美-墨西哥城二”和“拉美-圣保罗一”区域不支持该</div>
                    </li>
                    <li><a href="/article/1835245099416645632.htm"
                           title="docker改容器IP的两种方法" target="_blank">docker改容器IP的两种方法</a>
                        <span class="text-muted">redmond88</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/tcp%2Fip/1.htm">tcp/ip</a><a class="tag" taget="_blank" href="/search/%E5%AE%B9%E5%99%A8/1.htm">容器</a>
                        <div>最简单实用的方法:docker默认的内网网段为172.17.0.0/16,如果公司内网网段也是172.17.x.x的话,就会发生路由冲突。解决办法改路由比较办法,可以一开始就将docker配置的bip改成169.254.0.1/24,可以避免冲突。在daemon配置文件里加个"bip":“169.254.0.1/24”,重启docker就可以了1234[root@st-dev6~]#vim/etc</div>
                    </li>
                    <li><a href="/article/1835225687028494336.htm"
                           title="java获取applicationcontext,SpringBoot获取ApplicationContext的3种方式" target="_blank">java获取applicationcontext,SpringBoot获取ApplicationContext的3种方式</a>
                        <span class="text-muted">花儿街参考</span>

                        <div>ApplicationContext是什么?简单来说就是Spring中的容器,可以用来获取容器中的各种bean组件,注册监听事件,加载资源文件等功能。ApplicationContext获取的几种方式1直接使用Autowired注入@ComponentpublicclassBook1{@AutowiredprivateApplicationContextapplicationContext;pub</div>
                    </li>
                    <li><a href="/article/1835209173944594432.htm"
                           title="(k8s)Kubernetes 从0到1容器编排之旅" target="_blank">(k8s)Kubernetes 从0到1容器编排之旅</a>
                        <span class="text-muted">道不贱卖,法不轻传</span>
<a class="tag" taget="_blank" href="/search/kubernets/1.htm">kubernets</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><a class="tag" taget="_blank" href="/search/%E4%BA%91%E5%8E%9F%E7%94%9F/1.htm">云原生</a>
                        <div>一、引言在当今数字化的浪潮中,Kubernetes如同一艘强大的航船,引领着容器化应用的部署与管理。它以其卓越的灵活性、可扩展性和可靠性,成为众多企业和开发者的首选。然而,要真正发挥Kubernetes的强大威力,仅仅掌握基本操作是远远不够的。本文将带你深入探索Kubernetes使用过程中的奇技妙法,为你开启一段优雅的容器编排之旅。二、高级资源管理之精妙艺术1.资源配额与限制:雕琢资源之美•Ku</div>
                    </li>
                    <li><a href="/article/1835201490998882304.htm"
                           title="SpringBoot 获取 ApplicationContext" target="_blank">SpringBoot 获取 ApplicationContext</a>
                        <span class="text-muted">loveLifeLoveCoding</span>
<a class="tag" taget="_blank" href="/search/springboot/1.htm">springboot</a><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/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a>
                        <div>1.概念ApplicationContext是什么?简单来说就是Spring中的容器,可以用来获取容器中的各种bean组件,注册监听事件,加载资源文件等功能2.获取ApplicationContext的方式2.1.创建工具类通过此工具类,可以方便的获取bean组件,获取配置信息等importorg.springframework.beans.BeansException;importorg.spr</div>
                    </li>
                    <li><a href="/article/1835199093819928576.htm"
                           title="docker 安装、运行nginx shell脚本" target="_blank">docker 安装、运行nginx shell脚本</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/nginx/1.htm">nginx</a><a class="tag" taget="_blank" href="/search/%E5%AE%B9%E5%99%A8/1.htm">容器</a>
                        <div>以下是一个简单的用于安装和运行DockerNginx的shell脚本:bash#!/bin/bash#安装Docker(如果还未安装)#请根据实际情况调整安装命令#拉取Nginx镜像dockerpullnginx#运行Nginx容器dockerrun-d--namemynginx-p80:80nginx</div>
                    </li>
                    <li><a href="/article/1835189633021997056.htm"
                           title="docker项目切换(nginx)、重启shell 脚本" target="_blank">docker项目切换(nginx)、重启shell 脚本</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/nginx/1.htm">nginx</a><a class="tag" taget="_blank" href="/search/%E5%AE%B9%E5%99%A8/1.htm">容器</a>
                        <div>docker项目切换、重启脚本背景具体操作nginx配置配置文件1配置文件2编写nginx替换脚本(用来执行端口替换)编写启动脚本dockerfile文件正常编写给脚本授权执行./start脚本背景项目部署docker中,更新项目时,需要将原原来的容器停止,再启动新的容器,这样会有一个空窗期,导致不可用解决方案:映射不同的端口并启动新的容器,将nginx转发到新容器,停止旧容器具体操作说明ngin</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>