收起左侧

[JAVA] 使用docker安装服务

1
回复
[复制链接]

2

主题

1

回帖

145

积分

发表于 2021-3-6 10:03:15 | 显示全部楼层 |阅读模式
三、环境搭建

2、在linux上安装docker
docker是一种虚拟化容器技术,它基于镜像(自带镜像站docker hub)来启动各种容器,每一个容器都是一个完整的运行环境,容器之间相互隔离。安装步骤:1)进入docker官网,依次选择“resources”–>“Docs”–>“Get Docker”,然后按照下图所示从上往下依次点击,就进入了官方安装文档。2)根据文档,复制相应的命令到终端执行:
#卸载系统之前的docker (如果有的话)另外sudo命令是防止非root用户权限不够
sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine
                  
# 最新的官网文档和视频老版不全一样                 
sudo yum install -y yum-utils

# 配置镜像
sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
   
sudo yum install docker-ce docker-ce-cli containerd.io
# 启动docker
sudo systemctl start docker
# 设置开机自启动,以后就不用手动启动了
sudo systemctl enable docker

docker -v #查看docker版本
sudo docker images #查看docker容器的资源

# 配置镜像加速,因为docker是国外网站,所以最好从国内镜像站获取资源,
#如阿里云(https://cr.console.aliyun.com/cn-qingdao/instances/mirrors),配置命令赋值如下:
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://chqac97z.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
#安装且配置完毕3、docker安装mysql和rabbitmq1、docker安装mysql#从docker下载需要的资源,命令格式如下,冒号后面的需要和镜像站的标签一致
sudo docker pull mysql:5.7

sudo docker run -p 3306:3306 --name mysql \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7
# --name指定容器名字
#-v目录挂载
#-p指定端口映射 此处将容器的3306端口映射到主机的3306端口
#-e设置mysql参数 此处设置进入mysqlroot用户的密码为root
#-d后台运行

#开启,关闭指令
docker start mysql
docker stop mysql

设置docker容器中的服务开机自启动
语法:docker update 容器名/容器id --restart=always
docker update mysql --restart=always
在mydata/mysql/conf目录下的my.cnf加入这段配置
[client]
default-character-set = utf8

[mysql]
default-character-set = utf8

[mysqld]
init_connect=' SET collation_connection = utf8_unicode_ci'
init_connect=' SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve
2、docker安装rabbitmq1、拉取镜像
sudo docker pull rabbitmq:management

2、运行rabbitmq
docker run -d --hostname rabbitmq --name rabbitmq -v /mydata/rabbitmq/rabbitmq01:/var/lib/rabbitmq -p 15672:15672 -p 5672:5672  rabbitmq:management

3、rabbitmq的访问端口是:15672  访问地址:http://虚拟机ip:15672
4、初始密码是 guest/guest
5、设置容器自启动:docker update rabbitmq --restart=always
4、rabbitmq主从复制配置和镜像集群配置sudo docker pull rabbitmq:management


mkdir /mydata/rabbitmq
cd rabbitmq/
mkdir rabbitmq01 rabbitmq02 rabbitmq03

docker run -d --hostname rabbitmq01 --name rabbitmq01 -v /mydata/rabbitmq/rabbitmq01:/var/lib/rabbitmq -p 15673:15672 -p 5673:5672 -e RABBITMQ_ERLANG_COOKIE='ittx' rabbitmq:management


docker run -d --hostname rabbitmq02 --name rabbitmq02 -v /mydata/rabbitmq/rabbitmq02:/var/lib/rabbitmq -p 15674:15672 -p 5674:5672 -e RABBITMQ_ERLANG_COOKIE='ittx' --link rabbitmq01:rabbitmq01 rabbitmq:management

docker run -d --hostname rabbitmq03 --name rabbitmq03 -v /mydata/rabbitmq/rabbitmq03:/var/lib/rabbitmq -p 15675:15672 -p 5675:5672 -e RABBITMQ_ERLANG_COOKIE='ittx' --link rabbitmq01:rabbitmq01 --link rabbitmq02:rabbitmq02 rabbitmq:management

#主节点
docker exec -it rabbitmq01 bin/bash
rabbitmqctl stop_app
rabbitmqctl reset
rabbitmqctl start_app
exit

#第二个节点
docker exec -it rabbitmq02 bin/bash
rabbitmqctl stop_app
rabbitmqctl reset
#将第二个节点加入到主节点
rabbitmqctl join_cluster --ram rabbit@rabbitmq01
rabbitmqctl start_app
exit

#第三个节点
docker exec -it rabbitmq03 /bin/bash
rabbitmqctl stop_app
rabbitmqctl reset
#将第二个节点加入到主节点
rabbitmqctl join_cluster --ram rabbit@rabbitmq01
rabbitmqctl start_app
exit

#实现镜像集群
docker exec -it rabbitmq01 bash
#设置策略  (/  虚拟主机)  (ha 策略名称) ("^"  表示所有,配置/虚拟机下的所有队列)
            ha-mode:镜像队列提供了三种模式:

                    all:全部的节点队列都做镜像;

                    exactly:指定镜像队列的节点最高镜像数量;

                    nodes:只为指定具体节点配置镜像队列;

            ha-sync-mode :节点之前的同步模式。有自动和手动两种,默认是手动,这里设置为自动。

rabbitmqctl set_policy -p / ha "^" '{"ha-mode":"all","ha-sync-mode":"automatic"}'


0

主题

1

回帖

129

积分

发表于 2023-2-15 08:08:29 | 显示全部楼层
非常謝謝分享
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则