Centos7安装docker及mysql,rabbitmq,redis中间件

在CentOS 7上安装Docker可以按照以下步骤进行操作:

一 安装Docker

1.更新系统软件包列表:(不是非必须执行)
 sudo yum update -y
2.添加Docker的官方仓库源。创建并编辑/etc/yum.repos.d/docker-ce.repo文件
yum-config-manager     --add-repo     https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
##### 3.安装Docker引擎

sudo yum install docker-ce -y


##### 4.启动Docker服务并设置开机自启动

sudo systemctl start docker
sudo systemctl enable docker

##### 5.确认Docker已成功安装

docker --version

##### 6.配置镜像加速

进入docker配置的目录
cd /etc/docker/

创建 daemon.json

touch daemon.json

编辑这个文件

vim daemon.json

输入这些内容,其中url改成自己的加速器地址,亦可使用该地址

{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn/"]
}

注意:这个文件是个json文件,如果写入的时候,有空格什么的,会造成在重启docker服务的时候产生报错,非常的坑,一般是这个文件的格式有问题,需要特别要注意

加载配置

systemctl daemon-reload

重启docker服务

systemctl restart docker

开机启动

systemctl enable docker


### 二 安装mysql

##### 1. 创建docker file挂载目录

mkdir /home/mysql/data


##### 2.创建要挂载的mysql配置文件

touch my.cnf

<code>touch my.cnf</code>的内容为:

[mysql]

设置mysql客户端默认字符集

default-character-set=utf8

character-set-database=utf8

[client]
default-character-set=utf8

[mysqld]
datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

user=mysql

symbolic-links=0

collation_server=utf8_unicode_ci

character_set_server=utf8

skip-character-set-client-handshake

lower_case_table_names = 1

创建新表时将使用的默认存储引擎

default-storage-engine=INNODB

skip_grant_tables

sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

[mysqld_safe]

log-error=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid


##### 3. 创建容器

docker run -d -p 0.0.0.0:3307:3306 --restart=always -e MYSQL_ROOT_PASSWORD="更换为您的mysql的root密码" --name=mysql57 -v /etc/localtime:/etc/localtime -v $PWD/my.cnf:/etc/my.cnf -v $PWD/data:/var/lib/mysql mysql:5.7 --default-authentication-plugin=mysql_native_password

<code>**注意:执行上述命令,由于使用到$PWD,所以需要在服务器的 /home/mysql 这个目录下执行。这样可以挂载当前目录下的目录data和my.cnf到容器中去**</code>

##### 4.查看容器运行情况
```shell
docker ps |grep mysql

上传图片使用:复制本地图片-》ctl+alt+u 即可上传到cnblogs

img

5.进入容器执行脚本
将脚本test.sql 放到 /home/data中去

进入docker容器中执行脚本:
docker exec -it c42ec1a965d4  /bin/bash

登录容器中的mysql终端
cd /var/lib/mysql
mysql -uroot -pxxxxx

登录成功后,进行创建数据库的操作:
mysql> show databases;
mysql> use mysql go;
#创建test数据库
mysql> CREATE DATABASE `test` CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_general_ci';
# 切换到test数据库
mysql> use test;
#执行挂载进来的test.sql
mysql> source /var/lib/mysql/test.sql

回到宿主机查看数据库和文件是否存在:
cd  /home/mysql/data 
查看 test 数据库是否创建成功

img

img

6.外部程序使用数据库
通过 docker ps |grep mysql 看到公开的外部端口为3307

所以比如在springboot应用中配置就是:
spring
  #数据库配置
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driverClassName: com.mysql.cj.jdbc.Driver
    druid:
      # 主库数据源
      master:
        url: jdbc:mysql://localhost:3307/test?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
        username: root
        password: 数据库root账号密码

如果应用是通过docker发布的话,那么需要使用--link的方式来使用,比如
docker run -d -p 9080:9080 --name test_website_2.0 --link mysql57:mysql --link redis:redis -v $PWD/bannerimgs:/bannerimgs  -v $PWD/upload:/upload  test

--link mysql57:mysql 的意思是:mysql57为容器的名称,mysql 为该容器取的别名,这时使用容器联接时,spring boot的数据源配置就应该为:
spring
  #数据库配置
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driverClassName: com.mysql.cj.jdbc.Driver
    druid:
      # 主库数据源
      master:
        url: jdbc:mysql://mysql:3307/test?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
        username: root
        password: 数据库root账号密码

注意: url: jdbc:mysql://mysql:3307/test 这里的配置

三 redis容器发布

docker run -d --name redis -p 6380:6379   redis  --requirepass 123456  

注意:如果需要持久化到mysql或者文件,可以同mysql一样挂载相应的配置文件或者目录到redis容器中去

四 rabbitmq的容器发布

这里直接打了一个基础镜像的导出gzip包,链接为:
https://www.alipan.com/s/MpK56gUeHjS

下载到服务器后,比如/home/rabbitmq,执行镜像导入
docker load -i rabbitmq.gzip
docker images |grep rabbitmq

启动容器
docker run -di --name=rabbit -e RABBITMQ_DEFAULT_USER=rabbitmq  -e RABBITMQ_DEFAULT_PASS=rabbitmqpwd -p 5617:5617 -p 5672:5672 -p 4369:4369 -p 15671:15671 -p 15672:15672 -p 25672:25672 -p 15670:15670 -p 15674:15674 rabbitmq:stomp

此镜像带有management模块和stomp插件,可以进行websock开发支持

应用中使用同mysql,注意区分是直接引用,还是通过容器引用的配置的不同
posted @ 2024-02-01 22:45  不卷轮子锅  阅读(110)  评论(0编辑  收藏  举报