前言
自己玩docker的随手记录。
一、获取image
1.docker hub 搜索nacos镜像。
docker search nacos
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
nacos/nacos-server This project contains a Docker image meant t… 330 [OK]
zhusaidong/nacos-server-m1 Nacos Server for Apple MacOS M1 12
nacos/nacos-mysql-master nacos-mysql-master 6
zill057/nacos-server-apple-silicon nacos with Apple Silicon M1 Chip support. 支… 6
nacos/nacos-mysql 6
paderlol/nacos Nacos-quick-start-https://nacos.io/en-us/doc… 5
chenfengwei/nacos nacos服务镜像,nacos版本1.3.2,同时兼任arm64… 3
nacos/nacos-operator 2
king019/nacos 2
nacos/nacos-mysql-slave 1
nacos/nacos-peer-finder-plugin scale plugin for nacos k8s 1
tanyi/nacos-server nacos-server官方包制作而成的镜像 1
jude95/nacos-server-mysql8 nacos with mysql8 0
nacosta/node-5.5.0-base 0
nacosta/redis 0
nacosta/nodejs 0
centralx/nacos-server Multi CPU architectures support for nacos/na… 0
dockerlishijie/nacos-server 0
tonychen0716/nacos-server Multi-arch image for Alibaba Nacos 0
lizexiong/nacos 0
eduosi/nacos-server 0
loads/nacos-server 0
paderlol/nacos-mysql-master 0
paderlol/nacos-mysql-slave 0
lijiahao1995/nacos 0
2.拉取选择的镜像,此处选择最新版本
docker pull nacos/nacos-server
3.查看镜像仓库
docker images
DoitsMacbookPro :: ~ » docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
redis latest 9da089657551 2 days ago 117MB
mysql latest 43fcfca0776d 2 days ago 449MB
nacos/nacos-server latest 5ef6d98bd956 1 days ago 1.06GB
二、创建container
1.创建本地目录,挂载到容器目录,持久化nacos数据和配置,container删除后数据依然在。
mkdir -p /Users/doit/Docker/nacos/logs
mkdir -p /Users/doit/Docker/nacos/data
mkdir -p /Users/doit/Docker/nacos/conf
2.使用mysql保存数据,拉取sql执行初始化,地址如下。
https://github.com/alibaba/nacos/blob/master/config/src/main/resources/META-INF/nacos-db.sql
3.创建container。
docker run -d -p 8848:8848 \
--name nacos \
--network=doit \
--env JVM_XMS=256m \
--env JVM_XMX=256m \
--env MODE=standalone \
--env SPRING_DATASOURCE_PLATFORM=mysql \
--env MYSQL_SERVICE_HOST=172.18.0.2 \
--env MYSQL_SERVICE_PORT=3306 \
--env MYSQL_SERVICE_DB_NAME=nacos \
--env MYSQL_SERVICE_USER=nacos \
--env MYSQL_SERVICE_PASSWORD=nacos \
-v /Users/doit/Docker/nacos/conf:/home/nacos/conf \
-v /Users/doit/Docker/nacos/logs:/home/nacos/logs \
-v /Users/doit/Docker/nacos/data:/home/nacos/data \
nacos/nacos-server
4.命令解释。
docker run #在docker中启动一个容器实例
-d #该容器在后台运行
-p 8848:8848 #容器与主机映射端口为,主机3306,容器3306
--name nacos #容器运行后的名称
--network=doit \ #指定网桥。因为使用docker里的mysql,所以要加入对应的网络。
--env JVM_XMS=256m
--env JVM_XMX=256m
--env MODE=standalone #单机模式
--env SPRING_DATASOURCE_PLATFORM=mysql #数据库类型
--env MYSQL_SERVICE_HOST=172.18.0.2 #数据库IP
--env MYSQL_SERVICE_PORT=3306 #数据库端口
--env MYSQL_SERVICE_DB_NAME=nacos #数据库schema
--env MYSQL_SERVICE_USER=nacos #数据库username
--env MYSQL_SERVICE_PASSWORD=nacos #数据库password
-v /Users/doit/Docker/nacos/conf:/home/nacos/conf #配置目录挂载
-v /Users/doit/Docker/nacos/logs:/home/nacos/logs #日志目录挂载
-v /Users/doit/Docker/nacos/data:/home/nacos/data #数据目录挂载
nacos/nacos-server #需要运行的容器名称以及版本号
5.查看情况。
docker logs nacos #启动日志
docker inspect nacos #环境配置
6.查看情况。
访问http://localhost:8848/nacos 。默认用户名密码均为nacos。
7.踩坑记录。
nacos启动提示" java.lang.IllegalStateException: No DataSource set " 。 起因是nacos关闭时未完成mysql连接关闭,mysql依旧认为连接存在。解决方案如下。
docker exec -it mysql bash #进入mysql
mysql -p -u username #连接mysql,要输入password
flush hosts;
重新启动nacos即可。切记,最好用nacos配置的用户去执行命令。