本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com
6.0.22, 6.0.22***guard-java21, 5.0.34, latest| 标签 | 说明 |
|---|---|
| latest | MigratoryData服务器最新版本镜像 |
<version> | 指定版本的MigratoryData服务器镜像(如6.0.22) |
MigratoryData Server是一款高可扩展的消息服务器,专为支持数百万用户的实时Web和移动应用设计并使用。该Docker镜像提供了MigratoryData Server的容器化部署方案,简化了服务器的安装、配置和扩展流程。
更多关于MigratoryData Server的信息,请访问[***]
!logo
要启动单个MigratoryData实例并允许客户端通过8800端口连接,请先安装Docker,然后运行以下命令:
$ docker pull migratorydata/server:latest $ docker run -d --name my_migratorydata -p 8800:8800 migratorydata/server:latest
现在,您可以通过[***]访问并运行MigratoryData服务器提供的演示应用(yourhostname是安装该实例的机器的DNS名称或IP地址,需确保客户端可解析和访问)。
查看容器日志:
$ docker logs my_migratorydata
停止并删除容器:
$ docker stop my_migratorydata $ docker rm my_migratorydata
可通过以下方式自定义Docker容器中运行的MigratoryData服务器的各个方面。
通过设置MIGRATORYDATA_EXTRA_OPTS环境变量,可定义或覆盖默认配置文件中的参数,语法如下:
-Dparameter=value
注意:参数和值均无需使用单引号或双引号,且值中不允许包含空格。完整参数列表请参见MigratoryData配置指南。
三个环境变量用于自定义Java选项:
MIGRATORYDATA_JAVA_GC_LOG_OPTS: 垃圾回收日志选项MIGRATORYDATA_JAVA_GC_OPTS: 垃圾收集器配置MIGRATORYDATA_JAVA_EXTRA_OPTS: 其他Java选项这些选项均有默认值,适用于大多数场景,通常无需额外配置。
要使用许可证密钥,通过额外选项覆盖默认配置文件中的LicenseKey参数:
$ docker run --platform linux/amd64 -d -e MIGRATORYDATA_EXTRA_OPTS='-DLicenseKey=yourlicensekey' \ --name my_migratorydata -p 8800:8800 migratorydata/server:latest
其中yourlicensekey是从MigratoryData获取的评估、测试或生产许可证密钥。
要启用JMX监控,需定义JMX相关参数并将JMX端口映射到主机:
$ docker run --platform linux/amd64 -d \ -e MIGRATORYDATA_EXTRA_OPTS='-DLicenseKey=yourlicensekey -DMonitor=JMX -DMonitorUsername=admin -DMonitorPassword=pass \ -DMonitorJMX.Listen=*:3000 -DMonitorJMX.Authentication=true -DMonitorJMX.Encryption=false' \ --name my_migratorydata -p 8800:8800 -p 3000:3000 migratorydata/server:latest
现在,您可以使用JMX客户端通过yourhostname:3000连接,凭据为admin/pass。若使用Java的jconsole,需通过MIGRATORYDATA_JAVA_EXTRA_OPTS添加额外Java选项:
$ docker run --platform linux/amd64 -d \ -e MIGRATORYDATA_EXTRA_OPTS='-DLicenseKey=yourlicensekey -DMonitor=JMX -DMonitorUsername=admin -DMonitorPassword=pass \ -DMonitorJMX.Listen=*:3000 -DMonitorJMX.Authentication=true -DMonitorJMX.Encryption=false' \ -e MIGRATORYDATA_JAVA_EXTRA_OPTS='-Djava.net.preferIPv4Stack=true -Djava.rmi.server.hostname=yourhostname' \ --name my_migratorydata -p 8800:8800 -p 3000:3000 migratorydata/server:latest
除了可通过docker logs my_migratorydata查看的标准输出日志外,镜像还将日志写入默认路径/migratorydata/logs。可通过以下方式修改日志路径:
$ docker run --platform linux/amd64 -d -e MIGRATORYDATA_EXTRA_OPTS='-DLicenseKey=yourlicensekey \ -DLogFolder=/myvolume/migratorydata/logs' -p 8800:8800 migratorydata/server:latest
要记录访问日志,使用-DAccessLog=true参数:
$ docker run --platform linux/amd64 -d -e MIGRATORYDATA_EXTRA_OPTS='-DLicenseKey=yourlicensekey \ -DLogFolder=/myvolume/migratorydata/logs \ -DAccessLog=true' -p 8800:8800 migratorydata/server:latest
要部署一个或多个MigratoryData服务器扩展,需将包含扩展的卷挂载到标准扩展目录/migratorydata/extensions。
例如,假设您开发了一个权限扩展extension.jar并部署到持久化目录/myvolume/migratorydata/extensions,运行以下命令加载该扩展:
$ docker run --platform linux/amd64 -d -e MIGRATORYDATA_EXTRA_OPTS='-DLicenseKey=yourlicensekey -DEntitlement=Custom' \ -v /myvolume/migratorydata/extensions:/migratorydata/extensions \ --name mymigratorydata -p 8800:8800 migratorydata/server:latest
或者,通过构建新镜像部署扩展:
FROM migratorydata/server:latest COPY extension.jar /migratorydata/extensions/extension.jar
构建并运行:
$ docker build -t custom_migratorydata . $ docker run --platform linux/amd64 --name my_custom_migratorydata -d custom_migratorydata
以下示例配置用于在Kubernetes上部署包含三个MigratoryData服务器的集群。
# # 供MigratoryData集群与客户端通信的Service # apiVersion: v1 kind: Service metadata: name: migratorydata-cs # 取消以下两行注释以使用Application Gateway部署集群 #annotations: # service.beta.kubernetes.io/azure-load-***-internal: "true" labels: app: migratorydata spec: type: Load*** ports: - name: client-port port: 80 protocol: TCP targetPort: 8800 selector: app: migratorydata --- # # 用于集群内部通信的Headless Service # apiVersion: v1 kind: Service metadata: name: migratorydata-hs labels: app: migratorydata spec: clusterIP: None ports: - name: inter-cluster1 port: 8801 protocol: TCP targetPort: 8801 - name: inter-cluster2 port: 8802 protocol: TCP targetPort: 8802 - name: inter-cluster3 port: 8803 protocol: TCP targetPort: 8803 - name: inter-cluster4 port: 8804 protocol: TCP targetPort: 8804 selector: app: migratorydata --- apiVersion: policy/v1beta1 kind: PodDisruptionBudget metadata: name: migratorydata-pdb spec: minAvailable: 3 # 该值必须大于或等于种子成员数量 🅐 selector: matchLabels: app: migratorydata --- apiVersion: apps/v1 kind: StatefulSet metadata: name: migratorydata spec: selector: matchLabels: app: migratorydata serviceName: migratorydata-hs replicas: 3 # 期望的集群成员数量 🅑 updateStrategy: type: RollingUpdate podManagementPolicy: OrderedReady template: metadata: labels: app: migratorydata spec: affinity: podAntiAffinity: preferredDuringSchedulingIgnoredDuringExecution: - weight: 1 podAffinityTerm: labelSelector: matchExpressions: - key: "app" operator: In values: - migratorydata topologyKey: "kubernetes.io/hostname" containers: - name: migratorydata-cluster imagePullPolicy: Always image: migratorydata/server:latest env: - name: MIGRATORYDATA_JAVA_EXTRA_OPTS value: "-XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap" - name: MIGRATORYDATA_EXTRA_OPTS value: "-DMemory=128MB \ -DClusterDeliveryMode=Guaranteed \ -DLogLevel=INFO \ -DX.ConnectionOffload=true \ -DClusterSeedMemberCount=3" # 定义种子成员数量 🅒 command: - bash - "-c" - | set -x HOST=`hostname -s` DOMAIN=`hostname -d` CLUSTER_PORT=8801 MAX_REPLICAS=5 # 定义集群成员的最大数量 🅓 if [[ $HOST =~ (.*)-([0-9]+)$ ]]; then NAME=${BASH_REMATCH[1]} fi CLUSTER_MEMBER_LISTEN=$HOST.$DOMAIN:$CLUSTER_PORT echo $CLUSTER_MEMBER_LISTEN MIGRATORYDATA_EXTRA_OPTS="$MIGRATORYDATA_EXTRA_OPTS -DClusterMemberListen=$CLUSTER_MEMBER_LISTEN" CLUSTER_MEMBERS="" for (( i=1; i < $MAX_REPLICAS; i++ )) do CLUSTER_MEMBERS="$CLUSTER_MEMBERS$NAME-$((i-1)).$DOMAIN:$CLUSTER_PORT," done CLUSTER_MEMBERS="$CLUSTER_MEMBERS$NAME-$((MAX_REPLICAS-1)).$DOMAIN:$CLUSTER_PORT" echo $CLUSTER_MEMBERS MIGRATORYDATA_EXTRA_OPTS="$MIGRATORYDATA_EXTRA_OPTS -DClusterMembers=$CLUSTER_MEMBERS" echo $MIGRATORYDATA_EXTRA_OPTS export MIGRATORYDATA_EXTRA_OPTS ./start-migratorydata.sh resources: requests: memory: "256Mi" cpu: "0.5" ports: - name: client-port containerPort: 8800 - name: inter-cluster1 containerPort: 8801 - name: inter-cluster2 containerPort: 8802 - name: inter-cluster3 containerPort: 8803 - name: inter-cluster4 containerPort: 8804 readinessProbe: tcpSocket: port: 8800 initialDelaySeconds: 10 periodSeconds: 5 livenessProbe: tcpSocket: port: 8800 initialDelaySeconds: 10 periodSeconds: 5
上述清单包含Headless Service、客户端Service、PodDisruptionBudget和StatefulSet。客户端Service用于处理客户端连接,Headless Service提供集群实例的DNS记录以支持内部通信。
部署集群:
migratorydata-cluster.yaml$ kubectl apply -f migratorydata-cluster.yaml
验证部署:
$ kubectl get pods NAME READY STATUS RESTARTS AGE migratorydata-0 1/1 Running 0 2m52s migratorydata-1 1/1 Running 0 2m40s migratorydata-2 1/1 Running 0 2m25s
$ kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP 10.0.0.1 <none> 443/TCP 37m migratorydata-cs Load*** 10.0.58.189 YourExternalIP 80:31596/TCP 4m8s migratorydata-hs ClusterIP None <none> 8801/TCP,8802/TCP,8803/TCP,8804/TCP 4m7s
现在,您可以通过[***]访问集群中每个MigratoryData服务器提供的演示应用(YourExternalIP是Kubernetes分配给客户端Service的外部IP,可通过kubectl get svc获取)。
在阅读本节前,建议先了解MigratoryData的集群功能。
上述示例YAML中,通过shell变量MAX_REPLICAS🅓定义了集群最大成员数为5,但replicas字段🅑仅创建了3个成员,满足minAvailable字段🅐的最小要求。同时,通过ClusterSeedMemberCount参数🅒配置了3个种子节点,满足minAvailable值大于或等于种子成员数的要求。
可根据系统负载手动或自动添加/移除集群成员(最多5个)。
通过修改replicas字段🅑扩展集群(最多5个成员):
$ kubectl scale statefulsets migratorydata --replicas=5
负载降低时减少成员:
$ kubectl scale statefulsets migratorydata --replicas=4
注意:replicas值不能大于MAX_REPLICAS🅓,也不能小于minAvailable🅐。
若系统负载变化较快,可使用Kubernetes的自动扩展功能。Kubernetes可监控CPU使用率并自动调整replicas值。
例如,当CPU使用率超过50%时扩展至最多5个成员,低于50%时缩减至最少3个成员:
$ kubectl autoscale statefulset migratorydata --cpu-percent=50 --min=3 --max=5
或使用YAML清单:
apiVersion: autoscaling/v1 kind: HorizontalPodAutoscaler metadata: name: migratorydata-autoscale spec: maxReplicas: 5 minRe




免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录方式配置轩辕镜像加速服务,包含7个详细步骤
在 Linux 系统上配置轩辕镜像源,支持主流发行版
在 Docker Desktop 中配置轩辕镜像加速,适用于桌面系统
在 Docker Compose 中使用轩辕镜像加速,支持容器编排
在 k8s 中配置 containerd 使用轩辕镜像加速
在宝塔面板中配置轩辕镜像加速,提升服务器管理效率
在 Synology 群晖NAS系统中配置轩辕镜像加速
在飞牛fnOS系统中配置轩辕镜像加速
在极空间NAS中配置轩辕镜像加速
在爱快ikuai系统中配置轩辕镜像加速
在绿联NAS系统中配置轩辕镜像加速
在威联通NAS系统中配置轩辕镜像加速
在 Podman 中配置轩辕镜像加速,支持多系统
配置轩辕镜像加速9大主流镜像仓库,包含详细配置步骤
无需登录即可使用轩辕镜像加速服务,更加便捷高效
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429