m1系列芯片aarch64架构使用docker-compose安装nacos

 之前看到 DockerHub 上发布了 m1 芯片 aarch64 架构的 nacos 镜像, 所以就尝试的安装了下, 亲测可用: 

一. docker-compose.yml 编写

请确保自己的 mysql 服务已经启动了, 并且允许远程连接

volumes 挂载目录需要换成自己的目录

二. 容器运行和网络组

2.1 查看容器运行情况

docker ps | grep nacos 

然后使用 http://localhost:8848/nacos/# 可以登录到 nacos 运维控制台

2.2 查看容器网络组

使用 docker network ls 查看所有的 docker 网络组

使用 docker inspect nacos_default ls 可以查看 nacos 的网络信息, 可以看到

网络模式为 : bridge

容器ip为 : 172.22.0.2

三. 和mysql通信

由于我们的 docker-compose.yml 文件中指定的数据源是 mysql

3.1 查看 mysql 的运行情况(docker安装)

3.2 查看 mysql 的网络组以及容器ip

由于 172.19.0.2 是 mysql 容器内 ip, 并且使用的桥接模式, 所以 nacos 没办法使用这个 ip 和 mysql 通信

3.3 docker网络隔离

测试 nacos 容器内部和 mysql 通信, 可以发现无法 ping 通, 因为默认下, 2个不通网络组的容器是没办法互相通信的, 两个容器处于隔离的网络环境中, 这种隔离是 Docker 网络的默认行为, 旨在提供网络安全和隔离

3.4 解决方式

3.4.1 方式1(将两个容器链接到同一个网络组)

可以创建一个自定义网络并将两个容器都连接到这个网络上, 这样它们将能够使用分配给它们的容器内部 IP 地址互相通信, 这可以通过以下 Docker 命令完成:

my_custom_network 这个只是网络组名称, 可以随意起名

括号里换成, 对应的你的宿主机查看到的容器id

# 创建一个自定义桥接网络
docker network create --driver bridge my_custom_network

# 连接 MySQL 容器到这个网络
docker network connect my_custom_network (容器id或容器名)

# 连接 Nacos 容器到这个网络
docker network connect my_custom_network (容器id或容器名)

实际操作: 

3.4.1.1  创建桥接模式的网络组并查看网络组

      docker network create --driver bridge my_custom_network

3.4.1.2 链接nacos容器和mysql容器到该网络组

使用如下命令把2个容器连接到刚才创建的 my_custom_network 网络组

 docker network connect my_custom_network 52e9e9ff94aa
docker network connect my_custom_network 5c2614366917

52e9e9ff94aa 和 5c2614366917 是 nacos / mysql 的容器 id

之后使用 docker inspect my_custom_network 查看刚才创建的网络组下面的容器 ip, 可以发现之前不在同一个网络组的 nacos 和 mysql, 现在在同一个网络组下面

我们再次进去 nacos 容器测试 ping mysql 的 ip, 可以发现, 直接 ping mysql-server (容器名称)就可以 ping 通

或使用docker-compose 把 mysql, nacos 编排带同一个网络组下面, 可以发现, 2个服务都指定了

    networks:
      - nacos-network

这样容器启动的时候, 会把他们划分到同一个网络组里面, 可以直接只用容器内的 ip 通信

version: '3.8'  # 使用 Docker Compose 文件版本 3.8

services:
  mysql:
    image: mysql:latest
    environment:
      MYSQL_ROOT_PASSWORD: rootpassword  # 设置 MySQL root 用户的密码
      MYSQL_DATABASE: nacos_db           # 创建一个数据库用于 Nacos
      MYSQL_USER: nacos_user             # 创建 MySQL 用户
      MYSQL_PASSWORD: nacos_password     # 设置 MySQL 用户密码
    ports:
      - "3306:3306"
    networks:
      - nacos-network

  nacos:
    image: nacos/nacos-server:latest
    depends_on:
      - mysql
    environment:
      SPRING_DATASOURCE_PLATFORM: mysql
      MYSQL_SERVICE_HOST: mysql
      MYSQL_SERVICE_DB_NAME: nacos_db
      MYSQL_SERVICE_PORT: 3306
      MYSQL_SERVICE_USER: nacos_user
      MYSQL_SERVICE_PASSWORD: nacos_password
    ports:
      - "8848:8848"
    networks:
      - nacos-network

networks:
  nacos-network:
    driver: bridge
