Docker部署本地开发环境

1,264 阅读18分钟

Docker部署本地开发环境


  • Bash的换行符为 \

  • CMD的换行符为 ^

  • Powershell的换行符为 `

参数简析:

  • -p 宿主机端口:容器端口

需要设置Host:

# Added by Docker Desktop
192.168.1.6 host.docker.internal
192.168.1.6 gateway.docker.internal
# To allow the same kube context to work on the host and the container:
192.168.1.6 kubernetes.docker.internal
# End of section

关系型数据库


MySQL

docker pull bitnami/mysql:latest

docker run -itd \
    --name mysql-test \
    -p 3306:3306 \
    -e ALLOW_EMPTY_PASSWORD=yes \
    -e MYSQL_ROOT_PASSWORD=123456 \
    bitnami/mysql:latest

MariaDB

docker pull bitnami/mariadb:latest

docker run -itd \
    --name mariadb-test \
    -p 3306:3306 \
    -e ALLOW_EMPTY_PASSWORD=yes \
    -e MARIADB_ROOT_PASSWORD=123456 \
    bitnami/mariadb:latest

PostgreSQL

docker pull bitnami/postgresql:latest
docker pull bitnami/postgresql-repmgr:latest
docker pull bitnami/pgbouncer:latest
docker pull bitnami/pgpool:latest
docker pull bitnami/postgres-exporter:latest

docker run -itd \
    --name postgres-test \
    -p 5432:5432 \
    -e POSTGRES_PASSWORD=123456 \
    bitnami/postgresql:latest

docker exec -it postgres-test "apt update"
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
CREATE EXTENSION IF NOT EXISTS "postgis";

SELECT version();
SELECT postgis_full_version();
  • 默认账号:postgres
  • 默认密码:123456

Citus

Citus的策略是把分区(Partition)数据分布到各个工作节点。

单机部署

单机部署,相当于整个集群只有一个协调器,而没有旁的工作节点:

docker run -itd \
    --name citus-standalone \
    -p 5432:5432 \
    -e POSTGRES_PASSWORD=123456 \
    citusdata/citus:latest

最小集群部署

所有操作都是通过协调器节点进行操作,所以,对外只暴露协调器的端口,其他的工作节点却并不暴露,他们在内部通过docker网络进行通讯:

# 添加网络
docker network create citus-network

# 添加协调器节点
docker run --name citus-coordinator1 \
    --network=citus-network \
    -p 5432:5432 \
    -e POSTGRES_PASSWORD=123456 \
    -d citusdata/citus:latest

# 添加工作节点1
docker run --name citus-work1 \
    --network=citus-network \
    -e POSTGRES_PASSWORD=123456 \
    -d citusdata/citus:latest

# 添加工作节点2
docker run --name citus-work2 \
    --network=citus-network \
    -e POSTGRES_PASSWORD=123456 \
    -d citusdata/citus:latest

在协调器节点进行SQL操作:

-- 设置协调器节点信息
SELECT citus_set_coordinator_host('citus-coordinator1', 5432);

-- 添加工作节点
SELECT * from citus_add_node('citus-work1', 5432);
SELECT * from citus_add_node('citus-work2', 5432);

-- 列表查看worker节点
SELECT * FROM citus_get_active_worker_nodes();

Greenplum

docker run -itd \
    --name greenplum-standalone \
    -p 5432:5432 \
    projectairws/greenplum:latest

SQLServer

docker pull mcr.microsoft.com/mssql/server:2019-latest

docker run -itd \
    --name MSSQL_1433 \
    -m 512m \
    -e "ACCEPT_EULA=Y" \
    -e "SA_PASSWORD=Abcd123456789*" \
    -p 1433:1433 \
    mcr.microsoft.com/mssql/server:2019-latest

TiDB

docker pull pingcap/tidb:latest
docker pull pingcap/tikv:latest
docker pull pingcap/pd:latest

docker run -itd \
    --name tidb-test \
    -v /data/tidb/data:/tmp/tidb \
    --privileged=true \
    -p 4000:4000 \
    -p 10080:10080 \
    pingcap/tidb:latest

图数据库


Neo4J

docker pull bitnami/neo4j:latest

docker run -itd \
    --name neo4j-test \
    -p 7473:7473 \
    -p 7687:7687 \
    -p 7474:7474 \
    -e NEO4J_PASSWORD=bitnami \
    bitnami/neo4j:latest

时序型数据库


InfluxDB

docker pull bitnami/influxdb:latest

docker run -itd \
    --name influxdb-test \
    -p 8083:8083 \
    -p 8086:8086 \
    -e INFLUXDB_HTTP_AUTH_ENABLED=true \
    -e INFLUXDB_ADMIN_USER=admin \
    -e INFLUXDB_ADMIN_USER_PASSWORD=123456789 \
    -e INFLUXDB_ADMIN_USER_TOKEN=admintoken123 \
    -e INFLUXDB_DB=my_database \
    bitnami/influxdb:latest
create user "admin" with password '123456789' with all privileges

TimescaleDB

docker pull timescale/timescaledb:latest-pg14
docker pull timescale/timescaledb:latest-pg15
docker pull timescale/timescaledb-postgis:latest-pg13
docker pull timescale/pg_prometheus:latest-pg11

docker run -itd \
    --name timescale-test \
    -p 5432:5432 \
    -e POSTGRES_PASSWORD=123456 \
    timescale/timescaledb:latest-pg15
  • 默认账号:postgres
  • 默认密码:123456

OpenTSDB

docker pull petergrace/opentsdb-docker:latest

docker run -itd \
    --name opentsdb-test \
    -p 4242:4242 \
    petergrace/opentsdb-docker:latest

QuestDB

docker pull questdb/questdb:latest

docker run -itd \
    --name questdb-test \
    -p 9000:9000 \
    -p 8812:8812 \
    -p 9009:9009 \
    questdb/questdb:latest

TDengine

docker pull tdengine/tdengine:latest

docker run -itd \
    --name tdengine-test \
    -p 6030-6041:6030-6041 \
    -p 6030-6041:6030-6041/udp \
    tdengine/tdengine:latest

ElasticSearch

docker pull bitnami/elasticsearch:latest

docker run -itd \
    --name elasticsearch \
    -p 9200:9200 \
    -p 9300:9300 \
    -e ELASTICSEARCH_USERNAME=elastic \
    -e ELASTICSEARCH_PASSWORD=elastic \
    -e xpack.security.enabled=true \
    -e discovery.type=single-node \
    -e http.cors.enabled=true \
    -e http.cors.allow-origin=http://localhost:13580,http://127.0.0.1:13580 \
    -e http.cors.allow-headers=X-Requested-With,X-Auth-Token,Content-Type,Content-Length,Authorization \
    -e http.cors.allow-credentials=true \
    bitnami/elasticsearch:latest

docker pull appbaseio/dejavu:latest

docker run -itd \
    --name dejavu-test \
    -p 13580:1358 \
    appbaseio/dejavu:latest

http://localhost:13580/

Clickhouse

docker pull yandex/clickhouse-server:latest
docker pull clickhouse/clickhouse-server:latest

# 8123为http接口 9000为tcp接口 9004为mysql接口
# 推荐使用DBeaver作为客户端
docker run -itd \
    --name clickhouse-server \
    -p 8123:8123 \
    -p 9000:9000 \
    -p 9004:9004 \
    --network=app-tier \
    --ulimit \
    nofile=262144:262144 \
    clickhouse/clickhouse-server:latest
  • 默认账号: default
  • 密码:无

Doris

首先要配置Java虚拟机,需在宿主机执行如下命令:

sudo sysctl -w vm.max_map_count= 2000000

接着创建一个子网网桥:

docker network create --driver bridge --subnet=172.20.80.0/24 doris-network
docker pull apache/doris:1.2.2-be-x86_64
docker pull apache/doris:1.2.2-fe-x86_64

docker run -itd \
    --name=doris-fe \
    --env FE_SERVERS="fe1:172.20.80.2:9010" \
    --env FE_ID=1 \
    -p 8030:8030 \
    -p 9030:9030 \
    -v /data/fe/doris-meta:/opt/apache-doris/fe/doris-meta \
    -v /data/fe/conf:/opt/apache-doris/fe/conf \
    -v /data/fe/log:/opt/apache-doris/fe/log \
    --network=doris-network \
    --ip=172.20.80.2 \
    apache/doris:1.2.2-fe-x86_64

docker run -itd \
    --name=doris-be \
    --env FE_SERVERS="fe1:172.20.80.2:9010" \
    --env BE_ADDR="172.20.80.3:9050" \
    -p 8040:8040 \
    -v /data/be/storage:/opt/apache-doris/be/storage \
    -v /data/be/conf:/opt/apache-doris/be/conf \
    -v /data/be/log:/opt/apache-doris/be/log \
    --network=doris-network \
    --ip=172.20.80.3 \
    apache/doris:1.2.2-be-x86_64

NoSQL数据库


MongoDB

下载镜像:

docker pull bitnami/mongodb:latest
docker pull bitnami/mongodb-exporter:latest

带密码安装:

docker run -itd \
    --name mongodb-test \
    -p 27017:27017 \
    -e MONGODB_ROOT_USER=root \
    -e MONGODB_ROOT_PASSWORD=123456 \
    -e MONGODB_USERNAME=test \
    -e MONGODB_PASSWORD=123456 \
    -e MONGODB_DATABASE=test \
    bitnami/mongodb:latest

不带密码安装:

docker run -itd \
    --name mongodb-test \
    -p 27017:27017 \
    -e ALLOW_EMPTY_PASSWORD=yes \
    bitnami/mongodb:latest

有两点需要注意:

  1. 如果需要映射数据卷,需要把本地路径的所有权改到1001:sudo chown -R 1001:1001 data/db,否则会报错:‘mkdir: cannot create directory ‘/bitnami/mongodb’: Permission denied’
  2. MongoDB 5.0开始有些机器运行会报错:Illegal instruction,这是因为机器硬件不支持 AVX 指令集 的缘故,没办法,MongoDB降级吧。

Redis

docker pull bitnami/redis:latest
docker pull bitnami/redis-exporter:latest

docker run -itd \
    --name redis-server \
    -p 6379:6379 \
    -e ALLOW_EMPTY_PASSWORD=yes \
    bitnami/redis:latest

Memcached

docker pull bitnami/memcached:latest
docker pull bitnami/memcached-exporter:latest

docker run -itd \
    --name memcached-test \
    -p 11211:11211 \
    bitnami/memcached:latest

CouchDB

docker pull bitnami/couchdb:latest

docker run -itd \
    --name couchdb-test \
    -p 5984:5984  \
    -p 9100:9100  \
    -e COUCHDB_PORT_NUMBER=5984
    -e COUCHDB_CLUSTER_PORT_NUMBER=9100
    -e COUCHDB_USER=admin
    -e COUCHDB_PASSWORD=couchdb
    bitnami/couchdb:latest

Cassandra

docker pull bitnami/cassandra:latest
docker pull bitnami/cassandra-exporter:latest

docker run -itd \
    --name cassandra-test \
    -p 7000:7000  \
    -p 9042:9042  \
    -e CASSANDRA_USER=cassandra \
    -e CASSANDRA_PASSWORD=cassandra \
    bitnami/cassandra:latest

服务发现注册


etcd

docker pull bitnami/etcd:latest

docker run -itd \
    --name etcd-standalone \
    -p 2379:2379 \
    -p 2380:2380 \
    -e ETCDCTL_API=3 \
    -e ALLOW_NONE_AUTHENTICATION=yes \
    -e ETCD_ADVERTISE_CLIENT_URLS=http://0.0.0.0:2379 \
    bitnami/etcd:latest

Nacos

docker pull nacos/nacos-server:latest

docker run -itd \
    --name nacos-standalone \
    -e MODE=standalone \
    -p 8849:8848 \
    nacos/nacos-server:latest

Consul

docker pull bitnami/consul:latest
docker pull bitnami/consul-exporter:latest

docker run -itd \
    --name consul-server-standalone \
    -p 8300:8300 \
    -p 8500:8500 \
    -p 8600:8600/udp \
    -e CONSUL_BIND_INTERFACE='eth0' \
    -e CONSUL_AGENT_MODE=server \
    -e CONSUL_ENABLE_UI=true \
    -e CONSUL_BOOTSTRAP_EXPECT=1 \
    -e CONSUL_CLIENT_LAN_ADDRESS=0.0.0.0 \
    bitnami/consul:latest

Apollo

注意,先要导入SQL数据!

docker pull apolloconfig/apollo-portal:latest
docker pull apolloconfig/apollo-configservice:latest
docker pull apolloconfig/apollo-adminservice:latest

# 
 docker run -itd \
    --name apollo-configservice \
    -p 8080:8080 \
    -e SPRING_DATASOURCE_URL="jdbc:mysql://127.0.0.1:3306/ApolloConfigDB?characterEncoding=utf8" \
    -e SPRING_DATASOURCE_USERNAME=root \
    -e SPRING_DATASOURCE_PASSWORD=123456 \
    -v /tmp/logs:/opt/logs \
    apolloconfig/apollo-configservice:latest

docker run -itd \
    --name apollo-adminservice \
    -p 8090:8090 \
    -e SPRING_DATASOURCE_URL="jdbc:mysql://127.0.0.1:3306/ApolloConfigDB?characterEncoding=utf8" \
    -e SPRING_DATASOURCE_USERNAME=root \
    -e SPRING_DATASOURCE_PASSWORD=123456 \
    -v /tmp/logs:/opt/logs \
    apolloconfig/apollo-adminservice:latest

docker run -itd \
    --name apollo-portal \
    -p 8070:8070 \
    -e SPRING_DATASOURCE_URL="jdbc:mysql://127.0.0.1:3306/ApolloPortalDB?characterEncoding=utf8" \
    -e SPRING_DATASOURCE_USERNAME=root \
    -e SPRING_DATASOURCE_PASSWORD=123456 \
    -e APOLLO_PORTAL_ENVS=dev \
    -e DEV_META=http://127.0.0.1:8080 \
    -v /tmp/logs:/opt/logs \
    apolloconfig/apollo-portal:latest

消息队列


RabbitMQ

docker pull bitnami/rabbitmq:latest

docker run -itd \
    --hostname localhost \
    --name rabbitmq-test \
    -p 15672:15672 \
    -p 5672:5672 \
    -p 1883:1883 \
    -p 15675:15675 \
    -e RABBITMQ_PLUGINS=rabbitmq_top,rabbitmq_mqtt,rabbitmq_web_mqtt,rabbitmq_prometheus,rabbitmq_stomp,rabbitmq_auth_backend_http \
    bitnami/rabbitmq:latest

# 查看插件列表
rabbitmq-plugins list
# rabbitmq_peer_discovery_consul 
rabbitmq-plugins --offline enable rabbitmq_peer_discovery_consul
# rabbitmq_mqtt 提供与后端服务交互使用,端口1883
rabbitmq-plugins enable rabbitmq_mqtt
# rabbitmq_web_mqtt 提供与前端交互使用,端口15675
rabbitmq-plugins enable rabbitmq_web_mqtt
# 
rabbitmq-plugins enable rabbitmq_auth_backend_http

Kafka

With ZooKeeper

docker pull bitnami/zookeeper:latest
docker pull bitnami/kafka:latest
docker pull bitnami/kafka-exporter:latest

docker run -itd \
    --name zookeeper-server \
    --network app-tier \
    -p 2181:2181 \
    -e ALLOW_ANONYMOUS_LOGIN=yes \
    bitnami/zookeeper:latest

docker run -itd \
    --name kafka-standalone \
    --link zookeeper-server \
    --network app-tier \
    -p 9092:9092 \
    -v /home/data/kafka:/bitnami/kafka \
    -e KAFKA_ENABLE_KRAFT=no \
    -e KAFKA_BROKER_ID=1 \
    -e KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 \
    -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://host.docker.internal:9092 \
    -e KAFKA_ZOOKEEPER_CONNECT=zookeeper-server:2181 \
    -e ALLOW_PLAINTEXT_LISTENER=yes \
    --user root \
    bitnami/kafka:latest

With KRaft

docker pull bitnami/kafka:latest

docker run -itd \
    --name kafka-standalone \
    --user root \
    -p 9092:9092 \
    -p 9093:9093 \
    -v /home/data/kafka:/bitnami/kafka \
    -e KAFKA_ENABLE_KRAFT=yes \
    -e KAFKA_BROKER_ID=1 \
    -e KAFKA_CFG_PROCESS_ROLES=broker,controller \
    -e KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER \
    -e KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=1@host.docker.internal:9093 \
    -e KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT \
    -e KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,CONTROLLER://:9093 \
    -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://host.docker.internal:9092 \
    -e ALLOW_PLAINTEXT_LISTENER=yes \
    bitnami/kafka:latest

管理工具

NSQ

docker pull nsqio/nsq:latest

# nsqlookupd
docker run -d \
    --name nsqlookupd \
    -p 4160:4160 \
    -p 4161:4161 \
    nsqio/nsq:latest \
    /nsqlookupd

# nsqd
docker run -itd \
    --name nsqd \
    -p 4150:4150 \
    -p 4151:4151 \
    --link nsqlookupd \
    nsqio/nsq:latest \
    /nsqd --lookupd-tcp-address=nsqlookupd:4160

#nsqadmin
docker run -itd \
    --name nsqadmin \
    -p 4171:4171 \
    --link nsqlookupd \
    nsqio/nsq:latest \
    /nsqadmin --lookupd-http-address=nsqlookupd:4161

NATS

docker pull bitnami/nats:latest
docker pull bitnami/nats-exporter:latest

docker run -itd \
    --name nats-server \
    --p 4222:4222 \
    --p 6222:6222 \
    --p 8000:8222 \
    -e NATS_HTTP_PORT_NUMBER=8222 \
    bitnami/nats:latest

Mosquitto

docker pull eclipse-mosquitto:latest

# 1883 tcp
# 9001 websockets
docker run -itd \
    --name mosquitto-test \
    -p 1883:1883 \
    -p 9001:9001 \
    eclipse-mosquitto:latest

EMX

docker pull emqx/emqx:latest

docker run -itd \
    --name emqx-test \
    --add-host=host.docker.internal:host-gateway \
    -p 18083:18083 \
    -p 1883:1883 \
    emqx/emqx:latest

Pulsar

docker pull apachepulsar/pulsar-manager:latest
docker pull apachepulsar/pulsar:latest

docker run -itd \
    -p 6650:6650 \
    -p 8080:8080 \
    --name pulsar-standalone \
    apachepulsar/pulsar:latest bin/pulsar standalone

docker run -itd \
    -p 9527:9527 \
    -p 7750:7750 \
    -e SPRING_CONFIGURATION_FILE=/pulsar-manager/pulsar-manager/application.properties \
    apachepulsar/pulsar-manager:latest
docker pull apachepulsar/pulsar-standalone:latest

docker run -itd \
    -p 6650:6650 \
    -p 8080:8080 \
    -p 9527:9527 \
    --name pulsar-standalone \
    apachepulsar/pulsar:latest bin/pulsar standalone
docker pull apachepulsar/pulsar-all:latest

HiveMQ

docker pull hivemq/hivemq4:latest

docker run -itd \
    --name hivemq-test \
    --ulimit nofile=500000:500000 \
    -p 8080:8080 \
    -p 8000:8000 \
    -p 1883:1883 \
    hivemq/hivemq4:latest

RocketMQ

RocketMQ4.x

至少启动一个NameServer,一个Broker。

docker pull apache/rocketmq:4.9.2

# NameServer
docker run -d \
    --name rocketmq-namesrv \
    -e "JAVA_OPT_EXT=-server -Xms512M -Xmx512M -Xmn128m" \
    -p 9876:9876 \
    apache/rocketmq:4.9.2 \
    sh mqnamesrv

# Broker
docker run -d \
    --name rocketmq-broker \
    -p 10911:10911 \
    -p 10909:10909 \
    -p 10912:10912 \
    --link rocketmq-namesrv \
    -e "JAVA_OPT_EXT=-server -Xms512M -Xmx512M -Xmn128m" \
    -e "NAMESRV_ADDR=rocketmq-namesrv:9876" \
    apache/rocketmq:4.9.2 \
    sh mqbroker -c /home/rocketmq/rocketmq-4.9.2/conf/broker.conf

以及Web控制台:

docker pull styletang/rocketmq-console-ng:latest

docker run -d \
    --name rocketmq-console \
    -p 9800:8080 \
    --link rocketmq-namesrv \
    -e "JAVA_OPT_EXT=-server -Xms512M -Xmx512M -Xmn128m" \
    -e "JAVA_OPTS=-Xmx256M -Xms256M -Xmn128M -Drocketmq.namesrv.addr=rocketmq-namesrv:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" \
    -t styletang/rocketmq-console-ng:latest

RocketMQ Console 是 rocketmq 的第三方扩展组件,提供图形界面便于管理和监控rocketmq。

需要注意的是,NameServer下发的是Docker容器的内网IP地址,从宿主机的外网访问是访问不了的,需要进行配置:

vi /home/rocketmq/rocketmq-5.1.4/conf/broker.conf

添加如下配置,brokerIP1可以是ip也可以是dns,hostname:

brokerIP1 = host.docker.internal

RocketMQ5.x

至少启动一个NameServer,一个Broker。

5.x版本下,官方建议使用Local模式部署,即Broker和Proxy同进程部署。

docker pull apache/rocketmq:5.1.4

# NameServer
docker run -d \
    --name rocketmq-namesrv \
    -e "MAX_HEAP_SIZE=256M" \
    -e "HEAP_NEWSIZE=128M" \
    -p 9876:9876 \
    apache/rocketmq:5.1.4 \
    sh mqnamesrv

# Broker
docker run -d \
    --name rocketmq-broker \
    --link rocketmq-namesrv \
    -p 10911:10911 \
    -p 10909:10909 \
    -p 10912:10912 \
    -p 8080:8080 \
    -p 8081:8081 \
    -e "MAX_HEAP_SIZE=256M" \
    -e "HEAP_NEWSIZE=128M" \
    -e "JAVA_OPTS=-server -Xmx256M -Xms256M -Xmn128M" \
    -e "NAMESRV_ADDR=rocketmq-namesrv:9876" \
    apache/rocketmq:5.1.4 \
    sh mqbroker --enable-proxy autoCreateTopicEnable=true autoCreateSubscriptionGroup=true \
    -c /home/rocketmq/rocketmq-5.1.4/conf/broker.conf

以及Web控制台:

docker run -d \
    --restart=always \
    --name rocketmq-dashboard \
    --link rocketmq-namesrv \
    -e "JAVA_OPTS=-Xmx256M -Xms256M -Xmn128M -Drocketmq.namesrv.addr=rocketmq-namesrv:9876 -Dcom.rocketmq.sendMessageWithVIPChannel=false" \
    -p 9800:8080 \
    apacherocketmq/rocketmq-dashboard

ActiveMQ

docker pull rmohr/activemq:latest

docker run -d \
      --name activemq-test \
      -p 61616:61616 \
      -p 8161:8161 \
      -p 61613:61613 \
      -p 1883:1883 \
      -p 61614:61614 \
      rmohr/activemq:latest
端口号协议
61616JMS
8161UI
5672AMQP
61613STOMP
1883MQTT
61614WS

Asynq

docker pull hibiken/asynqmon:latest

docker run -d \
    --name asynq \
    -p 8080:8080 \
    hibiken/asynqmon:latest --redis-addr=host.docker.internal:6379 --redis-password=123456 --redis-db=1

微服务运行时

Dapr

docker pull daprio/dapr:latest

链路追踪

Jaeger

docker pull jaegertracing/all-in-one:latest

docker run -itd \
    --name jaeger \
    -e COLLECTOR_ZIPKIN_HOST_PORT=:9411 \
    -e COLLECTOR_OTLP_ENABLED=true \
    -p 6831:6831/udp \
    -p 6832:6832/udp \
    -p 5778:5778 \
    -p 16686:16686 \
    -p 4317:4317 \
    -p 4318:4318 \
    -p 14250:14250 \
    -p 14268:14268 \
    -p 14269:14269 \
    -p 9411:9411 \
    jaegertracing/all-in-one:latest
端口号协议组件功能
6831UDPAgentThrift-compact协议,接收jaeger.thrift数据(大多数 SDK 使用)
6832UDPAgentThrift-binary协议,接收jaeger.thrift数据(由 Node.js SDK 使用)
5775UDPAgentThrift-compact协议,接收zipkin.thrift数据(仅供旧客户端使用)(已弃用)
5778HTTPAgent服务配置接口(采样等)
16686HTTPQueryJaeger Web UI的服务前端
4317HTTPCollector如果启用,通过 gRPC 接收 OpenTelemetry 协议 (OTLP)
4318HTTPCollector如果启用,通过 HTTP 接收 OpenTelemetry 协议 (OTLP)
14268HTTPCollector直接接收jaeger.thrift客户端
14269HTTPCollector提供:健康检查/、性能检查/metrics
14250HTTPCollector接收model.proto
9411HTTPCollector兼容Zipkin的http端点(可选)

Zipkin

docker pull openzipkin/zipkin:latest

docker run -d \
    --name zipkin \
    -p 9411:9411 \
    openzipkin/zipkin:latest

SkyWalking

docker pull apache/skywalking-oap-server:latest
docker pull apache/skywalking-ui:latest

# 11800端口用于skywalking将应用的服务监控信息收集端口。
# 12800端口用于skywalking对UI提供查询接口。
docker run -itd \
    --name skywalking-oap-server \
    -e TZ=Asia/Shanghai \
    -p 12800:12800 \
    -p 11800:11800 \
    --link elasticsearch \
    -e SW_STORAGE=elasticsearch \
    -e SW_STORAGE_ES_CLUSTER_NODES=elasticsearch:9200 \
    apache/skywalking-oap-server:latest

docker run -itd \
    --name skywalking-ui \
    -e TZ=Asia/Shanghai \
    -p 8080:8080 \
    --link skywalking-oap-server \
    -e SW_OAP_ADDRESS=skywalking-oap-server:12800 \
    apache/skywalking-ui:latest

Pinpoint

docker pull pinpointdocker/pinpoint-agent:latest

Grafana Tempo

docker pull grafana/tempo:latest

运维监控

Kibana

docker pull bitnami/kibana:latest

docker run -d \
    --name kibana \
    -p 5601:5601 \
    -e KIBANA_ELASTICSEARCH_URL=elasticsearch \
    -e KIBANA_ELASTICSEARCH_PORT_NUMBER=9200 \
    bitnami/kibana:latest

Prometheus

docker pull bitnami/prometheus:latest
docker pull bitnami/pushgateway:latest

docker run -d \
    --name prometheus-gateway \
    -p 9091:9091 \
    bitnami/pushgateway:latest

docker run -d \
    --name prometheus \
    -p 9090:9090 \
    bitnami/prometheus:latest

Grafana

docker pull bitnami/grafana:latest

docker run -d \
    --name grafana \
    -p 3000:3000 \
    -e GF_SECURITY_ADMIN_PASSWORD=pass \
    bitnami/grafana:latest

Logstash

docker pull bitnami/logstash:latest
docker pull bitnami/logstash-exporter:latest

docker run -d \
    --name logstash \
    -p 8080:8080 \
    bitnami/logstash:latest

Fluentd

docker pull bitnami/fluentd:latest

docker run -d \
    --name fluentd \
    -p 24224:24224 \
    -p 24224:24224/udp \
    -v /data:/opt/bitnami/fluentd/log \
    bitnami/fluentd:latest

流式计算


Spark

docker pull bitnami/spark:latest

docker run -itd \
    --name spark-standalone \
    -p 6066:6066 \
    -p 7077:7077 \
    -p 8080:8080 \
    -p 50070:50070 \
    -e SPARK_MODE=master \
    -e SPARK_WORKER_CORES=1 \
    -e SPARK_WORKER_MEMORY=2g \
    bitnami/spark:latest

Flink

docker pull flink:latest

docker network create flink-network

docker run -itd \
    --name flink-jobmanager \
    --network flink-network \
    -p 8081:8081 \
    --env FLINK_PROPERTIES="jobmanager.rpc.address: flink-jobmanager" \
    flink:latest jobmanager

docker run -itd \
    --name flink-taskmanager \
    --network flink-network \
    --env FLINK_PROPERTIES="jobmanager.rpc.address: flink-jobmanager" \
    flink:latest taskmanager

对象存储


MinIO

docker pull bitnami/minio:latest

docker network create app-tier --driver bridge

# MINIO_ROOT_USER 最少3个字符
# MINIO_ROOT_PASSWORD 最少8个字符
# 第一次运行的时候,服务会自动关闭,手动再启动就可以正常运行了.
docker run -itd \
    --name minio-server \
    -p 9000:9000 \
    -p 9001:9001 \
    --env MINIO_ROOT_USER="root" \
    --env MINIO_ROOT_PASSWORD="123456789" \
    --env MINIO_DEFAULT_BUCKETS='images,videos' \
    --env MINIO_FORCE_NEW_KEYS="yes" \
    --env BITNAMI_DEBUG=true \
    --volume /usr/local/minio/data:/data \
    --network app-tier \
    bitnami/minio:latest
docker pull minio/minio:latest

# MINIO_ROOT_USER 最少3个字符,默认为:minioadmin
# MINIO_ROOT_PASSWORD 最少8个字符,默认为:minioadmin
docker run -itd \
    --name minio-server \
    -p 9000:9000 \
    -p 9001:9001 \
    -e "MINIO_ROOT_USER=root" \
    -e "MINIO_ROOT_PASSWORD=123456789" \
    -v /usr/local/minio/data:/data \
    --network app-tier \
    minio/minio server /data --console-address ':9001'

机器学习


TensorFlow

docker pull bitnami/tensorflow-resnet:latest
docker pull bitnami/tensorflow-serving:latest
docker pull bitnami/tensorflow-inception:latest

docker network create app-tier --driver bridge

docker run -d --name tensorflow-serving \
    --volume /tmp/model-data:/bitnami/model-data \
    --network app-tier \
    bitnami/tensorflow-serving:latest

docker run -d --name tensorflow-resnet \
    --volume /tmp/model-data:/bitnami/model-data \
    --network app-tier \
    bitnami/tensorflow-resnet:latest

PyTorch

docker pull bitnami/pytorch:latest

API网关


HAProxy

docker pull bitnami/haproxy:latest

Kong

docker pull bitnami/kong:latest

Nginx

docker pull bitnami/nginx:latest

Envoy

docker pull bitnami/envoy:latest

Caddy

docker pull caddy:latest

APISIX

docker pull apache/apisix:latest
docker pull apache/apisix-dashboard:latest

docker run -itd \
   --name apache-apisix \
   -p 9080:9080 \
   -e APISIX_STAND_ALONE=true \
   --link etcd-standalone \
   apache/apisix:latest

Tyk

docker pull tykio/tyk-gateway:latest

docker run -d \
  --name tyk_gateway \
  -p 8080:8080 \
  -e TYK_GW_SECRET=[YOUR-SECRET] \
  -v $(pwd)/tyk.conf:/opt/tyk-gateway/tyk.conf \
  -v $(pwd)/apps:/opt/tyk-gateway/apps \
  tykio/tyk-gateway:latest

Gravitee

docker pull graviteeio/apim-gateway:latest
docker pull graviteeio/apim-management-ui:latest
docker pull graviteeio/apim-portal-ui:latest

docker run -itd \
    --publish 82:8082 \
    --name gateway \
    --env GRAVITEE_MANAGEMENT_MONGODB_URI=mongodb://username:password@mongohost:27017/dbname \
    --detach \
    graviteeio/apim-gateway:latest

docker run -itd \
    --publish 80:8080 \
    --env MGMT_API_URL=http://localhost:81/management/organizations/DEFAULT/environments/DEFAULT \
    --name management-ui \
    --detach  \
    graviteeio/apim-management-ui:latest

docker run -itd \
    --publish 80:8080 \
    --env PORTAL_API_URL=http://localhost:81/portal/environments/DEFAULT \
    --name portal-ui \
    --detach  \
    graviteeio/apim-portal-ui:latest

Traefik

docker pull traefik:latest

docker run -itd `
    --name traefik-server `
    -p 8080:8080 `
    -p 80:80 `
    -v /var/run/docker.sock:/var/run/docker.sock `
    --link consul-server-standalone `
    --add-host=host.docker.internal:host-gateway `
    traefik:latest --api.insecure=true --providers.consul.endpoints="consul-server-standalone:8500"

参考资料


docs.emqx.cn/broker/v4.3…
github.com/lf-edge/eku…
db-engines.com/en/ranking/…