前言:
趁最近离职有时间,所以开始学习分布式,听大家说windows搭建docker会有很多问题,所以决定搞一个虚拟机,用linux系统来搭建。
正文:
准备工作:
1.采用vagrant简化搭建centos/7.
1.1 先下载visualBox https://www.virtualbox.org/ 版本 6.1.12
1.2 下载vagrant https://www.vagrantup.com/ 版本 2.2.9
1.3 下载visualBox 所需要的box(因为到时候下载的话很慢,提前用迅雷下载,速度快得多),复制的网址不能用,直接上图,图上标红的就是要下载的。 网址: http://www.vagrantbox.es/
问题:
1. visualBox进行安装需要cpu开启虚拟化
2.当安装完成后可以使用 vagrant -v进行测试,出现版本号即为成功。
环境搭建:
1. 搭建系统
1.1 下载的vagrant box放入vagrant中,方便初始化(下载的box必须要在当前目录下)
命令: vagrant box add centos/7(设置的名字) centos-7.0-x86_64.box(下载的.box名称)
设置完成可通过vagrant box list显示
1.2 进行初始化(这里指明box名字(centos/7),对应box list 里的box),会生成一个vagrantFile文件,用于后期配置
命令: vagrant init centos/7
1.3 创建系统,同样指明名字
命令: vagrant up
如果一切成功,可以在virualBox 里看的一台虚拟机,就是我们创建的,并且处于正在运行状态。
可以使用命令:vagrant ssh 进入系统,查看
当没有问题后,更改网络配置,虚拟机与宿主机相互ping通
更改网络配置(提前关闭系统,采用命令与手动在virualbox关闭都一样):找到创建目录下的vagrantFile文件,这里的ip是通过查看本机的分配给virualBox的地址得出,不要一样ip,尾数更换,和我一样加个0,XXX.XXX.XX.10,即可,更改完后,启动生效
其他命令:vagrant halt(关闭虚拟机),vagrant up 启动虚拟机(必须要在创建的目录下启动),vagrant reload (重启虚拟机)
2.搭建系统运行环境
2.1 安装docker(docker 相关命令都在root下,建议su root 切换成root 权限,密码为 vagran)
官方文档: https://docs.docker.com/engine/install/centos/
我实际操作(免除部分无效操作和更换地址):
2.1.1 安装所需软件包
sudo yum install -y yum-utils \device-mapper-persistent-data \lvm2
2.1.2 设置 安装软件地址(阿里云地址)
sudo yum-config-manager \--add-repo \http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
2.1.3 进行安装(一路y就行)
sudo yum install docker-ce docker-ce-cli containerd.io
2.1.4 运行docker
sudo systemctl start docker
2.1.5 可以通过查看docker info 来查看docker 是否已经安装好(如果没安装好,运行都不行的0.0,所以这一步没啥必要)
2.2 docker 配置镜像加速(可以通过阿里云容器服务里看) 阿里云地址: https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
2.2.* 大部分教程到上一步就没了,但是我实际配置过程中,配置加速后,依然不可以加速(可以通过 docker pull mysql:5.7 试试,能否下载成功),找了很多资料,最后看到需要在
vim /etc/resolv.conf
在后面添加(先双击i,进入插入模式,添加完毕后,按两次Esc键,然后:wq ,保存并退出)
nameserver 8.8.8.8
到此,再次 docker pull mysql:5.7 ,成功下载。(ps:镜像加速的网络配置在重启后就没了,再次添加或者寻找可永久添加的方法,这里就不写了)
2.3 使用docker安装 mysql
2.3.1 将端口映射出去,这样可以直接访问虚拟机IP+端口就可以同时访问docker里的mysql
# --name指定容器名字 -v目录挂载 -p指定端口映射 -e设置mysql参数 -d后台运行 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
运行成功后,可以通过docker ps来查看所有正在运行的容器
可以通过my.conf 设置一下格式
vi /mydata/mysql/conf/my.conf [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.3.2 设置完成后,还并不可以通过宿主机navicet 连接,还需要设置可远程访问。
2.3.3
mysql 设置远程连接
iptables 开启端口映射:
iptables -A INPUT -p tcp --dport 3306 -j ACCEPT iptables -A OUTPUT -p tcp --dport 3306 -j ACCEPT iptables -L -n (查看端口是否启用)
进入mysq:
docker exec -it mysql1 mysql -uroot -p root
进入mysql数据库:
use mysql
修改root访问权限(先查看是否只有一个root,如果有两个root角色就会报错)
update user set host = ‘%‘ where user = ‘root‘;
flush privileges; 刷新权限
重启docker和mysql:
systemctl restart docker和docker start mysql
至此,连接成功。