Windows Docker Desktop 安装 Nacos
前言
以前都是在 Linux 虚拟机上的 Docker 安装应用,这次使用 Windows10 系统的 Docker Desktop 安装 Nacos ,所以用挂载文件就不是很方便了,这次采用启动参数的方式对配置文件赋值。
以下 Docker 命令操作是在 Windows PowerShell 下执行的。
1 准备工作
在 Docker Hub 上查看 nacos-server 的版本和配置信息:https://hub.docker.com/r/nacos/nacos-server
首先在 Tags 标签页,找到自己要安装的版本。
然后在 Overview 标签页,查看 Nacos 所可以使用的 启动参数。
截图只是官方页面的一部分启动参数,我们只需要关注这些以下 启动参数 就可以了:
MODE: cluster 集群 / standalone 单机模式,Nacos默认的是cluster,所以我要设置成 standalone
SPRING_DATASOURCE_PLATFORM:数据源类型,可填写 mysql
NACOS_APPLICATION_PORT:Nacos应用的端口,默认是 8848
MYSQL_SERVICE_HOST:Nacos连接MySQL数据库的IP
MYSQL_SERVICE_PORT:Nacos连接MySQL数据库的端口号,默认 3306
MYSQL_SERVICE_DB_NAME:Nacos连接MySQL数据库的库名称
MYSQL_SERVICE_USER:Nacos连接MySQL数据库的用户名
MYSQL_SERVICE_PASSWORD:Nacos连接MySQL数据库的密码
MYSQL_DATABASE_NUM:MySQL数据库的数量,默认1
MYSQL_SERVICE_DB_PARAM:MySQL数据库的连接参数,默认 characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false
JVM_XMS:JVM的启动参数 -Xms 默认值 1g
JVM_XMX:JVM的启动参数 -Xmx 默认值 1g
JVM_XMN:JVM的启动参数 -Xmn 默认值 512m
JVM_MS:JVM的启动参数 -XX:MetaspaceSize 默认值 128m
JVM_MMS:JVM的启动参数 -XX:MaxMetaspaceSize 默认值 320m
2 安装Nacos
2.1 拉取Nacos镜像
我使用的是 Nacos 版本是 2.1.0
PS C:\Users\administrator> docker pull nacos/nacos-server:v2.1.0
v2.2.0: Pulling from nacos/nacos-server
2d473b07cdd5: Pull complete
cee47fd629ae: Pull complete
84a2014f8cf0: Pull complete
c6b323bb84ba: Pull complete
054ba3dd31ca: Pull complete
499f0fb6edda: Pull complete
44f7142cdeb2: Pull complete
16c455a3adda: Pull complete
37ab0ca7ea67: Pull complete
4f4fb700ef54: Pull complete
Digest: sha256:be794368c96f90e42a6dd9f288d3fb12d69608cebd782eb091a489ccb48cfd28
Status: Downloaded newer image for nacos/nacos-server:v2.1.0
docker.io/nacos/nacos-server:v2.1.0
2.2 配置网络
为什么要配置网络?因为 Nacos 内要连接MySQL数据库的,我的 MySQL 数据库也是用 Docker启动的,所以2个容器间要通信是需要配置他们使用相同的网络。这个操作要在启动Nacos容器之前。
注意:这里配置的网络只在镜像内部生效,外部的访问IP是不变,比如我的访问数据库和Nacos 的IP都是 127.0.0.1
(1)查看原有网络,使用命令 docker network ls 会显示出 docker 环境内的所有网络配置。
PS C:\Users\administrator> docker network ls
NETWORK ID NAME DRIVER SCOPE
fe728090616d bridge bridge local
e29b0f416f65 host host local
6e4954693077 none null local
(2)创建一个自己的网络
# --driver bridge 设置桥接模式
# --subnet 192.168.0.0/16 子网掩码,16表示65535个网络,192.168.0.2~~192.168.255.255
# --gateway 192.168.0.1 网关
PS C:\Users\administrator> docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynetwork
4aac7a66417b2e6071443f5b2f12e1b8e5cb4f9f822605ae11cfe2328d7d2aa3
(3)再次查看网络列表,已经可以看到新创建的 mynetwork 了。
PS C:\Users\administrator> docker network ls
NETWORK ID NAME DRIVER SCOPE
fe728090616d bridge bridge local
e29b0f416f65 host host local
4aac7a66417b mynetwork bridge local
6e4954693077 none null local
(4)查看新建的 mynetwork 网络详情,可以看到是我们设置的IP范围。
PS C:\Users\administrator> docker network inspect mynetwork
[
{
"Name": "mynetwork",
"Id": "4aac7a66417b2e6071443f5b2f12e1b8e5cb4f9f822605ae11cfe2328d7d2aa3",
"Created": "2023-03-10T06:16:01.6152018Z",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": {},
"Config": [
{
"Subnet": "192.168.0.0/16",
"Gateway": "192.168.0.1"
}
]
},
"Internal": false,
"Attachable": false,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {},
"Options": {},
"Labels": {}
}
]
(5)启动一个MySQL8,并指定使用的网络是刚才创建的 mynetwork。这个操作是为了保证 MySQL8 和 Nacos 属于一个网段内。
PS C:\Users\administrator> docker run -p 3306:3306 --name mysql8 -e MYSQL_ROOT_PASSWORD=123456 -d --net mynetwork mysql:8.0.27 5ded315e2753e2d046a552f61e9f3ab72c9e1baddbb92d96d53bd6091c648520
(5)再查看网络详情,发现为 MySQL8 指定的IP是 192.168.0.2
PS C:\Users\administrator> docker network inspect mynetwork
[
{
"Name": "mynetwork",
"Id": "26d242c9b58b84a247416cc0981ad2b899ce6cfaf9711b586a4361659b39dd4a",
"Created": "2023-03-10T06:52:31.7653225Z",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": {},
"Config": [
{
"Subnet": "192.168.0.0/16",
"Gateway": "192.168.0.1"
}
]
},
"Internal": false,
"Attachable": false,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {
"5ded315e2753e2d046a552f61e9f3ab72c9e1baddbb92d96d53bd6091c648520": {
"Name": "mysql8",
"EndpointID": "cf08e8b4a8aec86120c9a418a6c0f4c2de2575c7edcc7a89b3e6e4e7bc8c20f0",
"MacAddress": "02:42:c0:a8:00:02",
"IPv4Address": "192.168.0.2/16",
"IPv6Address": ""
}
},
"Options": {},
"Labels": {}
}
]
2.3 启动Nacos
Windows PowerShell 下是不支持命令换行的,为了方便展示,改成了下面的格式。
启动命令时,指定了MySQL8的IP地址, 并且指定在 mynetwork 的网络内,至于数据库的连接参数,因为 Windows PowerShell 下是不支持使用 & 符号的,所以要用双引号括起来。
docker run --env MODE=standalone
--env SPRING_DATASOURCE_PLATFORM=mysql
--env MYSQL_DATABASE_NUM=1
--env MYSQL_SERVICE_HOST=192.168.0.2
--env MYSQL_SERVICE_PORT=3306
--env MYSQL_SERVICE_DB_NAME=nacos_db
--env MYSQL_SERVICE_DB_PARAM=characterEncoding=utf8"&"connectTimeout=1000"&"socketTimeout=3000"&"autoReconnect=true"&"useUnicode=true"&"useSSL=false"&"serverTimezone=UTC
--env MYSQL_SERVICE_USER=root
--env MYSQL_SERVICE_PASSWORD=123456
--env JVM_XMS=512m
--env JVM_XMX=512m
--env JVM_XMN=256m
--env JVM_MS=64m
--env JVM_MMS=256m
--name mynacos -d -p 8848:8848
--net mynetwork nacos/nacos-server:v2.1.0
3. 验证
3.1 查看容器的信息
Nacos 启动成功后,可以在 Docker Desktop 的 Containers 界面看到,刚才启动的 mysql8 和 mynacos 容器。
使用 Docker Desktop 的好处在于,可以点击容器的 “Status” 下的状态,进入 Status 界面查看容器详情。并且由几个
Status 界面,有5个标签页面,可以查看容器的具体内容
Logs :日志界面,显示Nacos 运行日志,加入Nacos没有运行成功,可以在这里看到失败日志。
Inspect:检查界面,可以看到 Nacos 启动时的环境变量,比如我们传入的启动参数,都可以在这里看到。
Terminal:终端界面,这里可以使用一些 Linux 系统的操作命令,直接对镜像内部的文件操作。不过 Nacos 镜像自带的命令比较少,用处不大。
Files:文件界面,展示镜像内部的所有文件,Nacos 的文件目录在 /home/nacos 下面,这里的配置文件是可以直接手动修改保存的,非常方便。
Status:状态界面,展示镜像的CPU、内存、网络等监控数据。
3.2 登录验证
看我的镜像日志,已经打印了日志:INFO Nacos started successfully in stand alone mode. use external storage
说明启动成功了,在浏览器内输入登录地址:http://127.0.0.1:8848/nacos 页面正常打开,进入到了登录页面,初始用户名和密码都是 nacos
登录成功。本次安装顺利完成。