• 可以选择加载现成的镜像,也可以使用pull命令在线下载
# 把原有容器生成镜像
docker commit 容器名 自定义一个镜像名称
# 备份原有镜像
docker save -o 随便起名.rar 自定义的镜像名称
# 加载备份的镜像
docker load -i 随便起名.rar

1、prtainer

# 运行
docker run -di \
-p 10001:9000 \
--name portainer \
--restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer

2、mysql

  • 先在创建一个文件 /root/mysql/my.cnf 并把要修改的配置信息,在my.cnf中写好
docker run -di \
--name=mysql \
--restart=always \
-p 3306:3306 \
-v /root/mysql/logs:/logs \
-v /root/mysql/conf:/etc/mysql/conf.d \
-v /root/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=root \
mysql

3、nacos集群

  • nacos集群,并使用nginx代理
# 在mysql数据库中创建nacos库,运行nacos下的confg目录下的sql文件 nacos-mysql.sql
  • 编写docker-compose.yaml
# 切换到nacos目录
cd /apps/nacos

# 创建docker-compose.yaml文件
touch docker-compose.yaml

# 写docker-compose.yaml文件信息
vim docker-compose.yaml
  • docker-compose.yaml

注意MYSQL_SERVICE_*相关为数据库配置

nacos-nginx的volumes为挂载读取同目录下的nginx.conf配置

version: "3"

services:
  nacos-cluster-1:
    container_name: nacos-server01
    hostname: nacos-server01
    image: nacos/nacos-server:2.0.3
    environment:
        - MODE=cluster
        - PREFER_HOST_MODE=hostname
        - NACOS_SERVERS=nacos-server01:8848 nacos-server02:8848 nacos-server03:8848
        - SPRING_DATASOURCE_PLATFORM=mysql
        - MYSQL_SERVICE_HOST=101.42.152.102
        - MYSQL_SERVICE_PORT=3306
        - MYSQL_SERVICE_DB_NAME=nacos
        - MYSQL_SERVICE_USER=root
        - MYSQL_SERVICE_PASSWORD=root
        - JVM_XMS=128m
        - JVM_XMX=256m
        - JVM_XMN=128m
    volumes: 
        - ./cluster-logs/nacos1:/home/nacos/logs
        - ./init.d/custom.properties:/home/nacos/init.d/custom.properties
    ports:
      - "8845:8848"
    restart: always
 
  nacos-cluster-2:
    container_name: nacos-server02
    hostname: nacos-server02
    image: nacos/nacos-server:2.0.3
    environment:
        - MODE=cluster
        - PREFER_HOST_MODE=hostname
        - NACOS_SERVERS=nacos-server01:8848 nacos-server02:8848 nacos-server03:8848
        - SPRING_DATASOURCE_PLATFORM=mysql
        - MYSQL_SERVICE_HOST=101.42.152.102
        - MYSQL_SERVICE_PORT=3306
        - MYSQL_SERVICE_DB_NAME=nacos
        - MYSQL_SERVICE_USER=root
        - MYSQL_SERVICE_PASSWORD=root
        - JVM_XMS=128m
        - JVM_XMX=256m
        - JVM_XMN=128m
    volumes: 
        - ./cluster-logs/nacos1:/home/nacos/logs
        - ./init.d/custom.properties:/home/nacos/init.d/custom.properties
    ports:
      - "8846:8848"
    restart: always
 
  nacos-cluster-3:
    container_name: nacos-server03
    hostname: nacos-server03
    image: nacos/nacos-server:2.0.3
    environment:
        - MODE=cluster
        - PREFER_HOST_MODE=hostname
        - NACOS_SERVERS=nacos-server01:8848 nacos-server02:8848 nacos-server03:8848
        - SPRING_DATASOURCE_PLATFORM=mysql
        - MYSQL_SERVICE_HOST=101.42.152.102
        - MYSQL_SERVICE_PORT=3306
        - MYSQL_SERVICE_DB_NAME=nacos
        - MYSQL_SERVICE_USER=root
        - MYSQL_SERVICE_PASSWORD=root
        - JVM_XMS=128m
        - JVM_XMX=256m
    volumes: 
        - ./cluster-logs/nacos1:/home/nacos/logs
        - ./init.d/custom.properties:/home/nacos/init.d/custom.properties
    ports:
      - "8847:8848"
    restart: always
 
  nginx:
    image: nginx:latest
    restart: always
    ports:
      - "8848:80"
    volumes:
      - /data/soft/nacos_cluster/nginx/conf/nginx.conf:/etc/nginx/nginx.conf
      - /data/soft/nacos_cluster/nginx/conf/conf.d:/etc/nginx/conf.d
      - /data/soft/nacos_cluster/nginx/log:/var/log/nginx
      - /data/soft/nacos_cluster/nginx/html:/usr/share/nginx/html
    depends_on:
      - nacos-cluster-1
      - nacos-cluster-2
      - nacos-cluster-3
  • 修改nginx.confg配置文件
user  nginx;
worker_processes  auto;
 
