Macbook M1 Pro使用brew安装Docker并安装Nacos【超详细图解】

目录

一、安装 Docker

二、修改 Docker 镜像地址

三、拉取镜像-举例 Nacos

1.拉取镜像

2.查看本地镜像

3.删除镜像 

四、启动容器

1.启动 Nacos 容器: 

I.方式一【推荐】

II.方式二【懒人推荐】

2.访问 Nacos Web 控制台

3.进入容器和退出容器

五、配置 Nacos 数据库存储

1.新建 Nacos 挂载目录

2.修改 Nacos 配置文件

I.方式一:修改宿主挂载目录的配置文件即可【推荐】

II.方式二:进入 Nacos 容器修改配置

3.安装 MySQL 数据库

4.创建 Nacos 数据库 

5.重新启动 Nacos 容器


一、安装Docker

在终端使用 brew 命令安装 Docker 

brew install --cask --appdir=/Applications docker

中间会让你输入电脑开机密码,安装成功后,双击 Docker 图标就可以运行

没有 brew 命令的要么自己装一个Homebrew,要么去官网手动安装Docker。

打开终端输入 docker --version 即可看到安装成功

二、修改 Docker 镜像地址

设置 -> Docker Engine 修改镜像地址,阿里云的镜像要去阿里云服务器那里获取自己的镜像地址

{"builder": {"gc": {"defaultKeepStorage": "20GB","enabled": true}},"experimental": false,"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn","https://registry.docker-cn.com","http://hub-mirror.c.163.com"]
}

打开终端输入 docker info 即可查看镜像地址是否被更改成功 

三、拉取镜像-举例 Nacos

1.拉取镜像

使用docker pull nacos/nacos-server 总会报错,原因是Docker会根据CPU架构拉取对应的架构版本,而Docker识别到M1/M2芯片需要的架构版本是 linux/arm64/v8 ,而在镜像库里 Nacos 最新版没有 linux/arm64/v8 架构的,其他MySQL、Redis等是有的,正常用命令拉取即可

effy@EFFYdeMacBook-Pro ~ % docker pull nacos/nacos-server

Using default tag: latest

latest: Pulling from nacos/nacos-server

no matching manifest for linux/arm64/v8 in the manifest list entries

可以通过uname -m命令查看主机(虚拟机)的系统架构

docker可以通过--platform <系统架构>命令获取指定系统架构的镜像

由于我查看本机是arm64架构的,所以加上指定架构 --platform linux/amd64 拉取镜像

docker pull --platform linux/amd64 nacos/nacos-server

如果想拉取指定版本,就在命令后面加上版本号,:Tag

例如: docker pull --platform linux/amd64 nacos/nacos-server:v2.4.1

2.查看本地镜像

在终端输入 docker images 查看本地镜像

docker images

3.删除镜像 

使用 docker rmi 镜像名称/镜像Id 可以删除镜像

docker rmi 镜像名称/镜像ID

四、启动容器

1.启动 Nacos 容器: 

I.方式一【推荐】

在终端执行下面的命令,注意:如果 Nacos 版本在2.0及以上,需要把8848、9848和9849三个端口映射出来,否则访问会404失败。Mac苹果电脑,并且在 Docker 上运行某个应用,启动命令需要加入 --platform linux/amd64 ,否则会有警告,影响后面

docker run --platform linux/amd64  --name nacos --env MODE=standalone -p 8848:8848 -p 9848:9848 -p 9849:9849 -d nacos/nacos-server 

这个命令会启动一个名为 Nacos 的容器,并将其绑定到本地机器的 8848 端口,并设置容器模式为 standalone。

查看 Nacos 运行状态 

docker ps

II.方式二【懒人推荐】

笔者太懒了,直接在用户下写shell脚本命名叫startNacos.sh,运行脚本./startNacos.sh就可以启动了,如果是拉取的指定版本号,尾部也要加上指定版本号。

# 在终端执行
touch ~/startNacos.sh
vi ~/startNacos.sh
# 在startNacos.sh复制粘贴下面的代码,下面的这个#!/bin/sh也要加上#!/bin/sh
docker run --platform linux/amd64 \
--name nacos --env MODE=standalone \
-p 8848:8848 -p 9848:9848 -p 9849:9849 \
-d nacos/nacos-server# 在终端继续执行下面的代码,就可以启动了
./startNacos.sh

