Note/环境/安装教程/Docker环境部署.md
2024-09-09 15:14:36 +08:00

1325 lines
29 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

## 关系型数据库
------
### MySQL
```shell
docker pull bitnami/mysql:latest
docker run -itd \
--name mysql-server \
-p 3306:3306 \
-e ALLOW_EMPTY_PASSWORD=yes \
-e MYSQL_ROOT_PASSWORD=root \
bitnami/mysql:latest
```
### MariaDB
```shell
docker pull bitnami/mariadb:latest
docker run -itd \
--name mariadb-test \
-p 3306:3306 \
-e ALLOW_EMPTY_PASSWORD=yes \
-e MARIADB_ROOT_PASSWORD=root \
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=root \
bitnami/postgresql:latest
docker exec -it postgres-test "apt update"
```
### 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
```
- 管理后台: http://localhost:8086/
### 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
```
- 管理后台 [http://localhost:4242](http://localhost:4242/)
### 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
```
- 管理工具: [etcd-manager](https://www.electronjs.org/apps/etcd-manager)
### Nacos
```
docker pull nacos/nacos-server:latest
docker run -itd \
--name nacos-standalone \
-e MODE=standalone \
-p 8849:8848 \
nacos/nacos-server:latest
```
- 管理后台: http://localhost:8849/nacos/index.html
### 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
```
- 管理后台: [http://localhost:8500](http://localhost:8500/)
### 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
```
- Eureka管理后台: <localhost:8080>
- Apollo管理后台: <localhost:8070>
账号密码: apollo / admin
## 消息队列
------
### 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
```
- 管理后台: [http://localhost:15672](http://localhost:15672/)
- 默认账号: user
- 默认密码: bitnami
### 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_CFG_NODE_ID=1 \
-e KAFKA_CFG_PROCESS_ROLES=broker,controller \
-e KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER \
-e KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=1@127.0.0.1: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://127.0.0.1:9092 \
-e ALLOW_PLAINTEXT_LISTENER=yes \
bitnami/kafka:latest
```
#### 管理工具
- [Offset Explorer](https://www.kafkatool.com/download.html)
### 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
```
- 控制台访问地址: [http://127.0.0.1:4171](http://127.0.0.1:4171/)
- 直接使用REST API查看节点信息 http://127.0.0.1:4161/nodes
### 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
```
- 管理后台: [https://127.0.0.1:8000](https://127.0.0.1:8000/)
### 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 8883:8883 \
-p 1883:1883 \
-p 8083:8083 \
-p 8084:8084 \
emqx/emqx:latest
```
端口说明:
- 18083 - 管理后台
- 8883 - SSL
- 1883 - TCP
- 8083 - WS
- 8084 - WSS
- 管理后台: [http://localhost:18083](http://localhost:18083/)
- 默认账号: admin
- 默认密码: public
### 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
```
- 管理后台 [http://localhost:9527](http://localhost:9527/)
### 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。
- 控制台访问地址: http://localhost:9800/#/
需要注意的是NameServer下发的是Docker容器的内网IP地址从宿主机的外网访问是访问不了的需要进行配置
```
vi /home/rocketmq/rocketmq-5.1.4/conf/broker.conf
```
添加如下配置brokerIP1可以是ip也可以是dnshostname
```
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
```
- 控制台访问地址: http://localhost:9800/#/
### 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
```
| 端口号 | 协议 |
| :----- | :---- |
| 61616 | JMS |
| 8161 | UI |
| 5672 | AMQP |
| 61613 | STOMP |
| 1883 | MQTT |
| 61614 | WS |
- 管理后台http://localhost:8161/admin/
- 默认账号名密码admin/admin
### 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
```
- 管理后台:[http://localhost:8080](http://localhost:8080/)
## 微服务运行时
### 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
```
| 端口号 | 协议 | 组件 | 功能 |
| :----- | :--- | :-------- | :----------------------------------------------------------- |
| 6831 | UDP | Agent | Thrift-compact协议接收`jaeger.thrift`数据(大多数 SDK 使用) |
| 6832 | UDP | Agent | Thrift-binary协议接收`jaeger.thrift`数据(由 Node.js SDK 使用) |
| 5775 | UDP | Agent | ~~Thrift-compact协议接收`zipkin.thrift`数据(仅供旧客户端使用)~~(已弃用) |
| 5778 | HTTP | Agent | 服务配置接口(采样等) |
| 16686 | HTTP | Query | Jaeger Web UI的服务前端 |
| 4317 | HTTP | Collector | 如果启用,通过 gRPC 接收 OpenTelemetry 协议 (OTLP) |
| 4318 | HTTP | Collector | 如果启用,通过 HTTP 接收 OpenTelemetry 协议 (OTLP) |
| 14268 | HTTP | Collector | 直接接收`jaeger.thrift`客户端 |
| 14269 | HTTP | Collector | 提供:健康检查`/`、性能检查`/metrics` |
| 14250 | HTTP | Collector | 接收`model.proto` |
| 9411 | HTTP | Collector | 兼容Zipkin的http端点可选 |
- APIhttp://localhost:14268/api/traces
- Zipkin APIhttp://localhost:9411/api/v2/spans
- 后台: [http://localhost:16686](http://localhost:16686/)
### Zipkin
```
docker pull openzipkin/zipkin:latest
docker run -d \
--name zipkin \
-p 9411:9411 \
openzipkin/zipkin:latest
```
- APIhttp://localhost:9411/api/v2/spans
- 后台: [http://localhost:9411](http://localhost:9411/)
### 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
```
- 后台: [http://localhost:8080](http://localhost:8080/)
### 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
```
- Prometheus 后台: [http://localhost:9090](http://localhost:9090/)
- Pushgateway 后台: [http://localhost:9091](http://localhost:9091/)
### 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
```
- hdfs的web界面[http://localhost:50070](http://localhost:50070/)
- Spark界面[http://localhost:8080](http://localhost:8080/)
### 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
```
- 管理后台: [http://localhost:8081](http://localhost:8081/)
## 对象存储
------
### 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
```
- 管理后台: http://localhost:9001/login
```
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'
```
- 管理后台: http://localhost:9001/login
## 机器学习
------
### 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
```
- 管理后台: http://127.0.0.1:8080/apisix/dashboard
- 用户密码admin/admin
### 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"
```
- 管理后台:[http://localhost:8080](http://localhost:8080/)