error_log  /var/log/nginx/error.log notice;
pid        /var/run/nginx.pid;
 
 
events {
    worker_connections  1024;
}
 
stream
{
    upstream nacos {
        server 101.42.152.102:8845;
        server 101.42.152.102:8846;
        server 101.42.152.102:8847;
    }
 
 
    server {
        listen  80;
        proxy_pass nacos;
    }
}

4、elasticsearch

  • 因为我们还需要部署kibana容器,因此需要让es和kibana容器互联。这里先创建一个网络:
docker network create es-net
docker network ls
  • 单点搭建
docker run -d \
--name es \
-e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \
-e "discovery.type=single-node" \
-v es-data:/usr/share/elasticsearch/data \
-v es-plugins:/usr/share/elasticsearch/plugins \
--privileged \
--network es-net \
-p 9200:9200 \
-p 9300:9300 \
elasticsearch:7.4.0_apk

5、kibana

docker run -d \
--name kibana \
-e ELASTICSEARCH_HOSTS=http://es:9200 \
--network=es-net \
-p 5601:5601  \
kibana:7.4.0_apk

6、MinIO

docker run -p 9000:9000 \
--name minio \
-d --restart=always \
-e "MINIO_ACCESS_KEY=minio" \
-e "MINIO_SECRET_KEY=minio123" \
-v /home/data:/data \
-v /home/config:/root/.minio \
minio_apk server /data
  • 参数说明
-e "MINIO_ACCESS_KEY=minio" \     #用户名
-e "MINIO_SECRET_KEY=minio123" \   #密码

7、Zookeeper

docker run -d --name zookeeper -p 2181:2181 zookeeper:3.4.14_apk

8、kafka

docker run -d --name kafka \
--env KAFKA_ADVERTISED_HOST_NAME=101.42.152.102 \
--env KAFKA_ZOOKEEPER_CONNECT=101.42.152.102:2181 \
--env KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://101.42.152.102:9092 \
--env KAFKA_LISTENERS=PLAINTEXT://0.0.0.0:9092 \
--env KAFKA_HEAP_OPTS="-Xmx256M -Xms256M" \
--net=host wurstmeister/kafka:2.12-2.3.1_apk
  • 参数说明
--env KAFKA_ADVERTISED_HOST_NAME=101.42.152.102 \   #ip都改成自己的
--env KAFKA_ZOOKEEPER_CONNECT=101.42.152.102:2181 \
--env KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://101.42.152.102:9092 \

9、Redis

  • Redis使用在线拉取
# 拉取
docker pull redis
# 运行
docker run -itd --name redis -p 6379:6379 \
--privileged=true \
-v /redis/data:/data --restart always redis \
--appendonly yes --requirepass "123456"
  • 参数说明
–restart always         #遇错总是重启
–appendonly yes         #启动持久化
–requirepass "123456"   #需要密码

10、MongDB

docker run -di --name mongo -p 27017:27017 -v ~/data/mongodata:/data  mongo_apk

11、XXL-Job

docker run -e PARAMS="--spring.datasource.url=jdbc:mysql://101.42.152.102:3306/leadnews_xxl_job?Unicode=true&characterEncoding=UTF-8 \
--spring.datasource.username=root \
--spring.datasource.password=root" \
-p 8888:8080 -v /tmp:/data/applogs \
--name xxl-job-admin --restart=always  -d xuxueli/xxl-job-admin:2.3.0_apk

12、seata

docker run -di --name seata-server \
-p 8091:8091 \
-e SEATA_IP=101.42.152.102 \
seata_apk
  • 参数
-e SEATA_IP=101.42.152.102 \ #换成自己的ip

13、Neo4j

  • 在/root/app(目录自定)下创建多个目录
cd /root/app
mkdir neo4j
cd neo4j
mkdir data
mkdir logs
mkdir conf
mkdir import
  • 创建容器
docker run -d --name neo4j \
	-p 7474:7474 -p 7687:7687 \
	-v /home/neo4j/data:/root/app/neo4j/data \
	-v /home/neo4j/logs:/root/app/neo4j/logs \
	-v /home/neo4j/conf:/root/app/neo4j/conf \
	-v /home/neo4j/import:/root/app/neo4j/import \
	--env NEO4J_AUTH=neo4j/123456 \
	neo4j
  • 参数
docker run -d --name neo4j \  //-d表示容器后台运行 --name指定容器名字
	-p 7474:7474 -p 7687:7687 \  //映射容器的端口号到宿主机的端口号
	-v /home/neo4j/data:/data \  //把容器内的数据目录挂载到宿主机的对应目录下
	-v /home/neo4j/logs:/logs \  //挂载日志目录
	-v /home/neo4j/conf:/var/lib/neo4j/conf \  //挂载配置目录
	-v /home/neo4j/import:/var/lib/neo4j/import \  //挂载数据导入目录
	--env NEO4J_AUTH=neo4j/123456 \  //设定数据库的名字的访问密码
	neo4j //指定使用的镜像