不懂 Docker 这串命令的请看这里:

docker run -d --name nacos \                                            -d 表示运行在后台,--name 指定名称为nacos
--ip 0.0.0.0 \                                                          自定义分配 IP 地址,可忽略
-p 8848:8848 \                                                          前者为暴露给外部访问的端口,后者为nacos容器端口
-p 9848:9848 \                                                          9848是nacos2.0.0版本以上必须要加上端口映射
-p 9849:9849 \                                                          9849是nacos2.0.0版本以上必须要加上端口映射
--env MODE=standalone \                                                 nacos以单机版启动,默认为cluster(集群)
--env NACOS_AUTH_ENABLE=true \                                          如果使用官方镜像,请在启动docker容器时,添加如下环境变量
-v /www/wwwroot/changjing/docker/nacos/conf/:/home/nacos/conf \         nacos 配置文件目录,“:”前为服务器目录,“:”后为nacos容器中的目录
-v /www/wwwroot/changjing/docker/nacos/logs:/home/nacos/logs \          nacos 日志文件目录,“:”前为服务器目录,“:”后为nacos容器中的目录
-v /www/wwwroot/changjing/docker/nacos/data:/home/nacos/data \          nacos 数据文件目录,“:”前为服务器目录,“:”后为nacos容器中的目录
nacos/nacos-server:v2.2.1                                               指定 docker nacos 版本,这里是2.2.1版本

2.访问 Nacos Web 控制台

启动完 Nacos 容器后,就可以通过 http://localhost:8848/nacos 访问 Nacos Web 控制台了。在控制台上,可以进行服务注册、配置管理和服务发现等操作。

此时 docker desktop 里就有这个容器了 

等你长大了,到时候就长这样,可以看到与其他不同的是 Nacos 那里是有一个amd64的 

3.进入容器和退出容器

# 进入容器
docker exec -it nacos /bin/bash
# 退出容器
exit

但如果读者想用自己的MySQL,而不是Nacos内置的数据库,那么可以继续往下阅读

五、配置 Nacos 数据库存储

默认情况下,Nacos 使用内置的 Derby 数据库进行数据存储。虽然 Derby 是一个轻量级的数据库,但当数据量较大时,它可能会导致性能瓶颈和数据丢失的问题。因此,建议将 Nacos 数据库存储改为 MySQL 或 PostgreSQL 等外部数据库。

1.新建 Nacos 挂载目录

只需要新建conf的挂载即可,其他目录的挂载会自动生成目录(如logs)

mkdir ~/nacos/conf

把 Nacos 容器中的/home/nacos/conf文件夹拷贝

docker cp nacos:/home/nacos/conf ~/nacos

注意:宿主路径填写/nacos,后面不需要写conf,会自动覆盖

我们看下/nacos/conf文件下,nacos完整的配置信息已拷贝过来

2.修改 Nacos 配置文件

在启动 Nacos 容器之前,需要修改配置文件以将 Nacos 数据库存储改为 MySQL。

I.方式一:修改宿主挂载目录的配置文件即可【推荐】

vi ~/nacos/conf/application.properties

如果不知道ip写什么的,就打开终端,输入ifconfig,ip在en0的inet后面。比如:192.x.x.x,或者10.x.x.x,或者172.x.x.x的

II.方式二:进入 Nacos 容器修改配置

docker exec -it nacos /bin/bash
cd /home/nacos/conf

 在 conf 目录下,可以找到 application.properties 文件,备份该文件后直接修改该文件。

cp application.properties application_bak.properties
vi application.properties

与方式一同样操作,这种方式在后续重启 Nacos 的时候命令不一样。

3.安装 MySQL 数据库

首先,需要在本地机器或其他服务器上安装 MySQL 数据库。可以使用以下命令安装 MySQL:

brew install mysql

4.创建 Nacos 数据库 

安装完成 MySQL 后,需要创建一个新的数据库和用户,并授予其访问权限。可以使用以下命令创建一个名为 nacos 的数据库和用户:

