一、数据库
MySQL 5.7
bash
# 拉取
docker pull mysql:5.7
# 启动
docker run -d --name mysql57 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -e MYSQL_DATABASE=testdb -v mysql57_data:/var/lib/mysql mysql:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
MySQL 8.0
bash
# 拉取
docker pull mysql:8.0
# 启动
docker run -d --name mysql80 -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 -e MYSQL_DATABASE=testdb -v mysql80_data:/var/lib/mysql mysql:8.0 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
Redis 7.2
bash
# 拉取
docker pull redis:7.2
# 启动
docker run -d --name redis72 -p 6379:6379 -v redis72_data:/data redis:7.2 redis-server --appendonly yes --requirepass 123456
Elasticsearch 8.12.0
bash
# 拉取
docker pull elasticsearch:8.12.0
# 创建网络并启动
docker network create elk-network && docker run -d --name elasticsearch --network elk-network -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e "xpack.security.enabled=false" -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" -v es_data:/usr/share/elasticsearch/data elasticsearch:8.12.0
Kibana 8.12.0
bash
# 拉取
docker pull kibana:8.12.0
# 启动
docker run -d --name kibana --network elk-network -p 5601:5601 -e ELASTICSEARCH_HOSTS=http://elasticsearch:9200 kibana:8.12.0
二、消息队列
RabbitMQ 3.13 (带管理界面)
bash
# 拉取
docker pull rabbitmq:3.13-management
# 启动
docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin123 -v rabbitmq_data:/var/lib/rabbitmq rabbitmq:3.13-management
RocketMQ 5.3.0 + Dashboard
bash
# 拉取
docker pull apache/rocketmq:5.3.0
docker pull apacherocketmq/rocketmq-dashboard:latest
# 启动 NameServer
docker run -d --name rocketmq-namesrv -p 9876:9876 -e "JAVA_OPT_EXT=-Xms256m -Xmx256m" apache/rocketmq:5.3.0 sh mqnamesrv
# 启动 Broker
docker run -d --name rocketmq-broker -p 10911:10911 -p 10909:10909 -e "NAMESRV_ADDR=localhost:9876" -e "JAVA_OPT_EXT=-Xms512m -Xmx512m -Xmn256m" -e "BROKER_IP1=127.0.0.1" -v rocketmq_broker:/home/rocketmq/store apache/rocketmq:5.3.0 sh mqbroker -c /home/rocketmq/rocketmq-5.3.0/conf/broker.conf
# 启动 Dashboard
docker run -d --name rocketmq-dashboard -p 8088:8080 -e "JAVA_OPTS=-Drocketmq.namesrv.addr=127.0.0.1:9876" apacherocketmq/rocketmq-dashboard:latest
Kafka (Bitnami版本)
bash
# 拉取
docker pull bitnami/kafka:3.7
# 启动 ZooKeeper
docker run -d --name zookeeper -p 2181:2181 -e ALLOW_ANONYMOUS_LOGIN=yes bitnami/zookeeper:latest
# 启动 Kafka
docker run -d --name kafka -p 9092:9092 -e KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181 -e KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9092 -e ALLOW_PLAINTEXT_LISTENER=yes -v kafka_data:/bitnami/kafka bitnami/kafka:3.7
ActiveMQ 5.18.3
bash
# 拉取
docker pull apache/activemq:5.18.3
# 启动
docker run -d --name activemq -p 61616:61616 -p 8161:8161 -e ACTIVEMQ_ADMIN_LOGIN=admin -e ACTIVEMQ_ADMIN_PASSWORD=admin123 -v activemq_data:/data apache/activemq:5.18.3
三、微服务核心
Nacos Server 2.3.0
bash
# 拉取
docker pull nacos/nacos-server:v2.3.0
# 启动
docker run -d --name nacos -p 8848:8848 -p 9848:9848 -e MODE=standalone -e JVM_XMS=256m -e JVM_XMX=256m -v nacos_data:/home/nacos/data nacos/nacos-server:v2.3.0
docker run -d --name nacos -p 8848:8848 -p 9848:9849 -p 9849:9849 -e MODE=standalone -e SPRING_DATASOURCE_PLATFORM=mysql -e MYSQL_SERVICE_HOST=host.docker.internal -e MYSQL_SERVICE_PORT=3306 -e MYSQL_SERVICE_DB_NAME=ry-config -e MYSQL_SERVICE_USER=root -e MYSQL_SERVICE_PASSWORD=123456 --restart=always nacos/nacos-server:v2.3.0
Sentinel Dashboard
bash
# 拉取
docker pull bladex/sentinel-dashboard:latest
# 启动
docker run -d --name sentinel -p 8080:8080 -e SERVER_PORT=8080 bladex/sentinel-dashboard:latest
四、文件存储
MinIO
bash
# 拉取
docker pull minio/minio:latest
# 启动
docker run -d --name minio -p 9000:9000 -p 9001:9001 -e MINIO_ROOT_USER=admin -e MINIO_ROOT_PASSWORD=admin123456 -v minio_data:/data minio/minio:latest server /data --console-address ":9001"
Nginx (Alpine)
bash
# 拉取
docker pull nginx:alpine
# 启动
docker run -d --name nginx -p 80:80 -p 443:443 -v nginx_html:/usr/share/nginx/html -v nginx_conf:/etc/nginx/conf.d nginx:alpine
五、监控
Prometheus
bash
# 拉取
docker pull prom/prometheus:latest
# 创建配置文件并启动
mkdir -p /tmp/prometheus && cat > /tmp/prometheus/prometheus.yml <<EOF && docker run -d --name prometheus -p 9090:9090 -v /tmp/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml -v prometheus_data:/prometheus prom/prometheus:latest
global:
scrape_interval: 15s
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
EOF
Grafana
bash
# 拉取
docker pull grafana/grafana:latest
# 启动
docker run -d --name grafana -p 3000:3000 -e GF_SECURITY_ADMIN_PASSWORD=admin123 -v grafana_data:/var/lib/grafana grafana/grafana:latest
六、一键执行脚本(拉取 + 启动)
bash
#!/bin/bash
# 拉取所有镜像
echo "开始拉取镜像..."
docker pull mysql:5.7
docker pull redis:7.2
docker pull rabbitmq:3.13-management
docker pull nacos/nacos-server:v2.3.0
docker pull minio/minio:latest
docker pull grafana/grafana:latest
# 启动所有容器
echo "开始启动容器..."
docker run -d --name mysql57 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -v mysql57_data:/var/lib/mysql mysql:5.7 --character-set-server=utf8mb4
docker run -d --name redis72 -p 6379:6379 -v redis72_data:/data redis:7.2 redis-server --appendonly yes --requirepass 123456
docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin123 -v rabbitmq_data:/var/lib/rabbitmq rabbitmq:3.13-management
docker run -d --name nacos -p 8848:8848 -p 9848:9848 -e MODE=standalone -v nacos_data:/home/nacos/data nacos/nacos-server:v2.3.0
docker run -d --name minio -p 9000:9000 -p 9001:9001 -e MINIO_ROOT_USER=admin -e MINIO_ROOT_PASSWORD=admin123456 -v minio_data:/data minio/minio:latest server /data --console-address ":9001"
docker run -d --name grafana -p 3000:3000 -e GF_SECURITY_ADMIN_PASSWORD=admin123 -v grafana_data:/var/lib/grafana grafana/grafana:latest
echo "所有镜像拉取并启动完成!"
每个服务都包含了独立的拉取和启动命令,可以直接复制使用。