---
description: >-
  Coolpy7内核由于使用Epoll技术，所以系统默认支持Linux或MacOS等基于unix内核的操作系统，因此如需要在windows系统中运行Coolpy7需要通过Docker技术进行虚拟化环境部署。因此本手册只说明如何在windows中通过docker容器技术部署运行Coolpy7，理论上所有Windows系统只要能正常安装docker都可正常，并且适用所docker为基础的应用场境
---

# Docker部署CP7(Win\&Linux)

安装docker

{% embed url="https://hub.docker.com/editions/community/docker-ce-desktop-windows" %}
下载win10版docker安装包地址
{% endembed %}

{% embed url="https://B.Linux系统安装docker" %}
Linux系统安装说明
{% endembed %}

### 1.正确安装Docker到系统

确保docker正常启动，确保docker容器类型为linux containers(一般安装完成后默认即)

{% hint style="info" %}
docker在Win或Linux系统成功安装docker后，以下操作在Win和Linux下均可正常使用
{% endhint %}

### 2.下载Coolpy7镜像

打开一个新的cmd命令行模式，执行以下指令

```
//拉取镜像文件到本地
$ docker pull coolpy7/coolpy7_core
```

![docker pull 指令](https://33059891-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LPz4APWKTuf0FRQG1lh%2F-LbhLGfiQ1as4Z937NLQ%2F-LbhYzF7du7A8f_1mIfd%2FBFBA7AD28AD590B8F24474D6D87D8FA1.png?alt=media\&token=f1ea5523-32c4-4f8a-b34a-19e32b38cec1)

```
//查看镜像是否拉取完成
$ docker images
```

![docker images 指令确认coolpy7\_core镜像存在](https://33059891-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LPz4APWKTuf0FRQG1lh%2F-LbhlmAnuT8WJbjY9q8Q%2F-LbhmK-q7bVkooLz7hPU%2FE826D46184A4788801EAC985502DEB0A.png?alt=media\&token=5b0afdca-5eae-49b6-8f39-19e8514d8879)

在主系统d盘创建data文件夹为共享硬盘给Coolpy7内核使用，用于Coolpy7内核的持久化MQTT消息，用户Session、订阅主题等。同时可以确保镜像更新后原有的持久化数据不丢失。

```
//创建d盘data文件夹
$ mkdir d:\data
//创建d盘plugin文件夹,如果没有使用coolpy7的插件功能可以忽略此步
$ mkdir d:\plugin
//如果Linux系统请换成Linux路径
```

使用docker run指令启动Coolpy7镜像

```
//p参数指定容器内部1883端口影射到主系统1883端口
//v参数指明挂载容器/data文件夹到主系统的d:/data文件夹
//v参数指明挂载窗口/plugin文件夹到主系统的d:/plugin文件夹
$ docker run -p 1883:1883 -p 8083:8083 -p 8081:8081 -p 18083:18083 -p 5683:5683 -p 7946:7946 -p 7947:7947 --restart=always -d --name cp7 -v d:/data:/data -v d:/plugin:/plugin coolpy7/coolpy7_core
//如果Linux系统请换成Linux路径为v参数对应的路径
```

{% hint style="info" %}
指令执行过程中docker会在右下角出现Share drive提问框，需要点击Share it按扭允许共享d盘data文件夹给docker操作。
{% endhint %}

![docker run 指令启动Coolpy7](https://33059891-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LPz4APWKTuf0FRQG1lh%2F-LbhlmAnuT8WJbjY9q8Q%2F-LbhnhqP28oNKCpZEPT5%2FDA96DA24B15980E1F82A2557B8652A84.png?alt=media\&token=d05594a3-53e0-44f1-98aa-6a23a3fa1c56)

![通过ps指令确认Coolpy7镜像已运行](https://33059891-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LPz4APWKTuf0FRQG1lh%2F-LbhlmAnuT8WJbjY9q8Q%2F-Lbho8MQaKwuNx8dY3Te%2FAFAB9DBFFDD79116D109C8D46B37202E.png?alt=media\&token=7403f7ab-8f61-4027-91ce-06e7253ae01a)

至此基于Docker的Coolpy7已正常启动，我们可以通过连接到宿主的1883端口进行MQTT客户端连接测试，在本测试环境中docker主系统的内网ip为192.168.31.221

![使用谷歌浏览器MQTTLens客户端工具测试连接到Coolpy7Docker所在IP](https://33059891-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LPz4APWKTuf0FRQG1lh%2F-Lbh_EK4vgdKha4JOIy0%2F-Lbhb-FbdBZ3T2g239LT%2F73688FE1-3BB6-4B2D-9170-597745EF27D4.png?alt=media\&token=24bb372d-de12-4278-834e-b3d2ae2a1a13)

![连接成功后测试订阅及消息通信功能](https://33059891-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LPz4APWKTuf0FRQG1lh%2F-Lbh_EK4vgdKha4JOIy0%2F-LbhbQ687AtZ8_0KeCUx%2F8D928B0A-B661-433C-809A-D2E073C50B15.png?alt=media\&token=73d2e077-bf73-46aa-9aab-12d01b55d773)

### 3.通过docker run传递启动参数到coolpy7内核

docker run 指令模式支持给镜像主程序传递参数，指令格式只需在镜像名后编写参数即可生效。

```
//请注意结尾部分与原来指令的差异
//-dt和-it两个参数为传递给coolpy7内核参数
//更多coolpy7内核参数请参阅《启动参数及内核特殊功能》章节
$ docker run -p 1883:1883 -p 8083:8083 -p 8081:8081 -p 18083:18083 -p 5683:5683 -p 7946:7946 -p 7947:7947 --restart=always -d --name cp7 -v d:/data:/data -v d:/plugin:/plugin coolpy7/coolpy7_core -dt 100 -it 200
//如果Linux系统请换成Linux路径为v参数对应的路径
```

### 4.启动Coolpy7 Websocket Poxy代理服务器docker镜像

当Coolpy7内核运行后我们如果需要提供MQTT的Websocket能力，Websocket技术提供了网页高性能即时通信能力，通过此功能一般可以实现网页即时聊天应用或网页消息推送技术。Coolpy7工具链提供了Websocket代理服务器，名为coolpy7\_ws\_poxy，同样也已经提供了docker镜像，以下为整个启动过程，由于内核所在的已运行镜像在IP：192.168.31.221:1883，因此我们在启动coolpy7\_ws\_poxy时需要在docker run 指令传递-r参数到应用程序。

```
//拉取coolpy7 websocket 镜像
$ docker pull coolpy7/coolpy7_ws_poxy
//启动镜像 
//r参数为告知coolpy7_ws_poxy主服务位于192.168.31.221:1883
$ docker run -p 1883:1883 -p 8083:8083 -p 8081:8081 -p 18083:18083 -p 5683:5683 -p 7946:7946 -p 7947:7947 --restart=always -d --name cp7_ws coolpy7/coolpy7_ws_poxy -r 192.168.31.221:1883

```

同样使用MQTTLens工具连接时改用ws://方式连接到coolpy7\_ws\_poxy主系统的8083端口即可，测试镜像是否已经正常提供功能，由于此代理服务是桥接到Coolpy7内核，所以启动顺序应尽量先启动Coolpy7内核成功后再启动Coolpy7\_ws\_poxy服务。

### 5.编译Docker镜像

本章两个镜像均使用Dcokerfile进行镜像打包，开源位于[https://github.com/Coolpy7/Coolpy7/blob/master/Dockerfile](https://github.com/Coolpy7/Coolpy7/blob/master/Dockerfile)

如需自行编译Docker镜像请参阅