创建SQL脚本在官方的GitHub上,这里附上gitee地址:

distribution/conf/mysql-schema.sql · Gitee 极速下载/Nacos - Gitee.com

mysql -u root -p
CREATE DATABASE nacos DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'nacos'@'%' IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES ON nacos.* TO 'nacos'@'%';
FLUSH PRIVILEGES;
EXIT;

这样,就创建了一个名为 nacos 的数据库和一个名为 nacos 的用户,并赋予它们访问权限。

把下面的SQL在Mysql(nacos库下)中执行一次就可以了 

/** Copyright 1999-2018 Alibaba Group Holding Ltd.** Licensed under the Apache License, Version 2.0 (the "License");* you may not use this file except in compliance with the License.* You may obtain a copy of the License at**      http://www.apache.org/licenses/LICENSE-2.0** Unless required by applicable law or agreed to in writing, software* distributed under the License is distributed on an "AS IS" BASIS,* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.* See the License for the specific language governing permissions and* limitations under the License.*/
/******************************************/
/*   表名称 = config_info                  */
/******************************************/
CREATE TABLE `config_info` (`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',`data_id` varchar(255) NOT NULL COMMENT 'data_id',`group_id` varchar(128) DEFAULT NULL COMMENT 'group_id',`content` longtext NOT NULL COMMENT 'content',`md5` varchar(32) DEFAULT NULL COMMENT 'md5',`gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',`gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',`src_user` text COMMENT 'source user',`src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip',`app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',`tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',`c_desc` varchar(256) DEFAULT NULL COMMENT 'configuration description',`c_use` varchar(64) DEFAULT NULL COMMENT 'configuration usage',`effect` varchar(64) DEFAULT NULL COMMENT '配置生效的描述',`type` varchar(64) DEFAULT NULL COMMENT '配置的类型',`c_schema` text COMMENT '配置的模式',`encrypted_data_key` text COMMENT '密钥',PRIMARY KEY (`id`),UNIQUE KEY `uk_configinfo_datagrouptenant` (`data_id`,`group_id`,`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info';
/******************************************/
/*   表名称 = config_info_aggr             */
/******************************************/
CREATE TABLE `config_info_aggr` (`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',`data_id` varchar(255) NOT NULL COMMENT 'data_id',`group_id` varchar(128) NOT NULL COMMENT 'group_id',`datum_id` varchar(255) NOT NULL COMMENT 'datum_id',`content` longtext NOT NULL COMMENT '内容',`gmt_modified` datetime NOT NULL COMMENT '修改时间',`app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',`tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',PRIMARY KEY (`id`),UNIQUE KEY `uk_configinfoaggr_datagrouptenantdatum` (`data_id`,`group_id`,`tenant_id`,`datum_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='增加租户字段';
/******************************************/
/*   表名称 = config_info_beta             */
/******************************************/
CREATE TABLE `config_info_beta` (`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',`data_id` varchar(255) NOT NULL COMMENT 'data_id',`group_id` varchar(128) NOT NULL COMMENT 'group_id',`app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',`content` longtext NOT NULL COMMENT 'content',`beta_ips` varchar(1024) DEFAULT NULL COMMENT 'betaIps',`md5` varchar(32) DEFAULT NULL COMMENT 'md5',`gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',`gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',`src_user` text COMMENT 'source user',`src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip',`tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',`encrypted_data_key` text COMMENT '密钥',PRIMARY KEY (`id`),UNIQUE KEY `uk_configinfobeta_datagrouptenant` (`data_id`,`group_id`,`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info_beta';
/******************************************/
/*   表名称 = config_info_tag              */
/******************************************/
CREATE TABLE `config_info_tag` (`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',`data_id` varchar(255) NOT NULL COMMENT 'data_id',`group_id` varchar(128) NOT NULL COMMENT 'group_id',`tenant_id` varchar(128) DEFAULT '' COMMENT 'tenant_id',`tag_id` varchar(128) NOT NULL COMMENT 'tag_id',`app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',`content` longtext NOT NULL COMMENT 'content',`md5` varchar(32) DEFAULT NULL COMMENT 'md5',`gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',`gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',`src_user` text COMMENT 'source user',`src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip',PRIMARY KEY (`id`),UNIQUE KEY `uk_configinfotag_datagrouptenanttag` (`data_id`,`group_id`,`tenant_id`,`tag_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info_tag';
/******************************************/
/*   表名称 = config_tags_relation         */
/******************************************/
CREATE TABLE `config_tags_relation` (`id` bigint(20) NOT NULL COMMENT 'id',`tag_name` varchar(128) NOT NULL COMMENT 'tag_name',`tag_type` varchar(64) DEFAULT NULL COMMENT 'tag_type',`data_id` varchar(255) NOT NULL COMMENT 'data_id',`group_id` varchar(128) NOT NULL COMMENT 'group_id',`tenant_id` varchar(128) DEFAULT '' COMMENT 'tenant_id',`nid` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'nid, 自增长标识',PRIMARY KEY (`nid`),UNIQUE KEY `uk_configtagrelation_configidtag` (`id`,`tag_name`,`tag_type`),KEY `idx_tenant_id` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_tag_relation';
/******************************************/
/*   表名称 = group_capacity               */
/******************************************/
CREATE TABLE `group_capacity` (`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',`group_id` varchar(128) NOT NULL DEFAULT '' COMMENT 'Group ID,空字符表示整个集群',`quota` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '配额,0表示使用默认值',`usage` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '使用量',`max_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个配置大小上限,单位为字节,0表示使用默认值',`max_aggr_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '聚合子配置最大个数,,0表示使用默认值',`max_aggr_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值',`max_history_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '最大变更历史数量',`gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',`gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',PRIMARY KEY (`id`),UNIQUE KEY `uk_group_id` (`group_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='集群、各Group容量信息表';
/******************************************/
/*   表名称 = his_config_info              */
/******************************************/
CREATE TABLE `his_config_info` (`id` bigint(20) unsigned NOT NULL COMMENT 'id',`nid` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT 'nid, 自增标识',`data_id` varchar(255) NOT NULL COMMENT 'data_id',`group_id` varchar(128) NOT NULL COMMENT 'group_id',`app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',`content` longtext NOT NULL COMMENT 'content',`md5` varchar(32) DEFAULT NULL COMMENT 'md5',`gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',`gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',`src_user` text COMMENT 'source user',`src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip',`op_type` char(10) DEFAULT NULL COMMENT 'operation type',`tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',`encrypted_data_key` text  COMMENT '密钥',PRIMARY KEY (`nid`),KEY `idx_gmt_create` (`gmt_create`),KEY `idx_gmt_modified` (`gmt_modified`),KEY `idx_did` (`data_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='多租户改造';
/******************************************/
/*   表名称 = tenant_capacity              */
/******************************************/
CREATE TABLE `tenant_capacity` (`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',`tenant_id` varchar(128) NOT NULL DEFAULT '' COMMENT 'Tenant ID',`quota` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '配额,0表示使用默认值',`usage` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '使用量',`max_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个配置大小上限,单位为字节,0表示使用默认值',`max_aggr_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '聚合子配置最大个数',`max_aggr_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值',`max_history_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '最大变更历史数量',`gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',`gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',PRIMARY KEY (`id`),UNIQUE KEY `uk_tenant_id` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='租户容量信息表';
CREATE TABLE `tenant_info` (`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',`kp` varchar(128) NOT NULL COMMENT 'kp',`tenant_id` varchar(128) default '' COMMENT 'tenant_id',`tenant_name` varchar(128) default '' COMMENT 'tenant_name',`tenant_desc` varchar(256) DEFAULT NULL COMMENT 'tenant_desc',`create_source` varchar(32) DEFAULT NULL COMMENT 'create_source',`gmt_create` bigint(20) NOT NULL COMMENT '创建时间',`gmt_modified` bigint(20) NOT NULL COMMENT '修改时间',PRIMARY KEY (`id`),UNIQUE KEY `uk_tenant_info_kptenantid` (`kp`,`tenant_id`),KEY `idx_tenant_id` (`tenant_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='tenant_info';
CREATE TABLE `users` (`username` varchar(50) NOT NULL PRIMARY KEY COMMENT 'username',`password` varchar(500) NOT NULL COMMENT 'password',`enabled` boolean NOT NULL COMMENT 'enabled'
);
CREATE TABLE `roles` (`username` varchar(50) NOT NULL COMMENT 'username',`role` varchar(50) NOT NULL COMMENT 'role',UNIQUE INDEX `idx_user_role` (`username` ASC, `role` ASC) USING BTREE
);
CREATE TABLE `permissions` (`role` varchar(50) NOT NULL COMMENT 'role',`resource` varchar(255) NOT NULL COMMENT 'resource',`action` varchar(8) NOT NULL COMMENT 'action',UNIQUE INDEX `uk_role_permission` (`role`,`resource`,`action`) USING BTREE
);
INSERT INTO users (username, password, enabled) VALUES ('nacos', '$2a$10$EuWPZHzz32dJN7jexM34MOeYirDdFAZm2kuWj7VEOJhhZkDrxfvUu', TRUE);
INSERT INTO roles (username, role) VALUES ('nacos', 'ROLE_ADMIN');

5.重新启动 Nacos 容器

修改完配置文件后,需要重新启动 Nacos 容器。可以使用以下命令停止并删除之前的容器:

docker stop nacos && docker rm nacos

然后,根据之前的步骤启动 Nacos 容器,并加上以下环境变量:

请自行将【你的Mac电脑用户名】【前面配置文件中配置jdbc的ip地址】【你的mysql数据库用户名】【你的mysql数据库密码】填入下面的命令再运行,请注意后面必须要有个空格和反斜杠\,最后一行不用添加反斜杠\

docker run --platform linux/amd64 \
--name nacos --env MODE=standalone \
-p 8848:8848 -p 9848:9848 -p 9849:9849 \
--privileged=true --restart=always \
-e SPRING_DATASOURCE_PLATFORM=mysql \
-e MYSQL_SERVICE_HOST=前面配置文件中配置jdbc的ip地址 \
-e MYSQL_SERVICE_PORT=3306 \
-e MYSQL_SERVICE_DB_NAME=nacos \
-e MYSQL_SERVICE_USER=你的mysql数据库用户名 \
-e MYSQL_SERVICE_PASSWORD=你的mysql数据库密码 \
-v /Users/你的Mac电脑用户名/nacos/logs:/home/nacos/logs \
-v /Users/你的Mac电脑用户名/nacos/conf:/home/nacos/conf \
-d nacos/nacos-server

启动完容器后,就可以在 Nacos Web 控制台中使用 MySQL 数据库存储了。

参数详解(根据自己的需要,选择参数)

-p 8848:8848 # 宿主机端口:容器端口
–name nacos # 容器名字
–privileged=true # 使用该参数,container内的root拥有真正的root权限
–network host # 设置属于该容器的网络
–restart=always # 总是重启
-e PREFER_HOST_MODE=hostname # 是否支持 hostname,可选参数为hostname/ip,默认值是当前宿主机的ip
-e MODE=standalone # 使用 standalone模式(单机模式),MODE值有cluster模式/standalone模式两种
-e JVM_XMS=256m # -Xms 为jvm启动时分配的内存[我设置会导致nacos启动异常,无法访问,故没有设置]
-e JVM_XMX=1024m # -Xmx 为jvm运行过程中分配的最大内存[我设置会导致nacos启动异常,无法访问,故没有设置]
-d nacos/nacos-server # 后台启动模式及使用的镜像
-v /Users/effy/nacos/logs:/home/nacos/logs \

-v:挂载宿主机的一个目录, 持久化存储的关键所在,将主机目录挂载到容器对应目录,分别是:配置文件、日志文件
–restart=always:容器自动启动参数,其值可以为[no,on-failure,always]
no为默认值,表示容器退出时,docker不自动重启容器
on-failure表示,若容器的退出状态非0,则docker自动重启容器,还可以指定重启次数,若超过指定次数未能启动容器则放弃
always表示,只要容器退出,则docker将自动重启容器

如果你选择的是方式二修改 Nacos 配置文件,那么则使用下面的命令重新启动 Nacos 容器

docker run --platform linux/amd64 \
--name nacos --env MODE=standalone \
-p 8848:8848 -p 9848:9848 -p 9849:9849 \
-d nacos/nacos-server
--privileged=true \
--restart=always \
-e PREFER_HOST_MODE=hostname \
-e JVM_XMS=256m \
-e JVM_XMX=1024m

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/306214.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Java】JDK1.8 HashMap源码,put源码详细讲解

&#x1f4dd;个人主页&#xff1a;哈__ 期待您的关注 在Java中&#xff0c;HashMap结构是被经常使用的&#xff0c;在面试当中也是经常会被问到的。这篇文章我给大家分享一下我对于HashMap结构源码的理解。 HashMap的存储与一般的数组不同&#xff0c;HashMap的每一个元素存…

一文读懂Partisia Blockchain,被严重低估的隐私区块链生态

在今年3月&#xff0c;隐私公链Partisia Blockchain迎来了重要的进展&#xff0c;该生态通证 $MPC上线了交易所&#xff0c;目前$MPC通证可以在Kucoin、Gate、BitMart、Bitfinex、Bitture等平台交易&#xff0c;并将在不久后上线MEXC平台。 在上个月上线市场至今&#xff0c;MP…

股票价格预测 | Python使用GAN预测股票价格

文章目录 效果一览文章概述代码设计效果一览 文章概述 生成对抗网络(GAN)是一种强大的机器学习模型,用于生成以假乱真的数据。然而,使用GAN来预测股票价格可能会面临以下挑战: 数据可用性:GAN需要大量的数据进行训练,以便生成准确的输出。对于股票价格预测,历史股票价…

单例19c RMAN数据迁移方案

一、环境说明 源库 目标库 IP 192.168.37.200 192.168.37.202 系统版本 RedHat 7.9 RedHat 7.9 数据库版本 19.3.0.0.0 19.3.0.0.0 SID beg beg hostname beg rman 数据量 1353M 说明:源库已经创建数据库实例&#xff0c;并且存在用户kk和他创建的表空间…

企业搭建分销商城系统要注意什么?

分销商城系统是一种专门设计出来的电商平台&#xff0c;旨在通过构建多层级的分销网络体系&#xff0c;帮助企业将产品或服务高效地推广和销售至终端消费者。那么&#xff0c;搭建分销商城系统要注意什么呢&#xff1f;我们从优势、功能、玩法来进行分析。 一、分销商城有哪些…

dPET论文笔记

PBPK论文笔记 题目&#xff1a;Self-supervised Learning for Physiologically-Based Pharmacokinetic Modeling in Dynamic PET 摘要 动态正电子发射断层扫描成像 &#xff08;dPET&#xff09; 提供示踪剂的时间分辨图像。从 dPET 中提取的时间活动曲线 &#xff08;TAC&a…

Java入门-数组

数组 什么是数组 数组( array )是一种最简单的复合数据类型&#xff0c;它是有序数据的集合&#xff0c;数组中的每个元素具有相同的数据类型&#xff0c;可以用一个统一的数组名和不同的下标来确定数组中唯一的元素。 数组的内存结构是分配一系列内存大小相等的连续空间。 …

SpringCloudAlibabaSeate处理分布式事务

SpringCloudAlibabaSeate处理分布式事务 1、部分面试题 微服务boot/cloud做的项目&#xff0c;你不可能只有一个数据库吧&#xff1f;那么多个数据库之间如何处理分布式事务的&#xff1f; 一个场景&#xff1a;在订单支付成功后&#xff0c;交易中心会调用订单中心的服务把订…

15. 【Android教程】按钮 Button/ImageButton

在前面两章我们讲了 TextView&#xff0c;它是一个纯输出的控件&#xff1b;而 EditText 在 TextView 基础之上加入了简单的输入功能&#xff1b;今天要讲的 Button 是一个和用户互动感很强的控件&#xff0c;从今往后不再是单纯的文本展示&#xff0c;我们可以通过 TextView、…

2024年第五届计算机视觉与信息技术国际会议(CVIT 2024)即将召开!

2024年第五届计算机视觉与信息技术国际会议&#xff08;CVIT 2024&#xff09;将于2024年8月16-18日在北京举行。CVIT 2024由北方工业大学主办&#xff0c;国内外的专家学者将齐聚一堂&#xff0c;共同分享最新的技术突破、研究方法和应用案例&#xff0c;共同推动计算机视觉与…

选择排序解读

在计算机科学中&#xff0c;排序算法是一种将数据元素按照某种顺序排列的算法。今天&#xff0c;我们要探讨的是选择排序&#xff08;Selection Sort&#xff09;&#xff0c;这是一种简单直观的排序方法&#xff0c;通过不断选择剩余元素中的最小&#xff08;或最大&#xff0…

MySOL之旅--------MySQL数据库基础( 3 )

本篇碎碎念:要相信啊,胜利就在前方,要是因为一点小事就停滞不前,可能你也不适合获取胜利,成功的路上会伴有泥石,但是走到最后,你会发现身上的泥泞皆是荣耀的勋章! 今日份励志文案: 凡是发生皆有利于我 目录 查询(select) 1.全列查询 2.指定列查询 3.查询字段为表达式 ​编…

加固系统安全,防范ssh暴力破解之Fail2Ban

你是否还在担心你的服务器被攻击&#xff1f;你是否还在担心你的博客的安全&#xff1f;你是否还在担心你的隐私&#xff1f;别急fail2ban它来了&#xff0c;它可以解决你的一切问题。 Fail2Ban 是什么&#xff1f; 现在让我们一起来认识一下今天的主角 – Fail2Ban。简单说来…

【Linux 命令】内核、驱动调试手段总结

文章目录 1. printk2. strace3. ltrace4. ptrace5. ftrace6. 动态打印7. perf8. devmem9. demsg参考&#xff1a; 1. printk printk() 是 Linux 内核中最广为人知的函数之一。它是我们打印消息的标准工具&#xff0c;通常也是追踪和调试的最基本方法。 虽然 printk() 是基于 …

深入理解中文编码:原理、应用与实践

title: 深入理解中文编码&#xff1a;原理、应用与实践 date: 2024/4/12 15:09:00 updated: 2024/4/12 15:09:00 tags: 中文编码字符集编码标准存储处理转换技术安全加密未来趋势 第一章&#xff1a;引言 编码的基本概念与作用 编码是将信息转换为特定格式以便存储、传输或处…

在启动Windows安装的Nacos时报错

Please set the JAVA_HOME variable in your environm 有可能时jdk版本过低引起的&#xff0c;所以安装一个1.8版本以上的jdk 在安装jdk完成以后配置好环境变量&#xff0c;测试一下 winr打开控制台&#xff0c;输入&#xff1a; Java -version 出现如下情况说明jdk安装配置…

护眼台灯哪个牌子最好,五款高中生护眼台灯推荐

​在当今时代&#xff0c;孩子们背负着沉重的学业负担&#xff0c;随着他们年龄的增长&#xff0c;作业量也随之增加&#xff0c;这意味着每天用眼的时间越来越长。尤其是在夜晚&#xff0c;许多孩子学习到深夜&#xff0c;若照明不当&#xff0c;极易导致视力下降。因此&#…

Gson的用法

1. 导入依赖 <dependency><groupId>com.google.code.gson</groupId><artifactId>gson</artifactId><version>2.8.6</version> </dependency> 2. 使用Gson进行解析 2.1 Gson解析普通对象 package com.jiang.partnetbackend.…

LLM大语言模型(九):LangChain封装自定义的LLM

背景 想基于ChatGLM3-6B用LangChain做LLM应用&#xff0c;需要先了解下LangChain中对LLM的封装。本文以一个hello world的封装来示例。 LangChain中对LLM的封装 继承关系&#xff1a;BaseLanguageModel——》BaseLLM——》LLM LLM类 简化和LLM的交互 _call抽象方法定义 ab…

DXP学习002-PCB编辑器的环境参数及电路板参数相关设置

目录 一&#xff0c;dxp的pcb编辑器环境 1&#xff0c;创建新的PCB设计文档 2&#xff0c;PCB编辑器界面 1&#xff09;布线工具栏 2&#xff09;公用工具栏 3&#xff09;层标签栏 ​编辑 3&#xff0c;PCB设计面板 1&#xff09;打开pcb设计面板 4&#xff0c;PCB观…