多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
## 部署服务 我们使用 `docker service` 命令来管理 `Swarm` 集群中的服务,该命令只能在管理节点运行。 ### 新建服务 现在我们在上一节创建的 `Swarm` 集群中运行一个名为 `nginx` 服务。 ``` <pre class="prettyprint"><ol class="linenums"><li class="l"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pln">$ docker service create </span><span class="pun">--</span><span class="pln">replicas </span><span class="lit">3</span><span class="pln"> </span><span class="pun">-</span><span class="pln">p </span><span class="lit">80</span><span class="pun">:</span><span class="lit">80</span><span class="pln"> </span><span class="pun">--</span><span class="pln">name nginx nginx</span><span class="pun">:</span><span class="lit">1.13</span><span class="pun">.</span><span class="lit">7</span><span class="pun">-</span><span class="pln">alpine</span></code></li></ol> ``` 现在我们使用浏览器,输入任意节点 IP ,即可看到 nginx 默认页面。 ### 查看服务 使用 `docker service ls` 来查看当前 `Swarm` 集群运行的服务。 ``` <pre class="prettyprint"><ol class="linenums"><li class="l"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pln">$ docker service ls</span></code></li> <li class="l1"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pln">ID NAME MODE REPLICAS IMAGE PORTS</span></code></li> <li class="l"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pln">kc57xffvhul5 nginx replicated </span><span class="lit">3</span><span class="pun">/</span><span class="lit">3</span><span class="pln"> nginx</span><span class="pun">:</span><span class="lit">1.13</span><span class="pun">.</span><span class="lit">7</span><span class="pun">-</span><span class="pln">alpine </span><span class="pun">*:</span><span class="lit">80</span><span class="pun">-></span><span class="lit">80</span><span class="pun">/</span><span class="pln">tcp</span></code></li> </ol> ``` 使用 `docker service ps` 来查看某个服务的详情。 ``` <pre class="prettyprint"><ol class="linenums"><li class="l"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pln">$ docker service ps nginx</span></code></li> <li class="l1"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pln">ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS</span></code></li> <li class="l"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pln">pjfzd39buzlt nginx</span><span class="pun">.</span><span class="lit">1</span><span class="pln"> nginx</span><span class="pun">:</span><span class="lit">1.13</span><span class="pun">.</span><span class="lit">7</span><span class="pun">-</span><span class="pln">alpine swarm2 </span><span class="typ">Running</span><span class="pln"> </span><span class="typ">Running</span><span class="pln"> about a minute ago</span></code></li> <li class="l1"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pln">hy9eeivdxlaa nginx</span><span class="pun">.</span><span class="lit">2</span><span class="pln"> nginx</span><span class="pun">:</span><span class="lit">1.13</span><span class="pun">.</span><span class="lit">7</span><span class="pun">-</span><span class="pln">alpine swarm1 </span><span class="typ">Running</span><span class="pln"> </span><span class="typ">Running</span><span class="pln"> about a minute ago</span></code></li> <li class="l"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="lit">36wmpiv7gmfo</span><span class="pln"> nginx</span><span class="pun">.</span><span class="lit">3</span><span class="pln"> nginx</span><span class="pun">:</span><span class="lit">1.13</span><span class="pun">.</span><span class="lit">7</span><span class="pun">-</span><span class="pln">alpine swarm3 </span><span class="typ">Running</span><span class="pln"> </span><span class="typ">Running</span><span class="pln"> about a minute ago</span></code></li> </ol> ``` 使用 `docker service logs` 来查看某个服务的日志。 ``` <pre class="prettyprint"><ol class="linenums"><li class="l"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pln">$ docker service logs nginx</span></code></li> <li class="l1"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pln">nginx</span><span class="pun">.</span><span class="lit">3.36wmpiv7gmfo@swarm3</span><span class="pln"> </span><span class="pun">|</span><span class="pln"> </span><span class="lit">10.255</span><span class="pun">.</span><span class="lit">0.4</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="pun">[</span><span class="lit">25</span><span class="pun">/</span><span class="typ">Nov</span><span class="pun">/</span><span class="lit">2017</span><span class="pun">:</span><span class="lit">02</span><span class="pun">:</span><span class="lit">10</span><span class="pun">:</span><span class="lit">30</span><span class="pln"> </span><span class="pun">+</span><span class="lit">0000</span><span class="pun">]</span><span class="pln"> </span><span class="str">"GET / HTTP/1.1"</span><span class="pln"> </span><span class="lit">200</span><span class="pln"> </span><span class="lit">612</span><span class="pln"> </span><span class="str">"-"</span><span class="pln"> </span><span class="str">"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:58.0) Gecko/20100101 Firefox/58.0"</span><span class="pln"> </span><span class="str">"-"</span></code></li> <li class="l"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pln">nginx</span><span class="pun">.</span><span class="lit">3.36wmpiv7gmfo@swarm3</span><span class="pln"> </span><span class="pun">|</span><span class="pln"> </span><span class="lit">10.255</span><span class="pun">.</span><span class="lit">0.4</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="pun">[</span><span class="lit">25</span><span class="pun">/</span><span class="typ">Nov</span><span class="pun">/</span><span class="lit">2017</span><span class="pun">:</span><span class="lit">02</span><span class="pun">:</span><span class="lit">10</span><span class="pun">:</span><span class="lit">30</span><span class="pln"> </span><span class="pun">+</span><span class="lit">0000</span><span class="pun">]</span><span class="pln"> </span><span class="str">"GET /favicon.ico HTTP/1.1"</span><span class="pln"> </span><span class="lit">404</span><span class="pln"> </span><span class="lit">169</span><span class="pln"> </span><span class="str">"-"</span><span class="pln"> </span><span class="str">"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:58.0) Gecko/20100101 Firefox/58.0"</span><span class="pln"> </span><span class="str">"-"</span></code></li> <li class="l1"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pln">nginx</span><span class="pun">.</span><span class="lit">3.36wmpiv7gmfo@swarm3</span><span class="pln"> </span><span class="pun">|</span><span class="pln"> </span><span class="lit">2017</span><span class="pun">/</span><span class="lit">11</span><span class="pun">/</span><span class="lit">25</span><span class="pln"> </span><span class="lit">02</span><span class="pun">:</span><span class="lit">10</span><span class="pun">:</span><span class="lit">30</span><span class="pln"> </span><span class="pun">[</span><span class="pln">error</span><span class="pun">]</span><span class="pln"> </span><span class="lit">5</span><span class="com">#5: *1 open() "/usr/share/nginx/html/favicon.ico" failed (2: No such file or directory), client: 10.255.0.4, server: localhost, request: "GET /favicon.ico HTTP/1.1", host: "192.168.99.102"</span></code></li> <li class="l"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pln">nginx</span><span class="pun">.</span><span class="lit">1.pjfzd39buzlt@swarm2</span><span class="pln"> </span><span class="pun">|</span><span class="pln"> </span><span class="lit">10.255</span><span class="pun">.</span><span class="lit">0.2</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="pun">[</span><span class="lit">25</span><span class="pun">/</span><span class="typ">Nov</span><span class="pun">/</span><span class="lit">2017</span><span class="pun">:</span><span class="lit">02</span><span class="pun">:</span><span class="lit">10</span><span class="pun">:</span><span class="lit">26</span><span class="pln"> </span><span class="pun">+</span><span class="lit">0000</span><span class="pun">]</span><span class="pln"> </span><span class="str">"GET / HTTP/1.1"</span><span class="pln"> </span><span class="lit">200</span><span class="pln"> </span><span class="lit">612</span><span class="pln"> </span><span class="str">"-"</span><span class="pln"> </span><span class="str">"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:58.0) Gecko/20100101 Firefox/58.0"</span><span class="pln"> </span><span class="str">"-"</span></code></li> <li class="l1"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pln">nginx</span><span class="pun">.</span><span class="lit">1.pjfzd39buzlt@swarm2</span><span class="pln"> </span><span class="pun">|</span><span class="pln"> </span><span class="lit">10.255</span><span class="pun">.</span><span class="lit">0.2</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="pun">-</span><span class="pln"> </span><span class="pun">[</span><span class="lit">25</span><span class="pun">/</span><span class="typ">Nov</span><span class="pun">/</span><span class="lit">2017</span><span class="pun">:</span><span class="lit">02</span><span class="pun">:</span><span class="lit">10</span><span class="pun">:</span><span class="lit">27</span><span class="pln"> </span><span class="pun">+</span><span class="lit">0000</span><span class="pun">]</span><span class="pln"> </span><span class="str">"GET /favicon.ico HTTP/1.1"</span><span class="pln"> </span><span class="lit">404</span><span class="pln"> </span><span class="lit">169</span><span class="pln"> </span><span class="str">"-"</span><span class="pln"> </span><span class="str">"Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:58.0) Gecko/20100101 Firefox/58.0"</span><span class="pln"> </span><span class="str">"-"</span></code></li> <li class="l"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pln">nginx</span><span class="pun">.</span><span class="lit">1.pjfzd39buzlt@swarm2</span><span class="pln"> </span><span class="pun">|</span><span class="pln"> </span><span class="lit">2017</span><span class="pun">/</span><span class="lit">11</span><span class="pun">/</span><span class="lit">25</span><span class="pln"> </span><span class="lit">02</span><span class="pun">:</span><span class="lit">10</span><span class="pun">:</span><span class="lit">27</span><span class="pln"> </span><span class="pun">[</span><span class="pln">error</span><span class="pun">]</span><span class="pln"> </span><span class="lit">5</span><span class="com">#5: *1 open() "/usr/share/nginx/html/favicon.ico" failed (2: No such file or directory), client: 10.255.0.2, server: localhost, request: "GET /favicon.ico HTTP/1.1", host: "192.168.99.101"</span></code></li> </ol> ``` ### 删除服务 使用 `docker service rm` 来从 `Swarm` 集群移除某个服务。 ``` <pre class="prettyprint"><ol class="linenums"><li class="l"><code class="pcalibre10 pcalibre11 pcalibre9"><span class="pln">$ docker service rm nginx</span></code></li></ol> ```