Skip to content

第五章 常用软件容器 v1.0 ​

第一部分 数据库 ​

一、MySQL ​

bash
docker run -d \
  --name mysql \
  -p 3306:3306 \
  -e MYSQL_ROOT_PASSWORD=<密码> \
  -v mysql_data:/var/lib/mysql \
  mysql:8

配置说明:

  • -p 3306:3306:映射 MySQL 默认端口
  • -e MYSQL_ROOT_PASSWORD:设置 root 用户密码
  • -v mysql_data:/var/lib/mysql:数据持久化

二、Redis ​

bash
docker run -d \
  --name redis \
  -p 6379:6379 \
  -v redis_data:/data \
  redis redis-server --requirepass <密码>

配置说明:

  • -p 6379:6379:映射 Redis 默认端口
  • --requirepass:设置访问密码
  • -v redis_data:/data:数据持久化

三、MongoDB ​

bash
docker run -d \
  --name mongo \
  -p 27017:27017 \
  -e MONGO_INITDB_ROOT_USERNAME=mongoadmin \
  -e MONGO_INITDB_ROOT_PASSWORD=<密码> \
  -v mongo_data:/data/db \
  mongo

配置说明:

  • -p 27017:27017:映射 MongoDB 默认端口
  • -e MONGO_INITDB_ROOT_USERNAME:设置 root 用户名
  • -e MONGO_INITDB_ROOT_PASSWORD:设置 root 密码
  • -v mongo_data:/data/db:数据持久化

四、Neo4j ​

bash
docker run -d \
  --name neo4j \
  -p 7474:7474 -p 7687:7687 \
  -e NEO4J_AUTH=neo4j/<密码> \
  -v neo4j_data:/data \
  neo4j

配置说明:

  • -p 7474:7474:Web 管理界面端口
  • -p 7687:7687:Bolt 协议端口
  • -e NEO4J_AUTH:设置认证信息

五、Elasticsearch ​

bash
docker run -d \
  --name elasticsearch \
  -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.11.0

配置说明:

  • -p 9200:9200:HTTP API 端口
  • -p 9300:9300:节点间通信端口
  • -e discovery.type=single-node:单节点模式
  • -e xpack.security.enabled=false:关闭安全认证(开发环境)
  • -e ES_JAVA_OPTS:设置 JVM 内存

第二部分 消息队列 ​

一、RabbitMQ ​

bash
docker run -d \
  --name rabbitmq \
  -p 5672:5672 -p 15672:15672 \
  -e RABBITMQ_DEFAULT_USER=admin \
  -e RABBITMQ_DEFAULT_PASS=<密码> \
  rabbitmq:3-management

配置说明:

  • -p 5672:5672:AMQP 协议端口
  • -p 15672:15672:Web 管理界面端口
  • -e RABBITMQ_DEFAULT_USER:设置管理员用户名
  • -e RABBITMQ_DEFAULT_PASS:设置管理员密码

访问管理界面:http://localhost:15672

二、RocketMQ ​

bash
# 启动 NameServer
docker run -d \
  --name rmqnamesrv \
  -p 9876:9876 \
  rocketmqinc/rocketmq sh mqnamesrv

# 启动 Broker
docker run -d \
  --name rmqbroker \
  -p 10911:10911 -p 10909:10909 \
  -e "NAMESRV_ADDR=rmqnamesrv:9876" \
  rocketmqinc/rocketmq sh mqbroker

配置说明:

  • -p 9876:9876:NameServer 端口
  • -p 10911:10911:Broker 端口
  • -p 10909:10909:Broker VIP 端口

三、Kafka ​

yaml
version: '3'
services:
  zookeeper:
    image: wurstmeister/zookeeper
    ports:
      - "2181:2181"
    environment:
      ZOO_MY_ID: 1

  kafka:
    image: wurstmeister/kafka
    ports:
      - "9092:9092"
    environment:
      KAFKA_BROKER_ID: 1
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_ADVERTISED_HOST_NAME: localhost
      KAFKA_ADVERTISED_PORT: 9092
    depends_on:
      - zookeeper

配置说明:

  • -p 9092:9092:Kafka Broker 端口
  • KAFKA_ZOOKEEPER_CONNECT:Zookeeper 连接地址
  • KAFKA_ADVERTISED_HOST_NAME:对外暴露的主机名

第三部分 Web服务器 ​

一、Nginx ​

bash
docker run -d \
  --name nginx \
  -p 80:80 -p 443:443 \
  -v nginx_conf:/etc/nginx/conf.d \
  -v nginx_html:/usr/share/nginx/html \
  -v nginx_logs:/var/log/nginx \
  nginx

配置说明:

  • -p 80:80:HTTP 端口
  • -p 443:443:HTTPS 端口
  • -v nginx_conf:配置文件目录
  • -v nginx_html:网站文件目录
  • -v nginx_logs:日志目录

二、Tomcat ​

bash
docker run -d \
  --name tomcat \
  -p 8080:8080 \
  -v tomcat_webapps:/usr/local/tomcat/webapps \
  -v tomcat_logs:/usr/local/tomcat/logs \
  tomcat:9

配置说明:

  • -p 8080:8080:Tomcat 默认端口
  • -v tomcat_webapps:Web 应用目录
  • -v tomcat_logs:日志目录

第四部分 可视化工具 ​

一、Portainer(Docker管理UI) ​

bash
docker run -d \
  --name portainer \
  -p 9000:9000 \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v portainer_data:/data \
  portainer/portainer-ce

访问地址:http://localhost:9000

二、Adminer(数据库管理) ​

bash
docker run -d \
  --name adminer \
  -p 8080:8080 \
  adminer

访问地址:http://localhost:8080

三、RedisInsight(Redis管理) ​

bash
docker run -d \
  --name redisinsight \
  -p 8001:8001 \
  -v redisinsight:/data \
  redis/redisinsight:latest

访问地址:http://localhost:8001