ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

docker安装jdk+nacos+mysql+redis+rabbitmq+RocketMq等三十多种常用容器,并部署/集成jenkins自动化部署jar包项目

docker安装jdk+nacos+mysql+redis+rabbitmq+RocketMq等三十多种常用容器,并部署/集成jenkins自动化部署jar包项目 目录1.Docker安装1.1docker概念1.2安装1.3卸载docker1.4docker命令1.5设置时区2.nacos安装3.mysql安装4.Redis安装5.Rabbitmq安装5.1安装5.2安装RabbitMQ延迟消息插件5.4RabbitMq集群6.RocketMq安装7.springboot项目部署8.jenkins自动化部署docker9.nginx做服务器安装9.nginx前端项目制作容器10.后端项目制作容器11.hbase安装12.minio安装13.达梦DM814.mqtt1.Docker安装1.1docker概念离线安装docker包 Index of linux/static/stable/x86_64/docker 的三个概念:仓库仓库就类比于github仓库上面存储着各种各样版本的软件Docker Hub镜像我们从docker上拉取一个软件初始就是个镜像容器容器就是镜像运行时可以用的软件1.2安装官网安装地址 Install Docker Engine on CentOS | Docker Documentation注本篇为Centos7安装Docker若为其他系统请理性参考 1.查看是否已安装 docker --version 2.更新你的包列表 sudo yum update 3.若没有yum命令安装yum,有的话直接跳过 yum install -y yum-utils \ device-mapper-persistent-data \ lvm2 --skip-broken 4.安装必要的包这些包可以让yum使用HTTPS sudo yum install -y yum-utils device-mapper-persistent-data lvm2 5.添加Docker的存储库 sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 6.安装Docker sudo yum install docker-ce 7.启动Docker服务 sudo systemctl start docker sudo systemctl stop docker sudo systemctl status docker 8.设置Docker服务开机自启 sudo systemctl enable docker通过修改daemon配置文件/etc/docker/daemon.json来使用加速器 sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json -EOF { registry-mirrors: [https://123.mirror.aliyuncs.com] } EOF 2. vim /etc/docker/daemon.json 内容如下 { max-concurrent-downloads: 10, max-concurrent-uploads: 5, default-shm-size: 1G, debug: true, experimental: false, registry-mirrors: [ https://dockerproxy.net, https://3cvqd94394.mirror.aliyuncs.com, https://registry.docker-cn.com, https://0fivaqt3.mirror.aliyuncs.com, https://hub.appifa.com, https://dockerproxy.com, https://docker.mirrors.ustc.edu.cn, https://docker.nju.edu.cn ], dns: [114.114.114.114,8.8.8.8,8.8.4.4] } sudo systemctl daemon-reload sudo systemctl restart docker2.要继续配置一下阿里云镜像加速,按如下步骤完成即可.可忽略不配置步骤2是写配置文件1. mkdir -p /etc/docker2. vim /etc/docker/daemon.json3. systemctl daemon-reload4. systemctl restart docker步骤2的配置文件格式{ registry-mirrors: [https://自已的编码.mirror.aliyuncs.com] }自己的编码如何查看,网址: https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors​6.启动并加入开机启动#重新加载配置文件 systemctl daemon-reload #启动Docker systemctl start docker systemctl stop docker systemctl restart docker #设置开机自启动 systemctl enable docker systemctl enable docker.service systemctl disable docker #查看docker启动状态 systemctl status docker #查看docker信息 docker info7.验证安装是否成功(有client和service两部分表示docker安装启动都成功了)docker version1.3卸载docker1.卸载旧版本(如果安装过旧版本的话)sudo yum remove docker docker-common docker-selinux docker-engine2.删除安装包yum remove docker-ce3.删除镜像、容器、配置文件等内容rm -rf /var/lib/docker1.4docker命令#查找镜像 docker search mysql #拉去最新版本 docker pull mysql #拉去指定版本 docker pull mysql:5.7 # 查看镜像 docker images #docker容器在宿主机目录 cd /var/lib/docker/containers #查看容器配置 docker inspect 容器ID # 查看正在运行容器 docker ps # 查看全部容器 docker ps -a # 查看容器的实时日志 docker logs -f 容器id(容器名称) | docker logs -f --tail 500 容器id(容器名称) # 使用 inspect 命令查看镜像详细信息 docker inspect 容器id(容器名称) # 访问url curl localhost:8080 # 查看端口使用情况 netstat -ntlp # 进入容器 docker exec -it 容器id(容器名称) /bin/bash # 退出容器 exit # 停止容器 docker stop 容器id(容器名称) # 启动容器 docker start 容器id(容器名称) # 重启容器 docker restart 容器id(容器名称) # 删除容器(删除容器前得停止容器) docker rm -f 容器id(容器名称) # 删除镜像(删除镜像前得删除容器) docker rmi -f 镜像id(镜像名称) #docker build制作镜像,一般用于springboot项目发布,或者自定义镜像 docker build -t param1 . #param1 镜像名称 , . 当前目录 或者 /root/demo/ 指定目录 #docker run参数设置 docker run -d -p 8080:8080 -v /home/demo/:/mnt/demo/ --add-host redis_host:192.168.0.1 --restartalways --name param1 param2 -d 内部运行 -p 宿主机映射端口:容器内部端口 --name param1容器名称 param2镜像名称 -v 表示需要将宿主机哪个目录挂载到容器中格式-v 宿主机(Linux)目录:容器目录 --restartalways 在运行docker容器时可以加如下参数来保证每次docker服务重启后容器也自动重启 如果docker容器已经启动了则可以使用如下命令 docker update 容器id(容器名称) --restartalways --hostname param 指定主机名称,该名称在集群的名称中使用 --add-host redis_host:192.168.0.1 等于 vi /etc/hosts1.5设置时区1.在容器中创建文件(一般可以省略) mkdir -p /usr/share/zoneinfo/Asia 2.回到宿主机复制宿主机里的文件到容器中 docker cp /usr/share/zoneinfo/Asia/Shanghai 容器ID或容器名:/usr/share/zoneinfo/Asia 3.软连接设置时区为上海 ln -fs /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 4.重启容器2.nacos安装#搜索Nacos镜像 docker search nacos/nacos-server #拉取Nacos镜像 docker pull nacos/nacos-server:2.2.2 #创建Nacos容器 并 连接mysql数据库 docker run -d -p 8848:8848 -p 9848:9848 -p 9849:9849 -p 7848:7848 \ -e MODEstandalone \ -e SPRING_DATASOURCE_PLATFORMmysql \ -e MYSQL_SERVICE_HOST192.168.0.1 \ -e MYSQL_SERVICE_PORT3306 \ -e MYSQL_SERVICE_USERroot \ -e MYSQL_SERVICE_PASSWORD123456\ -e MYSQL_SERVICE_DB_NAMEnacos \ #-e NACOS_APPLICATION_PORT8848 \#这是自定义端口,如果修改,对应的-p也需要修改,最好采用默认 --restartalways \ --name nacos \ nacos/nacos-server:2.2.2 #进入Nacos容器 docker exec -it nacos /bin/bash # 查看日志是否运行正常 docker logs -f nacos #访问:通过 ip:8848/nacos 访问登录密码默认nacos/nacos3.mysql安装# 查看docker仓库中的mysql docker search mysql # 选定需要pull到本地系统中的镜像版本 docker pull mysql:5.7 #或者不选版本号,直接拉取最新的版本 docker pull mysql #运行mysql开放的端口是3306密码是123456 -d是后台运行 ,容器ID/名称是mysql #-p 3306:3306将容器的3306端口映射到宿主机的3306端口 #-e MYSQL_ROOT_PASSWORDroot初始化root用户的密码 #挂载数据到宿主机 mkdir -p /home/mysql/data /home/mysql/logs /home/mysql/conf cd /home/mysql/conf touch my.cnf docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD123456 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/logs:/logs -v /home/mysql/data:/var/lib/mysql --restartalways --name mysql mysql:5.7 #查看容器是否运行 docker ps #进入容器 docker exec -it mysql /bin/bash #登录mysql mysql -h localhost -u root -p 或者 mysql -uroot -p123456 接着输入密码root 登录成功后即为安装成功了 #使用Navicat连接问题1如果部署在云服务器则需要配置防火墙安全组问题2若远程Navicat连接不上数据库可以尝试设置mysql远程权限# 进入容器 docker exec -it mysql /bin/bash#登录mysql执行如下命令​# 设置mysql远程权限 ALTER USER root% IDENTIFIED WITH mysql_native_password BY 密码123456; # 刷新权限 flush privileges;如果docker pull mysql:8.0.22 版本错误 ERROR 1524 (HY000): Plugin mysql_native_password is not loaded 表示 MySQL 中没有加载或支持 mysql_native_password 插件。 从 MySQL 8.0 开始mysql_native_password 插件已经被弃用默认采用caching_sha2_password 解决方法 如果你必须使用 mysql_native_password 插件可以尝试以下方法 方法 1: 使用 caching_sha2_password 插件 你可以使用默认的 caching_sha2_password 插件来设置密码而不使用 mysql_native_password ALTER USER root% IDENTIFIED WITH caching_sha2_password BY 123456; 方法 2: 启用 mysql_native_password 插件不推荐 如果你确实需要使用 mysql_native_password 插件你可以手动启用它虽然这不建议在最新版本中使用。可以通过修改 MySQL 配置文件来加载该插件 编辑 MySQL 配置文件通常在 /etc/mysql/my.cnf 或 /etc/my.cnf。 在 [mysqld] 部分添加以下行以启用 mysql_native_password 插件 default_authentication_pluginmysql_native_password 然后重启服务 再次执行下面得修改语句 ALTER USER root% IDENTIFIED WITH mysql_native_password BY root;如果docker pull mysql:8.4.x版本在8.4以后得版本default_authentication_plugin配置已经不生效了 [mysqld] default_authentication_pluginmysql_native_password 替换成 mysql_native_passwordON 或者在docker run 命令 加入 --mysql_native_passwordON4.Redis安装# 查看docker仓库中的redis docker search redis # pull最新版本redis镜像 docker pull redis:latest # 查看镜像是否已安装 docker images # 运行名为redis的容器并配置密码 docker run -itd -p 6379:6379 --restartalways --name redis redis --requirepass 123456 mkdir -p /usr/local/redis mkdir -p /usr/local/redis/data #修改redis.conf放入/usr/local/redis #注释掉这句 #bind 127.0.0.1 #开启远程连接 protected-mode no #设置访问密码位置大概在901行 requirepass 123456 docker run -d -p 6379:6379 --restartalways -v /usr/local/redis/redis.conf:/etc/redis/redis.conf -v /usr/local/redis/data:/data --name redis redis redis /etc/redis/redis.conf --appendonly yes #查看容易是否运行 dokcer ps # 查看日志是否运行正常 docker logs -f redis5.Rabbitmq安装5.1安装#查询rabbitmq镜像 docker search rabbitmq #选择第一个official的官方版本下载使用,不加后面的版本号就会下载最新的镜像 docker pull rabbitmq:3.10.0 或者 docker pull rabbitmq #查看下载的镜像 docker images #运行mq , -p 宿主机映射端口:docker的内部端口 docker run -d -p 15672:15672 -p 5672:5672 --restartalways --hostname myRrabbit --name rabbitmq rabbitmq #查看容器 docker ps -a #进入容器内部 docker exec -it 容器id /bin/bash #进入容器内部运行下面命令,这是安装rabbitmq的web界面插件 rabbitmq-plugins enable rabbitmq_management #exit退出容器内部 #http://linuxip:15672访问web界面,这里的用户名和密码默认都是guest #如果不能访问,设置防火墙安全组上诉步骤需要进入容器内部安装web界面插件建议采用下面的方式#查询rabbitmq镜像 docker search rabbitmq #下载rabbitmq的Web管理插件 docker pull rabbitmq:management 或者 docker pull rabbitmq:management #查看下载的镜像 docker images #运行mq docker run -d -p 4369:4369 -p 5671:5671 -p 5672:5672 -p 15671:15671 -p 25672:25672 -p 15672:15672 --restartalways --hostname myRabbit -e RABBITMQ_DEFAULT_VHOSTmy_vhost -e RABBITMQ_DEFAULT_USERadmin -e RABBITMQ_DEFAULT_PASSadmin --name rabbitmq rabbitmq:management --privilegedtrue #--hostname 指定容器主机名称,RabbitMQ的hostname 最好指定。Rabbit MQ的有一个重要的注意事项是它根据节点名称来存储数据默认就是主机名、而上面说道hostname就是集群中的节点名称。如果不指定hostname那么docker在启动的时候会自动生成hostname如此一来可能每次生成的hostname都不一样那么就会导致数据丢失。 #-e 指定环境变量 #RABBITMQ_DEFAULT_VHOST默认虚拟机名/ #RABBITMQ_DEFAULT_USER默认的用户名 #RABBITMQ_DEFAULT_PASS默认用户名的密码 #--privilegedtrue给容器加上特定权限 #--name rabbitmq rabbitmq:management安装rabbitmq的Web管理插件 #说明 用户是需要与Virtual Hosts绑定的也就是这里的my_vhost与admin绑定,具体可到mqweb界面的admin菜单下查看 #查看容器 docker ps -a docker logs rabbitmq 查看日志 #进入容器内部 docker exec -it 容器id /bin/bash #exit退出容器内部 #http://linuxip:15672访问web界面,这里的用户名和密码默认都是admin5.2安装RabbitMQ延迟消息插件rabbitmq_delayed_message_exchange 安装首先我们需要下载 rabbitmq_delayed_message_exchange 插件这是一个 GitHub 上的开源项目我们直接下载即可https://github.com/rabbitmq/rabbitmq-delayed-message-exchange/releases下载完成后执行如下命令将下载文件拷贝到 Docker 容器中去#或者直接 wget https://github.com/rabbitmq/rabbitmq-delayed-message-exchange/releases/download/v3.10.0/rabbitmq_delayed_message_exchange-3.10.0.ez #拷贝到容器 #docker cp ./宿主机文件目录 容器ID:/容器内目录 docker cp ./rabbitmq_delayed_message_exchange-3.10.0.ez rabbitmq:/plugins #进入到容器 docker exec -it rabbitmq /bin/bash #查看插件列表 rabbitmq-plugins list #执行如下命令启用插件 rabbitmq-plugins enable rabbitmq_delayed_message_exchange5.3集群中采用自定义镜像安装延迟消息插件不可能一台一台的上诉这样操作忽略忽略,验证中#rabbitmq_delayed_message_exchange-3.10.0.ez文件与Dockerfile同一目录 #编写Dockerfile脚本 FROM rabbitmq:3.10.0-management COPY rabbitmq_delayed_message_exchange-3.10.0.ez /plugins RUN rabbitmq-plugins enable --offline rabbitmq_delayed_message_exchange #执行 docker build -t my-rabbitmq:3.10.0-management . docker run --name myrabbitmq my-rabbitmq:3.10.0-management5.4RabbitMq集群Docker 安装 RabbitmQ 集群_晨一更的博客-CSDN博客6.RocketMq安装7.springboot项目部署8.jenkins自动化部署dockerJenkins自动化部署实现原理及部署到SSH与Docker_晨一更的博客-CSDN博客9.nginx做服务器安装所有项目都部署在一个nginx容器中使用docker中nginx做服务器 ip:192.168.0.100 宿主机80已经被宿主机nginx占用所以用49000映射容器80端口 如果宿主机80端口没被占用则映射端口改成80:80 1.创建文件 mkdir -p /www/docker/nginx/conf/conf.d mkdir -p /www/docker/nginx/html 2.创建容器 docker run -d -p 49000:80 --restartalways --name nginx nginx:latest 3.拷贝文件到宿主机 docker cp nginx:/etc/nginx/conf.d /www/docker/nginx/conf/conf.d docker cp nginx:/etc/nginx/nginx.conf /www/docker/nginx/conf/nginx.conf docker cp nginx:/usr/share/nginx/html /www/docker/nginx/html 4.删除容器 docker rm -f nginx 5.创建容器(如果直接执行这个命令或导致文件被宿主机覆盖容器内部对应目录文件为空启动不了) docker run -d -p 49000:80 -v /www/docker/nginx/conf/conf.d:/etc/nginx/conf.d -v /www/docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /www/docker/nginx/html:/usr/share/nginx/html --restartalways --name nginx nginx:latest 6.访问,可以看到nginx服务器部署成功 192.168.0.100:49000 或者 192.168.0.100:802.部署项目1.域名配置 cd /www/docker/nginx/conf/conf.d copy default.conf docker-test.conf vi docker-test.conf server { listen 80; listen [::]:80; server_name docker-test.abc.com; #access_log /var/log/nginx/host.access.log main; location / { root /usr/share/nginx/html/docker-test/dist; index index.html index.htm; try_files $uri $uri/ /index.html; } location /prod-api/ { client_body_timeout 1800s; proxy_read_timeout 1800s; keepalive_timeout 1800s; proxy_pass http://192.1698.0.100:48200/; } error_page 500 502 503 504 /50x.html; location /50x.html { root /usr/share/nginx/html; } } 2.代码拷贝到 cd /www/docker/nginx/html/docker-test/dist 3.访问地址(记得重启容器) docker-test.abc.com:49000 或者 docker-test.abc.com:80 看映射端口 4.这样可以部署多个项目采用不同域名访问使docker中得nginx作为服务器思考如果用上诉方式部署多个项目不使用域名采用端口方式那是不是创建映射端口得时候 是不是要映射多个端口【应该是得】所以这种方式费时费力看第九条实际使用方式9.nginx前端项目制作容器每个项目部署一个nginx容器文件存放在一个目录cd /www/docker/nginx/admin1.default.conf内容 server { listen 80; server_name localhost; client_max_body_size 60m; proxy_http_version 1.1; location / { alias /usr/share/nginx/html/; try_files $uri /index.html; } location /index.html { index index.html; root /usr/share/nginx/html; } } 2.dockerfile内容 FROM nginx:latest copy default.conf /etc/nginx/conf.d/default.conf copy dist/ /usr/share/nginx/html/ 3.DockerStart.sh内容 docker rm -f admin-nginx docker rmi -f admin-nginx docker build -t admin-nginx. docker run -d -p 8081:80 --restartalways --name admin-nginx admin-nginx 4.执行DockerStart.sh ./DockerStart.sh 5.访问 ip:8081 6.宿主机nginx配置代理采用域名访问10.后端项目制作容器11.hbase安装1.拉取镜像 docker pull harisekhon/hbase docker pull harisekhon/hbase:2.1.3 2.启动 docker run -d -h hbase -p 2181:2181 -p 8080:8080 -p 8085:8085 -p 9090:9090 -p 9000:9000 -p 9095:9095 -p 16000:16000 -p 16010:16010 -p 16020:16020 -p 16201:16201 -p 16301:16301 --restartalways --name hbase harisekhon/hbase:2.1.3 3.访问 开通端口16000 16010 16020 2181 9000 http://IP:16010 4.linux或者window配置hosts 192.168.0.1 hbase12.minio安装1.下载镜像 docker pull minio/minio 2.创建目录 mkdir -p /www/docker/minio/data mkdir -p /www/docker/minio/config 3.1.运行容器 docker run \ -p 19000:9000 \ -p 19001:9001 \ -d --restartalways \ -e MINIO_ROOT_USERadmin \ -e MINIO_ROOT_PASSWORDadmin123 \ -v /www/docker/minio/data:/data \ -v /www/docker/minio/config:/root/.minio \ --name minio minio/minio \ server /data --console-address :9001 -address :9000 3.2运行容器 docker run \ -p 19000:9000 \ -p 19001:9001 \ -d --restartalways \ -e MINIO_ROOT_USERadmin \ -e MINIO_ROOT_PASSWORDadmin123 \ -e MINIO_ACCESS_KEYtest \ -e MINIO_SECRET_KEYtest123 \ -v /www/docker/minio/data:/data \ -v /www/docker/minio/config:/root/.minio \ --name minio minio/minio \ server /data --console-address :9001 -address :9000 说明 1.MINIO_ROOT_USER MINIO_ROOT_PASSWORD 管理员账户密码 2.MINIO_ACCESS_KEY MINIO_SECRET_KEY 用户账户密码 3.容器内部端口为9000 9001 映射宿主机的19000 19001 4.server /data --console-address “:9001” -address “:9000” 这是容器内要运行的命令启动一个名为 “minio” 的服务器数据存储在 /data 目录下服务器的控制台地址为 “:9001”服务地址为 “:9000” 4.访问 ip:19001 ip:9000 为API地址13.达梦DM8下载(网络上找的地址): https://pan.baidu.com/s/1SsQK7mlJjSlkTLFBZOFsKg 提取码: d83h unzip dm8_20240715_x86_rh6_rq_single.tar.zip 1.加载DM8镜像 docker load -i dm8_20240715_x86_rh6_rq_single.tar 2.启动命令 docker run -dit \ -p 5236:5236 \ --restartalways \ --name dm8 \ --privilegedtrue \ -e PAGE_SIZE16 \ -e LD_LIBRARY_PATH/opt/dmdbms/bin \ -e EXTENT_SIZE32 \ -e BLANK_PAD_MODE1 \ -e LOG_SIZE1024 \ -e UNICODE_FLAG1 \ -e LENGTH_IN_CHAR1 \ -e CASE_SENSITIVE0 \ -e INSTANCE_NAMEdm8_smartadmin \ -v /docker/dm8/data:/opt/dmdbms/data \ dm8_single:dm8_20240715_rev232765_x86_rh6_64 3.说明 端口 5236 容器名字 dm8 不开启大小写敏感-e CASE_SENSITIVE0 数据映射目录/docker/dm8/data 字符集utf8 -e UNICODE_FLAG1 实例名称 -e INSTANCE_NAMEdm8_smartadmin 4.账号密码 Docker 镜像中数据库默认用户名/密码为 SYSDBA/SYSDBA00114.mqtt安装emqx服务端 https://docs.emqx.com/zh/emqx/v4.4/getting-started/install.html docker pull emqx/emqx:latest docker run -d --name emqx -p 1883:1883 -p 8081:8081 -p 8083:8083 -p 8084:8084 -p 8883:8883 -p 18083:18083 emqx/emqx:latest docker pull emqx/emqx:4.4.19 docker run -d --name emqx -p 1883:1883 -p 8081:8081 -p 8083:8083 -p 8883:8883 -p 8084:8084 -p 18083:18083 emqx/emqx:4.4.19 host模式 docker run -itd --name emqx --networkhost --restartalways -e EMQX_NODE__COOKIEcom.linux.utunbu.docker.emqx emqx/emqx:4.4.19 开放端口:1883 8083 18083 查看 Dashboard 管理控制台 http://localhost:18083 admin/public15.influxdbhttps://github.com/influxdata/influxdb/ 启动一个 InfluxDB 2.x 容器 docker run -d \ --name influxdb2 \ -p 8086:8086 \ --restart always \ -v /opt/dockermx/influxdb/data:/var/lib/influxdb2 \ -e DOCKER_INFLUXDB_INIT_MODEsetup \ -e DOCKER_INFLUXDB_INIT_USERNAMEadmin \ -e DOCKER_INFLUXDB_INIT_PASSWORDadmin \ -e DOCKER_INFLUXDB_INIT_ORGmy-org \ -e DOCKER_INFLUXDB_INIT_BUCKETdrone-db \ -e DOCKER_INFLUXDB_INIT_ADMIN_TOKENmy-super-secret-token \ influxdb:2.7 关键参数说明 -v /opt/influxdb/data:/var/lib/influxdb2将数据持久化到宿主机防止容器删除后数据丢失。 DOCKER_INFLUXDB_INIT_MODEsetup指示容器自动运行初始化流程。 DOCKER_INFLUXDB_INIT_ORG 和 DOCKER_INFLUXDB_INIT_BUCKET自动创建组织和数据桶。 DOCKER_INFLUXDB_INIT_ADMIN_TOKEN为操作员设置一个固定的 Token方便后续使用 Web UI访问地址http://你的服务器IP:8086 Java 客户端使用案例 (influxdb-client-java)【实现influxdb2 】 dependency groupIdcom.influxdb/groupId artifactIdinfluxdb-client-java/artifactId version6.10.0/version !-- 建议使用最新稳定版 -- /dependency
返回列表