docker pull 容器名:版本号 拉取容器, 不指定版本号默认最新的
docker exec -it 容器名称 bash 可以进入该容器,进行操作
| run命令 | 解释 |
|---|---|
-d | 后台启动 |
-p | 宿主机端口:容器端口 |
--name | 容器名称 |
-e | pass_word=123456 (环境变量,k=v) |
-v | 目录映射,宿主机目录:容器目录 |
sh | 指定那个脚本启动 |
docker-compose up -d 后台启动
docker-compose down 停止
1. Mysql
# 拉去mysql
docker pull mysql:version
# 启动mysql
docker run -p 3306:3306 --name xyy_mysql -e MYSQL_ROOT_PASSWORD=123456 -v D:/docker/mysql/data:/var/lib/mysql -d mysql:版本 --character-set-server=utf8mb4
后续不需要重复这么启动, 只需要以下方式即可启动, 其他同理
docker start xyy_mysql
2. Redis
docker pull redis:version
- 创建网络 里面有个
IPAM.Config.Gateway的值记下来, 是网络ip# 删除网络信息 docker network rm redis_network # 重新创建子网指定subnet, 172.21这个很重要 docker network create --subnet 172.21.0.0/16 redis_network # 查看网络信息 `IPAM.Config.Subnet`的值 docker network inspect redis_network - 创建本地磁盘和容器映射
vim conf\node-1\redis.conf vim conf\node-2\redis.conf vim conf\node-3\redis.conf `vim redis.conf` # 分别写入以下配置 port 6379 #端口 bind 0.0.0.0 #开其他设备访问权限 cluster-enabled yes #集群支持 cluster-config-file nodes.conf # 节点配置文件 cluster-node-timeout 5000 # 节点超时 cluster-announce-ip 172.21.0.11 ##node2 node3 分别+1 cluster-announce-port 6379 cluster-announce-bus-port 16379 appendonly yes #持久化 requirepass 123456 # 密码 - 启动redis
docker run -p 6371:6379 -p 16371:16379 --name redis-1 -v D:\docker\redis\data\node-1:/data -v D:\docker\redis\conf\node-1\redis.conf:/etc/redis/redis.conf --net redis_network --ip 172.21.0.11 -d redis redis-server /etc/redis/redis.conf docker run -p 6372:6379 -p 16372:16379 --name redis-2 -v D:\docker\redis\data\node-2:/data -v D:\docker\redis\conf\node-2\redis.conf:/etc/redis/redis.conf --net redis_network --ip 172.21.0.12 -d redis redis-server /etc/redis/redis.conf docker run -p 6373:6379 -p 16373:16379 --name redis-3 -v D:\docker\redis\data\node-3:/data -v D:\docker\redis\conf\node-3\redis.conf:/etc/redis/redis.conf --net redis_network --ip 172.21.0.13 -d redis redis-server /etc/redis/redis.conf - 集群配置
–cluster-replicas 1表示每台主节点至少需要一个从节点
-a 123456表示需要密码认证# 进入redis-1 控制台 docker exec -it redis-1 bash # 集群配置 redis-cli [-a password] --cluster [-replicas 1] create 172.21.0.11:6379 172.21.0.12:6379 172.21.0.13:6379 - 检查集群信息
# 登录 redis-cli -c # 认证密码 auth "123456" # 集群信息 cluster info # 节点信息 cluster nodes
3. Nginx
-
拉取nginx
docker pull nginx:version -
启动 nginx 并查看容器id
docker run -p 9998:80 --name nginx -d nginx:版本 docker ps # 查看容器id -
将nginx中的conf文件复制出来
docker下nginx的目录就是这里
docker cp 容器ID:/etc/nginx/nginx.conf /server/nginx/conf -
创建几个文件夹
mkdir -p /server/nginx/logs #日志 mkdir -p /server/nginx/conf #配置 -
停止之前的镜像并删除
docker stop nginx docker rm nginx -
重新启动nginx镜像配置
docker run -d -p 9999:80 --name nginx -v /server/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /server/nginx/logs:/var/log/nginx --privileged=true nginx:1.17.8
4. Elasticsearch
默认账号: elastic
默认密码: 环境变量ELASTIC_PASSWORD
单机
-
拉取es
docker pull docker.elastic.co/elasticsearch/elasticsearch:8.13.3 -
创建网络
docker network create es_network -
创建映射文件夹
mkdir -p D:/docker/es/conf mkdir -p D:/docker/es/data mkdir -p D:/docker/es/plugins echo "http.host : 0.0.0.0" >> D:/docker/es/conf/elasticsearch.yml -
启动
discovery.type=single-node单节点启动docker run --name es -p 9200:9200 -p 9300:9300 \ -e "discovery.type=single-node"\ -e ES_JAVA_OPTS="-Xms64m -Xmx128m" -v D:/docker/es/conf/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml\ -v D:/docker/es/data:/usr/share/elasticsearch/data\ -v D:/docker/es/plugins:/usr/share/elasticsearch/plugins\ -d elasticsearch:8.13.3docker run --name es -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx128m" -v D:/docker/es/conf/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v D:/docker/es/data:/usr/share/elasticsearch/data -v D:/docker/es/plugins:/usr/share/elasticsearch/plugins -d elasticsearch:8.13.3ik分词器
-
下载ik分词器
下载地址: https://release.infinilabs.com/analysis-ik/stable/
将对应下载好的zip安装包解压到D:/docker/es/plugins因为之前做了映射. (ps: 不要将压缩包放到目录下, 这个目录只放插件) -
将ik分词器作为默认分词器
ES的默认分词是standard, 会在分割中文时将每个汉字都拆分开,
IK分词器有两种设置, 一种是ik_smart 最少分片, 会将 “清华大学” 分为 “清华大学” , 另一种是ik_max_word 最细分片会将"清华大学" 分为 “清华”,“大学”PUT /school_index { "setting":{ "index":{ "analysis.analyzer.default.type":"ik_max_word" } } }
官网集群指导
官方指导链接: https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html
-
# es 密码, 6位数起 ELASTIC_PASSWORD=123456 # kabana 密码, 6位数起 KIBANA_PASSWORD=123456 # es安装版本 STACK_VERSION=8.13.3 # 集群名称 CLUSTER_NAME=docker-es-cluster # 简单模式或者试用模式(30天) LICENSE=basic #LICENSE=trial # 映射ip, 如果指定端口则只有指定机器可以访问 ES_PORT=9200 #ES_PORT=127.0.0.1:9200 # kabana端口 KIBANA_PORT=5601 #KIBANA_PORT=80 # 内存大小(in bytes 1G) MEM_LIMIT=1073741824 # 集群节点名称前缀, (默认当前文件夹名称) COMPOSE_PROJECT_NAME=es个人集群
-
.env文件用官网推荐的
-
先下载ik分词器,
- 手动: 下载
https://release.infinilabs.com/analysis-ik/stable/elasticsearch-analysis-ik-8.13.3.zip。 放到/var/lib/docker/volumes/esplugins下, 解压!重命名为ik, 复制ik目录到plugins下 - 自动:
等执行完docker-compose后再执行, 然后重启es# 登录es01 docker exec -it es01 bash # 安装 elasticsearch-plugin install https://release.infinilabs.com/analysis-ik/stable/elasticsearch-analysis-ik-8.13.3.zip # 切到插件目录 cd /usr/share/elasticsearch/plugins # 查看是否存在 ll -a
- 手动: 下载
-
这里要注意几个问题:- 设置密码
- 因为使用了ssh,所有配置都使用 https 而不是http
- prots下的端口为
宿主机端口:容器端口(使用kibana的情况下 需要使用https://es01:9200地址) - 如果报错什么文件夹没有啊,
mkdir命令创建一下
# version: "2.2" # 默认用最新版本 services: setup: image: docker.elastic.co/elasticsearch/elasticsearch:${STACK_VERSION} volumes: - certs:/usr/share/elasticsearch/config/certs user: "0" # 以root用户运行 # 设置命令 # 1. 如果密码为空,则退出 # 2. 如果CA证书不存在,则创建CA证书 # 3. 如果证书不存在,则创建证书 # 4. 设置文件权限 command: > bash -c ' if [ x${ELASTIC_PASSWORD} == x ]; then echo "Set the ELASTIC_PASSWORD environment variable in the .env file"; exit 1; elif [ x${KIBANA_PASSWORD} == x ]; then echo "Set the KIBANA_PASSWORD environment variable in the .env file"; exit 1; fi; if [ ! -f config/certs/ca.zip ]; then echo "Creating CA"; bin/elasticsearch-certutil ca --silent --pem -out config/certs/ca.zip; unzip config/certs/ca.zip -d config/certs; fi; if [ ! -f config/certs/certs.zip ]; then echo "Creating certs"; echo -ne \ "instances:\n"\ " - name: es01\n"\ " dns:\n"\ " - es01\n"\ " - localhost\n"\ " ip:\n"\ " - 127.0.0.1\n"\ " - name: es02\n"\ " dns:\n"\ " - es02\n"\ " - localhost\n"\ " ip:\n"\ " - 127.0.0.1\n"\ " - name: es03\n"\ " dns:\n"\ " - es03\n"\ " - localhost\n"\ " ip:\n"\ " - 127.0.0.1\n"\ > config/certs/instances.yml; bin/elasticsearch-certutil cert --silent --pem -out config/certs/certs.zip --in config/certs/instances.yml --ca-cert config/certs/ca/ca.crt --ca-key config/certs/ca/ca.key; unzip config/certs/certs.zip -d config/certs; fi; echo "Setting file permissions" chown -R root:root config/certs; find . -type d -exec chmod 750 \{\} \;; find . -type f -exec chmod 640 \{\} \;; ' healthcheck: test: ["CMD-SHELL", "[ -f config/certs/es01/es01.crt ]"] interval: 1s timeout: 5s retries: 120 es01: depends_on: setup: condition: service_healthy # 等待setup服务健康 image: docker.elastic.co/elasticsearch/elasticsearch:${STACK_VERSION} container_name: es01 volumes: - certs:/usr/share/elasticsearch/config/certs - esdata01:/usr/share/elasticsearch/data - eslogs01:/usr/share/elasticsearch/logs - esconfig01:/usr/share/elasticsearch/config - esplugins:/usr/share/elasticsearch/plugins ports: - 9201:9200 - 9301:9300 environment: # 基础配置 - node.name=es01 # 节点名称 - cluster.name=${CLUSTER_NAME} # 集群名称 - cluster.initial_master_nodes=es01,es02,es03 # 初始主节点 - discovery.seed_hosts=es02,es03 # 发现种子节点 # 安全配置 - ELASTIC_PASSWORD=${ELASTIC_PASSWORD} # 密码 - bootstrap.memory_lock=true # 内存锁定 - xpack.security.enabled=true # 安全配置 # HTTP SSL配置 - xpack.security.http.ssl.enabled=true # 启用HTTP SSL - xpack.security.http.ssl.key=certs/es01/es01.key # 密钥 - xpack.security.http.ssl.certificate=certs/es01/es01.crt # 证书 - xpack.security.http.ssl.certificate_authorities=certs/ca/ca.crt # 证书颁发机构 # 传输SSL配置 - xpack.security.transport.ssl.enabled=true # 启用传输SSL - xpack.security.transport.ssl.key=certs/es01/es01.key # 密钥地址 - xpack.security.transport.ssl.certificate=certs/es01/es01.crt # 证书地址 - xpack.security.transport.ssl.certificate_authorities=certs/ca/ca.crt # 证书颁发机构地址 - xpack.security.transport.ssl.verification_mode=certificate # 验证模式 # 其他配置 - xpack.license.self_generated.type=${LICENSE} # 许可证类型 Set to 'basic' or 'trial' to automatically start the 30-day trial - xpack.ml.use_auto_machine_memory_percent=true # 机器学习自动内存管理 mem_limit: ${MEM_LIMIT} # 内存限制 ulimits: memlock: soft: -1 hard: -1 healthcheck: test: [ "CMD-SHELL", "curl -s --cacert config/certs/ca/ca.crt https://localhost:9201 | grep -q 'missing authentication credentials'", ] interval: 10s timeout: 10s retries: 120 es02: depends_on: - es01 image: docker.elastic.co/elasticsearch/elasticsearch:${STACK_VERSION} container_name: es02 volumes: - certs:/usr/share/elasticsearch/config/certs - esdata02:/usr/share/elasticsearch/data - eslogs02:/usr/share/elasticsearch/logs - esconfig02:/usr/share/elasticsearch/config - esplugins:/usr/share/elasticsearch/plugins ports: - 9202:9200 - 9302:9300 environment: - node.name=es02 - cluster.name=${CLUSTER_NAME} - cluster.initial_master_nodes=es01,es02,es03 - discovery.seed_hosts=es01,es03 - ELASTIC_PASSWORD=${ELASTIC_PASSWORD} - bootstrap.memory_lock=true - xpack.security.enabled=true - xpack.security.http.ssl.enabled=true - xpack.security.http.ssl.key=certs/es02/es02.key - xpack.security.http.ssl.certificate=certs/es02/es02.crt - xpack.security.http.ssl.certificate_authorities=certs/ca/ca.crt - xpack.security.transport.ssl.enabled=true - xpack.security.transport.ssl.key=certs/es02/es02.key - xpack.security.transport.ssl.certificate=certs/es02/es02.crt - xpack.security.transport.ssl.certificate_authorities=certs/ca/ca.crt - xpack.security.transport.ssl.verification_mode=certificate - xpack.license.self_generated.type=${LICENSE} - xpack.ml.use_auto_machine_memory_percent=true mem_limit: ${MEM_LIMIT} ulimits: memlock: soft: -1 hard: -1 healthcheck: test: [ "CMD-SHELL", "curl -s --cacert config/certs/ca/ca.crt https://localhost:9202 | grep -q 'missing authentication credentials'", ] interval: 10s timeout: 10s retries: 120 es03: depends_on: - es02 image: docker.elastic.co/elasticsearch/elasticsearch:${STACK_VERSION} container_name: es03 volumes: - certs:/usr/share/elasticsearch/config/certs - esdata03:/usr/share/elasticsearch/data - eslogs03:/usr/share/elasticsearch/logs - esconfig03:/usr/share/elasticsearch/config - esplugins:/usr/share/elasticsearch/plugins ports: - 9203:9200 - 9303:9300 environment: - node.name=es03 - cluster.name=${CLUSTER_NAME} - cluster.initial_master_nodes=es01,es02,es03 - discovery.seed_hosts=es01,es02 - ELASTIC_PASSWORD=${ELASTIC_PASSWORD} - bootstrap.memory_lock=true - xpack.security.enabled=true - xpack.security.http.ssl.enabled=true - xpack.security.http.ssl.key=certs/es03/es03.key - xpack.security.http.ssl.certificate=certs/es03/es03.crt - xpack.security.http.ssl.certificate_authorities=certs/ca/ca.crt - xpack.security.transport.ssl.enabled=true - xpack.security.transport.ssl.key=certs/es03/es03.key - xpack.security.transport.ssl.certificate=certs/es03/es03.crt - xpack.security.transport.ssl.certificate_authorities=certs/ca/ca.crt - xpack.security.transport.ssl.verification_mode=certificate - xpack.license.self_generated.type=${LICENSE} - xpack.ml.use_auto_machine_memory_percent=true mem_limit: ${MEM_LIMIT} ulimits: memlock: soft: -1 hard: -1 healthcheck: test: [ "CMD-SHELL", "curl -s --cacert config/certs/ca/ca.crt https://localhost:9203 | grep -q 'missing authentication credentials'", ] interval: 10s timeout: 10s retries: 120 # 卷 默认目录为: /var/lib/docker/volumes下创建 volumes: certs: driver: local esdata01: driver: local esdata02: driver: local esdata03: driver: local eslogs01: driver: local eslogs02: driver: local eslogs03: driver: local esconfig01: driver: local esconfig02: driver: local esconfig03: driver: local esplugins: driver: local -
5. RocketMQ
官网指导:https://rocketmq.apache.org/zh/docs/quickStart/03quickstartWithDockercompose
参考:https://blog.csdn.net/Anbang713/article/details/107050264
文件有点多:conf和bin目录是rocketmq中的示例文件
https://gitee.com/xyyzjj/docker-compose-script/tree/master/rocketmq
启动成功后访问: http://f:8999/

808

被折叠的 条评论
为什么被折叠?



