1.安装centOS7
- 下载安装VMwarea
https://www.jianshu.com/p/552179808ebf - 下载CentOS7
http://mirror.bit.edu.cn/centos/7.6.1810/isos/x86_64/CentOS-7-x86_64-DVD-1810.iso
- 安装CentOS7
https://blog.csdn.net/babyxue/article/details/80970526
- 开启ssh服务 为了使用远程连接工具例如xshell、SecureFX 8.1、SecureCRT 8.1
①.查看是否有SSH安装
注:若为非root用户登录,输入执行某些命权限不够时需加sudo
rpm -qa | grep ssh
②.若没有则安装
yum install openssh-server
③.开放22端口
在ssh配置文件里进行配置 :
vim /etc/ssh/sshd_config
用esc+:wq 保存退出
③.开启ssh服务
/bin/systemctl start sshd.service
④.检查ssh服务是否开启
ps -e | grep sshd
⑤.检查22端口是否开启
netstat -anpt | grep 22
注意:若提示没有netstat 命令则 使用:yum install net-tools 进行安装
参考文章:https://blog.csdn.net/ASN_forever/article/details/80931799
- 设置ssh开启自启动
systemctl enable sshd.service
或chkconfig sshd on
- 关闭防火墙(为了使用远程工具连接)
查看防火墙状态
firewall-cmd --state
停止firewall
systemctl stop firewalld.service
禁止firewall开机启动
systemctl disable firewalld.service
参考:https://blog.csdn.net/ytangdigl/article/details/79796961
- 关闭selinux (为了使用远程工具连接)
进入到/etc/selinux/config文件
vi /etc/selinux/config
将SELINUX=enforcing改为SELINUX=disabled
- 使用SecureCRT 远程连接(待完成)
参考:
https://blog.csdn.net/u011781521/article/details/53846536
https://blog.csdn.net/qq_38880651/article/details/82460600
https://blog.csdn.net/heshengfu1211/article/details/87828523
2.安装docker
Docker 要求 CentOS 系统的内核版本高于 3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持 Docker 。
- 通过 uname -r 命令查看你当前的内核版本
uname -r
- 使用 root 权限登录 Centos。确保 yum 包更新到最新。
sudo yum update
- [可选]卸载旧版本(如果安装过旧版本的话)
# 查看是否安装docker
docker vesion
#删除
sudo yum remove docker docker-common docker-selinux docker-engine
- 安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
- 设置yum源
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
- 可以查看所有仓库中所有docker版本,并选择特定版本安装
yum list docker-ce --showduplicates | sort -r
- 安装docker
sudo yum install docker-ce #由于repo中默认只开启stable仓库,故这里安装的是
最新稳定版20.10.7-3.e17 或指定安装版本:sudo yum install <FQPN>
# 例如:sudo yum install docker-ce-20.10.7-3.e17
(格式:第一行的docker-ce 加 - 加第二行从冒号开始至结尾)
- 启动并加入开机启动
sudo systemctl start docker #启动
sudo systemctl enable docker #开机启动
- 验证安装是否成功(有client和service两部分表示docker安装启动都成功了)
docker version
参考:https://blog.csdn.net/lu1171901273/article/details/94217503
3.安装mysql
- 搜索docker镜像中的mysql(可以看到搜索的结果,这个结果是按照一定的星级评价规则排序的)
docker search mysql
- 拉取docker的mysql镜像(如果想指定版本号,需要到https://hub.docker.com/_/mysql?tab=tags查看版本号)
docker pull mysql:8.0.25
- docker容器运行mysql实例
docker run -d --name mysql8 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root mysql:8.0.25
参数说明:
-d 表示容器在后台运行
-p 3306:3306:将容器的3306端口映射到主机的3306端口;
-e MYSQL_ROOT_PASSWORD=root:初始化root用户的密码;
--name 给容器命名,mysql8
注意事项:-d 后面是mysql镜像,一定要指定镜像版本号,也就是拉取的镜像版本
- 【可选】如果还是不能连接,是局域网的问题,可以直接进入实例操作
grant all privileges on *.* to root@"%" identified by "root" with grant option;
- 进入mysql 容器实例
docker exec -it mysql8 /bin/bash
- 登录mysql验证是否安装成功
mysql -u root -p
- 开启mysql远程访问权限
命令:use mysql;
命令:select host,user from user;
命令:ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
命令:flush privileges;
-
挂载外部配置和数据安装(容器可以共享宿主主机的东西)
-
创建目录和配置文件my.cnf
创建外部挂载目录
mkdir /docker
mkdir /docker/mysql
mkdir /docker/mysql/conf
mkdir /docker/mysql/data
创建my.cnf配置文件
touch /docker/mysql/conf/my.cnf
my.cnf添加如下内容:
[mysqld]
# 设置3306端口
port=3306
# 设置mysql数据库的数据的存放目录
datadir=/docker/mysql/data
# 允许最大连接数
max_connections=200
# 允许连接失败的次数。
max_connect_errors=20
# 服务端使用的字符集默认为utf8mb4
character-set-server=utf8mb4
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证
#mysql_native_password
default_authentication_plugin=mysql_native_password
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8mb4
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8mb4
- 创建容器,并后台启动
①.由于刚刚安装的mysql并运行登录,我们只是用来验证成功,还没挂载。
但我这里使用的是同一个容器,已经存在了。所以要先将存在的容器停止并删除。
查看所有容器,包括停止的:
docker ps -a
将容器退出:
docker stop [NAME]/[CONTAINER ID] 例如:docker stop se34fds50fsf
不能够删除一个正在运行的容器,会报错。需要先停止容器:
docker rm [NAME]/[CONTAINER ID] 例如:docker rm se34fds50fsf
②.创建容器,并后台启动(这个是使用挂载外部文件的容器)
docker run -d -p 3306:3306 --privileged=true -v /docker/mysql/conf:/etc/mysql/conf.d -v /docker/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root --name mysql8 mysql:8.0.25
参数说明:
--privileged=true:容器内的root拥有真正root权限,否则容器内root只是外部普通用户权限
-v /docker/mysql/conf/my.cnf:/etc/my.cnf:将主机/docker/mysql/conf/my.cnf文件挂载到容器的/etc/my.cnf的文件
-v /docker/mysql/data:/var/lib/mysql:将主机/docker/mysql/data目录挂载到容器的/var/lib/mysql目录
注:/etc/mysql/conf.d目录为mysql8默认配置文件读取目录,/var/lib/mysql为mysql数据 默认存在目录
- 参考文章:
https://blog.csdn.net/woniu211111/article/details/80968154
https://blog.csdn.net/lu1171901273/article/details/94217503
https://blog.csdn.net/qq_42402854/article/details/108746572
4.安装clickHouse
- 下载docker clickhouse包
# clickhouse 客户端(可选安装)
sudo docker pull yandex/clickhouse-client
#clickhouse 服务器端
sudo docker pull yandex/clickhouse-server
- docker运行clickhouse 实例
docker run -d --name ck-server -p 8123:8123 -p 9000:9000 -p 9009:9009 yandex/clickhouse-server:latest
参数说明:
ck默认启动的三个端口:
9000端口,用于接受客户端请求
9009端口,用于集群复制数据
8123端口,http请求端口
- 进入clickhouse容器
docker exec -it ck-server /bin/bash
- 客户端连接
clickhouse-client -h 127.0.0.1 -d default -m -u default --password
参数说明:
--host, -h -– 服务端的host名称, 默认是localhost。您可以选择使用host名称或者IPv4或IPv6地址。
--port – 连接的端口,默认值:9000。注意HTTP接口以及TCP原生接口使用的是不同端口。
--user, -u – 用户名。 默认值:default。
--password – 密码。 默认值:空字符串。
参数参考官网:
https://clickhouse.tech/docs/zh/interfaces/cli/#command-line-options
- 查看所有的数据库
show databases
- clickhouse的目录结构
clickhouse的目录结构
1./etc/clickhouse-server:
服务端的配置文件目录,包括全局配置 config.xml 和用户配置 users.xml
2./var/lib/clickhouse:
默认的数据存储目录,如果是生产环境可以将其修改到空间较大的磁盘挂载路径。
可以通过修改/etc/clickhouse-server/config.xml 配置文件中
<tmp_path> 和<user_files_path> 标签值来设置。
3./var/log/clickhouse-server:
默认的日志保存目录。
同样可以通过修改/etc/clickhouse-server/config.xml 配置文件中
<tmp_path> 和<user_files_path> 标签值来设置。
4./etc/cron.d/clickhouse-server:
clickhouse server 的一个定时配置,用于恢复因异常中断的ClickHouse 服务进程。
5.~/.clickhouse-client-history (隐藏文件) 所有通过交互式命令行执行的sql历史记录。
可使用 ll -a ~ 命令查看
- 设置clickhouse 远程访问
回到宿主主机中,将clickhouse 容器中的配置文件拷贝到宿主主机指定的目录中
# 将ck-server容器中的/etc/clickhouse-server/下的config.xml和user.xml复制到宿主主机的/docker/clickHouse/clickhouse-server/下
docker cp ck-server:/etc/clickhouse-server/config.xml /docker/clickHouse/clickhouse-server/
docker cp ck-server:/etc/clickhouse-server/users.xml /docker/clickHouse/clickhouse-server/
-
配置容器映射的本地ip地址
到/docker/clickHouse/clickhouse-server/下找到config.xml文件并去掉
<listen_host>::</listen_host>的注释
-
新增用户名和密码
复制/docker/clickHouse/clickhouse-server/clickhouse-server/users.xml文件下< users >标签下的< default >开始到结尾的内容,生成自己的用户名。
参考文章:https://segmentfault.com/a/1190000021512811 -
创建容器,并后台启动(与mysql 类似)
docker run -d --name ck-server -p 8123:8123 -p 9000:9000 -p 9009:9009 -v /docker/clickHouse/clickhouse-server/clickhouse-server/config.xml:/etc/clickhouse-server/config.xml -v /docker/clickHouse/clickhouse-server/clickhouse-server/users.xml:/etc/clickhouse-server/users.xml yandex/clickhouse-server:latest
- 进入容器
docker exec -it ck-server /bin/bash
clickhouse-client -h 127.0.0.1 -d default -m -u root --password