Docker 之常用基础设施搭建

343 阅读3分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

Docker 安装(centos)

yum update

yum install -y yum-utils device-mapper-persistent-data lvm2

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

yum install docker-ce -y

# 系统自启
systemctl enable docker

systemctl start docker

Doker Compose 安装

curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

chmod +x /usr/local/bin/docker-compose

基础设施安装

MySQL

安装 Mysql 57

docker pull mysql:5.7

docker run -d -p 3306:3306 --name docker-mysql \
-v /opt/docker/mysql57/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
mysql:5.7

RabbitMQ

安装 RabbitMQ

docker pull rabbitmq:management

docker run -d -p 15672:15672 -p 5672:5672 --name rabbitmq \
-e RABBITMQ_DEFAULT_USER=admin \
-e RABBITMQ_DEFAULT_PASS=123456 \
rabbitmq:management

Redis

安装 Redis

docker pull redis:6.0.10

docker run -d --name redis -p 6379:6379 redis:6.0.10 --requirepass "123456"

# 可选参数 --appendonly yes
# 开启后可挂载 -v /docker/host/dir:/data \

SonarQube

安装 SonarQube

docker pull sonarqube:8.9.1-community

docker run -d --name sonar -p 19100:9000 \
-v /opt/docker/sonar/conf:/opt/sonarqube/conf \
-v /opt/docker/sonar/data:/opt/sonarqube/data \
-v /opt/docker/sonar/logs:/opt/sonarqube/logs \
-v /opt/docker/sonar/extensions:/opt/sonarqube/extensions \
-e "SONAR_JDBC_USERNAME=sonar"  \
-e "SONAR_JDBC_PASSWORD=123456" \
-e "SONAR_JDBC_URL=jdbc:postgresql://192.168.57.151:5432/db_sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false" \
-e "SONAR_SEARCH_PORT=9901" \
sonarqube:8.9.1-community

如果遇到以下错误

执行以下命令即可,Sonar 静态代码分析利用了 ES,ES 比较吃配置。

echo "vm.max_map_count=262144" > /etc/sysctl.conf
sysctl -p

Sonar qube 环境变量配置参考

Sentinel

安装 Sentinel Dashboard

docker pull bladex/sentinel-dashboard:1.8.0

docker run -d -p 8858:8858 --name sentinel-dashboard \
-e AUTH_USERNAME=sentinel \
-e AUTH_PASSWORD=sentinel 
bladex/sentinel-dashboard:1.8.0

ES

单个节点

docker pull elasticsearch:7.7.1

docker run -d --name elasticsearch  -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" elasticsearch:7.7.1

Mongo

docker pull mongo:4.4.5

docker run -d --name mongodb -p 27017:27017  \
-v /mysoft/mongodb/configdb:/data/configdb/ \
-v /mysoft/mongodb/db/:/data/db/ 
mongo:4.4.5 --auth

db.createUser({ user: 'admin', pwd: '123456', roles: [ { role: "userAdminAnyDatabase", db: "admin" } ] });

db.createUser({ user: 'admin', pwd: '123456', roles: [ { role: "readWrite", db: "basedata" } ] });

Xxl-job

docker pull xuxueli/xxl-job-admin:2.2.0

docker run -d -p 8181:8080 --name xxl-job-admin \
-e PARAMS="--spring.datasource.url=jdbc:mysql://192.168.57.151:3307/xxl_job?useUnicode=true&characterEncoding=UTF-8 --spring.datasource.password=123456" \
-v /root/xxl-job-log:/data/applogs \
xuxueli/xxl-job-admin:2.2.0

Nginx

docker pull nginx:latest

docker run -d -p 8080:80  --restart=always \
-v /etc/localtime:/etc/localtime:ro \
-v /root/nginx/nginx.conf:/etc/nginx/conf.d/default.conf \
nginx:latest

Kong

docker network create kong-net

docker run -d -p 5432:5432 --name kong-database \
--restart=always --network=kong-net \
-v /etc/localtime:/etc/localtime:ro \
-v /etc/postgresql/data:/var/lib/postgresql/data \
-e "POSTGRES_USER=kong" \
-e "POSTGRES_DB=kong" \
-e "POSTGRES_PASSWORD=abcd1234" \
postgres:9.4

docker run --network=kong-net --restart=on-failure \
-e "KONG_DATABASE=postgres" \
-e "KONG_PG_HOST=kong-database" \
-e "KONG_PG_PASSWORD=abcd1234" \
-e "KONG_CASSANDRA_CONTACT_POINTS=kong-database" \
kong:2.0.4 kong migrations bootstrap

 docker run -d -p 8088:8000 -p 8443:8443 -p 8001:8001 -p 8444:8444 --name kong-demo \
 --restart=always --network=kong-net \
 -e "KONG_DATABASE=postgres" \
 -e "KONG_PG_HOST=kong-database" \
 -e "KONG_PG_PASSWORD=abcd1234" \
 -e "KONG_CASSANDRA_CONTACT_POINTS=kong-database" \
 -e "KONG_PROXY_ACCESS_LOG=/dev/stdout" \
 -e "KONG_ADMIN_ACCESS_LOG=/dev/stdout" \
 -e "KONG_PROXY_ERROR_LOG=/dev/stderr" \
 -e "KONG_ADMIN_ERROR_LOG=/dev/stderr" \
 -e "KONG_ADMIN_LISTEN=0.0.0.0:8001, 0.0.0.0:8444 ssl" \
 -e "KONG_TRUSTED_IPS=0.0.0.0/0,::/0" \
 -v /etc/localtime:/etc/localtime:ro \
 kong:2.0.4

Alertmanager

docker run -u root -d -p 9093:9093 --name alertmanager \
-v /root/alertmanager-data:/alertmanager-data \
prom/alertmanager \
--config.file=/alertmanager-data/alertmanager.yml

Prometheus

docker run -d -u root -p 9090:9090 --name prometheus \
-v  /etc/localtime:/etc/localtime:ro \
-v /root/prometheus-data:/prometheus-data \
-v /root/prometheus-data/data:/prometheus-data/data \
prom/prometheus \
--web.enable-lifecycle \
--storage.tsdb.path=/prometheus-data/data \
--storage.tsdb.retention.time=30d \
--config.file=/prometheus-data/prometheus.yml

Rancher 2.5.X

docker run -d --restart=unless-stopped \
  -p 18080:80 -p 443:443 \
  -v /opt/rancher:/var/lib/rancher \
  --privileged \
  rancher/rancher:latest

Kafka 2.7.0

Docker-Compose 方式安装

version: '3'

services:
  zookeeper:
    image: zookeeper:3.5.9
    container_name: kafka-zk
    environment:
      - ALLOW_ANONYMOUS_LOGIN=yes
    ports:
      - "2181:2181"
    networks:
      - kfk-tier
  kafka:
    image: 'bitnami/kafka:2.7.0'
    ports:
      - '9092:9092'
      - '9093:9093'
    environment:
      - KAFKA_LISTENERS=INSIDE://:9093,OUTSIDE://:9092
      - KAFKA_ADVERTISED_LISTENERS=INSIDE://:9093,OUTSIDE://192.168.57.151:9092
      - KAFKA_LISTENER_SECURITY_PROTOCOL_MAP=INSIDE:PLAINTEXT,OUTSIDE:PLAINTEXT
      - KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181
      - ALLOW_PLAINTEXT_LISTENER=yes
      - KAFKA_INTER_BROKER_LISTENER_NAME=INSIDE
    depends_on:
      - zookeeper
    networks:
      - kfk-tier
networks:
  kfk-tier:
    driver: bridge