3.4.2 方式二(在宿主机上查看 docker 为我们划分的 bridge100 网段)

修改 nccos 的 application.yml 配置文件, 修改 db.url.0 的数据库连接地址ip为 192.168.64.1

附上完整的 nacos .application.yml 配置文件:

#spring
server.servlet.contextPath=/nacos
server.contextPath=/nacos
server.port=8848
server.tomcat.accesslog.max-days=30
server.tomcat.accesslog.pattern=%h %l %u %t "%r" %s %b %D %{User-Agent}i %{Request-Source}i

spring.datasource.platform=mysql

nacos.cmdb.dumpTaskInterval=3600
nacos.cmdb.eventTaskInterval=10
nacos.cmdb.labelTaskInterval=300
nacos.cmdb.loadDataAtStart=false

db.num=1
# 使用 bridge100 这个网络下的ip地址
db.url.0=jdbc:mysql://192.168.64.1:3306/nacos_config
db.user=root
db.password=root123

### The auth system to use, currently only 'nacos' and 'ldap' is supported:
nacos.core.auth.system.type=${NACOS_AUTH_SYSTEM_TYPE:nacos}
### worked when nacos.core.auth.system.type=nacos
### The token expiration in seconds:
nacos.core.auth.plugin.nacos.token.expire.seconds=${NACOS_AUTH_TOKEN_EXPIRE_SECONDS:18000}
### The default token:
nacos.core.auth.plugin.nacos.token.secret.key=${NACOS_AUTH_TOKEN:SecretKey012345678901234567890123456789012345678901234567890123456789}
### Turn on/off caching of auth information. By turning on this switch, the update of auth information would have a 15 seconds delay.
nacos.core.auth.caching.enabled=${NACOS_AUTH_CACHE_ENABLE:false}
nacos.core.auth.enable.userAgentAuthWhite=${NACOS_AUTH_USER_AGENT_AUTH_WHITE_ENABLE:false}
nacos.core.auth.server.identity.key=${NACOS_AUTH_IDENTITY_KEY:serverIdentity}
nacos.core.auth.server.identity.value=${NACOS_AUTH_IDENTITY_VALUE:security}
server.tomcat.accesslog.enabled=${TOMCAT_ACCESSLOG_ENABLED:false}
# default current work dir
server.tomcat.basedir=file:.
## spring security config
### turn off security
nacos.security.ignore.urls=${NACOS_SECURITY_IGNORE_URLS:/,/error,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-fe/public/**,/v1/auth/**,/v1/console/health/**,/actuator/**,/v1/console/server/**}
# metrics for elastic search
management.metrics.export.elastic.enabled=false
management.metrics.export.influx.enabled=false
nacos.naming.distro.taskDispatchThreadCount=10
nacos.naming.distro.taskDispatchPeriod=200
nacos.naming.distro.batchSyncKeyCount=1000
nacos.naming.distro.initDataRatio=0.9
nacos.naming.distro.syncRetryDelay=5000
nacos.naming.data.warmup=true

  • 20
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Docker-compose是一个用于定义和运行多个Docker容器的工具。而aarch64则是指ARM 64位架构的处理器。 Docker-compose支持在不同的架构上运行,并可以方便地定义和管理多个容器的配置。使用Docker-compose可以通过一个配置文件来定义和管理多个容器,这个配置文件可以包含了容器的镜像、网络、卷等信息,并可以通过一个命令来启动、停止或管理这些容器。 对于aarch64架构来说,可以使用Docker-compose来管理在这种处理器架构上的容器。在aarch64的处理器上运行Docker-compose和在其他架构上运行并没有太大的区别,只需要确保在安装DockerDocker-compose时选择适配aarch64的版本即可。 使用Docker-compose管理aarch64上的容器可以带来很多好处。首先,Docker-compose可以方便地定义和管理多个容器,使得在aarch64上运行复杂的容器应用更加简单。其次,Docker-compose可以提供容器之间的网络互联和共享卷,使得容器之间的通信和数据交互更加方便。最后,Docker-compose可以通过类似于版本控制的方式来管理容器的配置,方便部署和更新容器应用。 总之,Docker-compose可以很好地支持aarch64架构上的容器管理。它提供了简单、便捷的方式来定义、管理和部署多个容器,使得在aarch64上运行容器应用变得更加方便和可行。无论是开发人员还是系统管理员都可以通过Docker-compose轻松地管理aarch64上的容器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值