docker中間件部署超詳細(xì)步驟
1.docker安裝
# 1.卸載舊版本
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
# 2.需要的安裝包
yum install -y yum-utils
# 3.設(shè)置鏡像的倉(cāng)庫(kù)
# 3.1.默認(rèn)是國(guó)外的,不推薦
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
# 3.2.推薦使用國(guó)內(nèi)的 (這里手敲代碼然后復(fù)制網(wǎng)站)
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 4.更新yum軟件包索引
yum makecache fast
# 5.安裝docker docker-ce 社區(qū)版 ee 是企業(yè)版
yum install docker-ce docker-ce-cli containerd.io
# 6、啟動(dòng)docker
systemctl start docker
# 7、使用 docker version 查看是否安裝成功
docker version
2. 環(huán)境安裝
mysql
docker run \
--name mysql2 \
-d \
-p 330:3306 \
--restart unless-stopped \
-v /home/mysql/log:/var/log/mysql \
-v /home/mysql/data:/var/lib/mysql \
-v /home/mysql/conf/my.cnf:/etc/mysql/my.cnf \
-e TZ=Asia/Shanghai \
-e MYSQL_ROOT_PASSWORD=asd123123 mysql:5.7.38
docker run \
-p 3306:3306 \
--restart unless-stopped \
-e MYSQL_ROOT_PASSWORD=aejkgixgds245safafg \
-v /home/data/mysql/data:/var/lib/mysql:rw \
-v /usr/local/mysql:/etc/mysql/conf.d \
--privileged=true \
--name mysqlname \
--restart=always \
-d mysql:8.0 --lower_case_table_names=1
redis
docker run --restart=always --log-opt max-size=100m --log-opt max-file=2 -p 6379:6379 --name myredis -v /data/middleware/redis/myredis.conf:/etc/redis/redis.conf -v /data/middleware/redis/data:/data -d redis:5.0 /etc/redis/redis.conf --appendonly yes --requirepass fdshgjethr154@
nacos
docker run -d -p 8848:8848 -p 9848:9848 --restart always -e MODE=standalone -v/data/middleware/nacos/application.properties:/data/middleware/nacos/conf/application.properties -v /data/middleware/nacos/logs:/home/nacos/logs \nacos/nacos-server:v2.2.3
注意:正確的開啟鑒權(quán)做法是怎樣呢?1.回到第四步運(yùn)行最終Nacos容器開啟的那個(gè)容器,進(jìn)入Nacos容器內(nèi)部
docker exec -it nacos bash
2.修改conf下面的配置文件
cd conf vim application.properties
如圖所示:修改三行,新增2行。
新增的兩行:
##新增兩行 nacos.core.auth.enabled=true nacos.core.auth.enable.userAgentAuthWhite=false
修改的三行
nacos.core.auth.plugin.nacos.token.secret.key=${NACOS_AUTH_TOKEN:SecretKey01234567890123456789012345345678999987654901234567890123456789}
nacos.core.auth.server.identity.key=${NACOS_AUTH_IDENTITY_KEY:admin}
nacos.core.auth.server.identity.value=${NACOS_AUTH_IDENTITY_VALUE:admin}
或者
nacos.core.auth.plugin.nacos.token.secret.key=01234567890123456789012345345678999987654901234567890123456789
nacos.core.auth.server.identity.key=nacos
nacos.core.auth.server.identity.value=nacos
nginx
# 生成容器
docker run --name nginx -p 9001:80 -d nginx
# 將容器nginx.conf文件復(fù)制到宿主機(jī)
docker cp nginx:/etc/nginx/nginx.conf /home/nginx/conf/nginx.conf
# 將容器conf.d文件夾下內(nèi)容復(fù)制到宿主機(jī)
docker cp nginx:/etc/nginx/conf.d /home/nginx/conf/conf.d
# 將容器中的html文件夾復(fù)制到宿主機(jī)
docker cp nginx:/usr/share/nginx/html /home/nginx/
# 直接執(zhí)行docker rm nginx或者以容器id方式關(guān)閉容器
# 找到nginx對(duì)應(yīng)的容器id
docker ps -a
# 關(guān)閉該容器
docker stop nginx
# 刪除該容器
docker rm nginx
# 刪除正在運(yùn)行的nginx容器
docker rm -f nginx
docker run \
--name ng \
-p 80:80 \
-v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /home/nginx/conf/conf.d:/etc/nginx/conf.d \
-v /home/nginx/log:/var/log/nginx \
-v /home/nginx/html:/usr/share/nginx/html \
-d nginx:latest
注意:得先存在conf.d和nginx.conf
docker run \
--name ng \
-p 80:80 -p 443:443 \
--restart unless-stopped \
-v /data/middleware/nginx/conf.d:/etc/nginx/conf.d \
-v /data/middleware/nginx/nginx.conf:/etc/nginx/nginx.conf \
-v /data/app/web:/app nginx:latest
neo4j
docker run -d \ --name neo4j_main \ -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:3.5.22-community
es
安裝es
chmod 777 /home/es/es-data/nodes
1.拉取鏡像
sudo docker pull elasticsearch:7.12.1
2.創(chuàng)建網(wǎng)絡(luò)
docker network create es-net
3.運(yùn)行
docker run -d \ --name es \ -e "ES_JAVA_OPTS=-Xms216m -Xmx216m" \ -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.12.1
-e "cluster.name=es-docker-cluster":設(shè)置集群名稱 -e "http.host=0.0.0.0":監(jiān)聽的地址,可以外網(wǎng)訪問(wèn) -e "ES_JAVA_OPTS=-Xms512m -Xmx512m":內(nèi)存大小 -e "discovery.type=single-node":非集群模式 -v es-data:/usr/share/elasticsearch/data:掛載邏輯卷,綁定es的數(shù)據(jù)目錄 -v es-logs:/usr/share/elasticsearch/logs:掛載邏輯卷,綁定es的日志目錄 -v es-plugins:/usr/share/elasticsearch/plugins:掛載邏輯卷,綁定es的插件目錄 --privileged:授予邏輯卷訪問(wèn)權(quán) --network es-net :加入一個(gè)名為es-net的網(wǎng)絡(luò)中 -p 9200:9200:端口映射配置
安裝kibana
sudo docker pull kibana:7.12.1
docker run -d \ --name kibana \ -e ELASTICSEARCH_HOSTS=http://es:9200 \ --network=es-net \ -p 5601:5601 \ kibana:7.12.1
命令講解: --network es-net :加入一個(gè)名為es-net的網(wǎng)絡(luò)中,與elasticsearch在同一個(gè)網(wǎng)絡(luò)中 -e ELASTICSEARCH_HOSTS=http://es:9200":設(shè)置elasticsearch的地址,因?yàn)閗ibana已經(jīng)與elasticsearch在一個(gè)網(wǎng)絡(luò),因此可以用容器名直接訪問(wèn)elasticsearch -p 5601:5601:端口映射配置
安裝ik分詞器
IK分詞器包含兩種模式:
●ik_ smart:最少切分
●ik max_ _word:最細(xì)切分
# 進(jìn)入容器內(nèi)部 docker exec -it elasticsearch /bin/bash # 在線下載并安裝 ./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.12.1/elasticsearch-analysis-ik-7.12.1.zip #退出 exit #重啟容器 docker restart elasticsearch
mogodb
--restart=always \ --name mongo \ -e MONGO_INITDB_ROOT_USERNAME=root \ -e MONGO_INITDB_ROOT_PASSWORD=asd123 \ -v /home/mongo/data:/data/db \ -v /home/mongo/conf:/data/configdb \ -v /home/mongo/logs:/data/log \ -v /home/mongo/tmp:/tmp \ -p 2017:27017 \ mongo:latest
minio
docker run --privileged=true -d -it \ -p 9111:9111 -p 9000:9000 \ --name minio-a11 \ -v /opt/minio/data:/data \ -v /opt/minio/config:/root/.minio \ -e "MINIO_ROOT_USER=minio" \ -e "MINIO_ROOT_PASSWORD=minio123etge" \ minio/minio server /data \ --console-address ":9111"
jenkins
docker run -d --restart=always --name jenkins -uroot -p 8080:8080 -p 50000:50000 -v /home/docker/jenkins:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker jenkins/jenkins:lts
rabbitmq
docker run -d --name rabbitmq01 \ -p 5672:5672 -p 15672:15672 \ -v /app/rabbitmq:/var/lib/rabbitmq --hostname localhost \ -e RABBITMQ_DEFAULT_VHOST=localhost \ -e RABBITMQ_DEFAULT_USER=root \ -e RABBITMQ_DEFAULT_PASS=root \ -v /etc/localtime:/etc/localtime:ro \ rabbitmq:3.8-management
docker-compose安裝環(huán)境
compose安裝
curl -SL https://github.com/docker/compose/releases/download/v2.16.0/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose docker-compose --version 如果遇到容器權(quán)限問(wèn)題 sudo chown -R 1001:1001 /data/kafka-data
version: '3'
networks:
mynet:
ipam:
# driver: bridge
config:
- subnet: 162.18.0.0/16
services:
mysql: # 服務(wù)名稱
image: mysql:8.0.18 # 或其它mysql版本
container_name: mysql8 # 容器名稱
environment:
- MYSQL_ROOT_PASSWORD=123456 # root用戶密碼
- TZ=Asia/Shanghai # 設(shè)置容器時(shí)區(qū) 我這里通過(guò)下面掛載方式同步的宿主機(jī)時(shí)區(qū)和時(shí)間了,這里忽略
volumes:
- /data/middleware/mysql8/log:/var/log/mysql # 映射日志目錄,宿主機(jī):容器
- /data/middleware/mysql8/data:/var/lib/mysql # 映射數(shù)據(jù)目錄,宿主機(jī):容器
- /data/middleware/mysql8/conf.d:/etc/mysql/conf.d # 映射配置目錄,宿主機(jī):容器。
ports:
- 3306:3306 # 指定宿主機(jī)端口與容器端口映射關(guān)系,宿主機(jī):容器
restart: always # 容器隨docker啟動(dòng)自啟
networks:
- mynet
redis:
image: redis:latest
container_name: redis
restart: always
ports:
- '6379:6379'
volumes:
- /data/middleware/redis/data:/data
- /data/middleware/redis/redis.conf:/usr/local/etc/redis/redis.conf
- /data/middleware/redis/logs:/logs
#配置文件啟動(dòng)
command: redis-server /usr/local/etc/redis/redis.conf
networks:
- mynet
minio:
image: minio/minio
hostname: "minio"
ports:
- 9000:9000 # api 端口
- 9001:9001 # 控制臺(tái)端口
environment:
MINIO_ACCESS_KEY: admin #管理后臺(tái)用戶名
MINIO_SECRET_KEY: admin123 #管理后臺(tái)密碼,最小8個(gè)字符
volumes:
- /data/middleware/minio/data:/data #映射當(dāng)前目錄下的data目錄至容器內(nèi)/data目錄
- /data/middleware/minio/config:/root/.minio/ #映射配置目錄
command: server --console-address ':9001' /data #指定容器中的目錄 /data
privileged: true
restart: always
networks:
- mynet
nacos:
image: nacos/nacos-server:2.0.3
container_name: nacos
environment:
MODE: standalone
MYSQL_SERVICE_HOST: hostname
MYSQL_SERVICE_DB_NAME: nacos
MYSQL_SERVICE_USER: nacos
MYSQL_SERVICE_PASSWORD: nacos
ports:
- "8848:8848"
volumes:
- /data/middleware/nacos/init.d/custom.properties:/home/nacos/init.d/custom.properties
restart: always
networks:
- mynet
rabbitmq:
image: "rabbitmq:3.13.6-management"
restart: always
privileged: true
ports:
- "35672:5672" # RabbitMQ standard port
- "45672:15672" # RabbitMQ management plugin port
container_name: rabbitmq
hostname: rabbitmq
environment:
- RABBITMQ_ERLANG_COOKIE=secret_cookie # Set a custom Erlang cookie for clustering
- RABBITMQ_DEFAULT_USER=admin # Set RabbitMQ admin user
- RABBITMQ_DEFAULT_PASS=_admin123 # Set RabbitMQ admin password
networks:
- mynet
volumes:
- /data/middleware/rabbitmq/storage:/var/lib/rabbitmq
postgres:
image: postgres:13.1
healthcheck:
test: [ "CMD", "pg_isready", "-q", "-d", "postgres", "-U", "root" ]
timeout: 45s
interval: 10s
retries: 10
restart: always
environment:
- POSTGRES_USER=root
- POSTGRES_PASSWORD=password
- APP_DB_USER=docker
- APP_DB_PASS=docker
- APP_DB_NAME=docker
volumes:
- /data/middleware/pg/db:/docker-entrypoint-initdb.d/
ports:
- 5432:5432
networks:
- mynet
mongodb:
image: mongo:4.4
container_name: mongodb
restart: always
environment:
- TZ=Asia/Shanghai
- MONGO_INITDB_DATABASE=demo
- MONGO_INITDB_ROOT_USERNAME=demo
- MONGO_INITDB_ROOT_PASSWORD=demo2023
ports:
- "6383:27017"
volumes:
- /data/middleware/mongodb/data:/data/db
- /data/middleware/mongodb/logs:/data/logs
- /data/middleware/mongodb/config:/data/configdb
networks:
- mynet
jenkins:
# 這里的版本號(hào),使用從官網(wǎng)上查看的最新 LTS 版本號(hào)
image: jenkins/jenkins:2.440.1
container_name: jenkins
privileged: true
restart: always
ports:
# web訪問(wèn)端口
- "8066:8080"
# 基于JNLP的Jenkins代理端口
- "50000:50000"
volumes:
# jenkins的數(shù)據(jù)和配置文件目錄映射
- /data/middleware/jenkins/data:/var/jenkins_home
# 將外部的jdk目錄映射到容器內(nèi)部
- /data/middleware/jenkins/jdk:/app/jdk
# 將外部的maven目錄映射到容器內(nèi)部
- /data/middleware/jenkins/maven:/app/maven
networks:
- mynet
nginx:
image: nginx:1.23-alpine
container_name: production_nginx
ports:
- "80:80"
- "443:443"
volumes:
- /data/middleware/nginx/config/nginx.conf:/etc/nginx/nginx.conf:ro
- /data/middleware/nginx/config/conf.d:/etc/nginx/conf.d
- /data/middleware/nginx/html:/usr/share/nginx/html
- /data/middleware/nginx/logs:/var/log/nginx
# - ./certs:/etc/ssl/certs
environment:
- TZ=Asia/Shanghai
- NGINX_ENVSUBST_OUTPUT_DIR=/etc/nginx/conf.d
networks:
- mynet
zookeeper:
image: docker.io/bitnami/zookeeper:3.8
container_name: zookeeper_1
ports:
- "2181:2181"
volumes:
- /data/middleware/zookeeper_1:/bitnami/zookeeper #持久化數(shù)據(jù)
environment:
- TZ=Asia/Shanghai
- ALLOW_ANONYMOUS_LOGIN=yes
networks:
- mynet
kafka:
restart: always
image: docker.io/bitnami/kafka:3.4
container_name: kafka_1
ports:
- "9004:9004"
volumes:
- /data/middleware/kafka_1:/bitnami/kafka #持久化數(shù)據(jù)
environment:
- TZ=Asia/Shanghai - KAFKA_BROKER_ID=1
- KAFKA_CFG_LISTENERS=PLAINTEXT://:9004
- KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://192.168.1.42:9004 #替換成你自己的IP
- KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181
- ALLOW_PLAINTEXT_LISTENER=yes
depends_on:
- zookeeper
networks:
- mynet
redis.conf
port 6379 bind 0.0.0.0 requirepass xj2023 daemonize no loglevel notice logfile "" databases 16 appendonly no save 900 1 save 300 10 save 60 10000
nginx.conf
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log notice;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
}
detault.conf
server {
listen 80;
listen [::]:80;
server_name localhost;
#access_log /var/log/nginx/host.access.log main;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
總結(jié)
到此這篇關(guān)于docker中間件部署超詳細(xì)步驟的文章就介紹到這了,更多相關(guān)docker中間件部署內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
關(guān)于docker清理Overlay2占用磁盤空間的問(wèn)題(親測(cè)有效)
使用Docker過(guò)程中,長(zhǎng)時(shí)間運(yùn)行服務(wù)容器,導(dǎo)致不能進(jìn)行上傳文件等操作,今天通過(guò)本文給大家詳細(xì)介紹下docker清理Overlay2占用磁盤空間的相關(guān)知識(shí),感興趣的朋友一起看看吧2022-03-03
docker中的run/cmd/entrypoint的區(qū)別詳解
Dockerfile中run、cmd和entrypoint都能夠用于執(zhí)行命令,針對(duì)每個(gè)命令給他介紹詳細(xì)用途,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2021-08-08
使用Portainer部署Docker容器的項(xiàng)目實(shí)踐
這篇文章主要介紹了使用Portainer部署Docker容器的項(xiàng)目實(shí)踐,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-04-04
docker安裝rocketMQ和安裝過(guò)程中出現(xiàn)問(wèn)題的解決
本文主要介紹了docker安裝rocketMQ和安裝過(guò)程中出現(xiàn)問(wèn)題的解決,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-12-12
Ubuntu16.04Docker的CS模式詳細(xì)介紹
這篇文章主要介紹了Ubuntu16.04Docker的CS模式詳細(xì)介紹的相關(guān)資料,這里對(duì)Docker CS模式圖文詳細(xì)介紹,需要的朋友可以參考下2016-12-12
Docker自定義JDK鏡像并拉取至阿里云鏡像倉(cāng)庫(kù)超詳細(xì)攻略
Docker倉(cāng)庫(kù)是集中存放鏡像的地方,分為公共倉(cāng)庫(kù)和私有倉(cāng)庫(kù),這篇文章主要給大家介紹了關(guān)于Docker自定義JDK鏡像并拉取至阿里云鏡像倉(cāng)庫(kù)的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-08-08
Docker?ZooKeeper3.4.10集群安裝配置過(guò)程
這篇文章主要介紹了ZooKeeper3.4.10集群安裝配置-Docker,集群部署配置步驟,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-07-07
docker搭建Hadoop?CDH高可用集群實(shí)現(xiàn)
本文主要介紹了docker搭建Hadoop?CDH高可用集群實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07

