目录
说明:使用Docker安装MySQL和RabbitMQ,主要是为了学习Docker的使用。(使用的是阿里云服务器)
说明:使用Docker安装MySQL和RabbitMQ,主要是为了学习Docker的使用。(使用的是阿里云服务器)
一、安装Docker
1、安装yum-utils
说明:管理repository及扩展包的工具 (主要是针对repository)
yum install -y yum-utils device-mapper-persistent-data lvm2
2、为yum源添加docker仓库位置
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
3、查看仓库中docker版本,并选择安装
yum list docker-ce --showduplicates | sort -r
4、开始安装docker
# 默认安装稳定版本:
yum install docker-ce
# 指定版本(这个能安装成功):
yum -y install docker-ce-18.03.1.ce
5、查看版本
docker version
6、配置及启动docker
# 设置开机启动:
chkconfig docker on
# 人工启动docker:
service docker start
# 启动、停止、重启容器中的中间件的命令
docker start container_name/container_id
docker stop container_name/container_id
docker restart container_name/container_id
# 如下示例
docker start mysql/5623583a75c9
7、安装各类中间件
https://www.jianshu.com/p/97109cb4a6ea
8、常用命令
# 1. 拉取docker 镜像:docker pull image_name
docker pull redis:3.0.7、docker pull rabbitmq:3.7.15
# 2. 删除镜像
docker rmi docker.io/tomcat:7.0.77-jre7 或者 docker rmi b39c68b7af30 (b39c68b7af30 指container_id)
# 如果报错则执行,下列命令
docker ps -a | grep "Exited" | awk '{print $1 }'|xargs docker stop
docker ps -a | grep "Exited" | awk '{print $1 }'|xargs docker rm
docker images|grep none|awk '{print $3 }'|xargs docker rmi
docker rmi <image id> (<image id>通过 docker images 命令获取)
# 3. 普通命令
① 查看当前有哪些容器正在运行:docker ps
② 查看所有容器:docker ps -a
③ 删除容器的命令:docker rm container_name/container_id
④ 删除所有停止的容器:docker rm $(docker ps -a -q)
⑤ 查找Docker Hub上的nginx镜像:docker search nginx
# 4. 进入docker的容器时,发现命令不存在,则安装
① 如果vim命令不存在时,则安装
apt-get update
apt-get install vim
② 进入vim ~/.bashrc可以增加别名
alias ll = 'ls $LS_OPTIONS -l'
二、Docker拉取MySQL镜像
1、拉取mysql5.7的镜像
docker pull mysql:5.7(不加版本:5.7则拉取最新版的)
2、检查是否拉取成功
sudo docker images
3、建立目录映射
说明:一般数据库容器不需要建立目录映射(只在首次运行使用)
sudo docker run -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
–name:容器名,此处命名为mysql
-e:配置信息,此处配置mysql的root用户的登陆密码
-p:端口映射,此处映射 主机3306端口 到 容器的3306端口
注:如果要建立目录映射(以下命令是可以不需要)
duso docker run -p 3306:3306 --name mysql \ -v /usr/local/docker/mysql/conf:/etc/mysql \ -v /usr/local/docker/mysql/logs:/var/log/mysql \ -v /usr/local/docker/mysql/data:/var/lib/mysql \ -e MYSQL_ROOT_PASSWORD=123456 \ -d mysql:5.7
-v:主机和容器的目录映射关系,":" 前为主机目录,之后为容器目录
4、检查容器是否正确运行
docker container ls
# 显示:容器ID、容器的源镜像、启动命令、创建时间、状态、端口映射信息、容器名字
5、进入docker的mysql客户端
sudo docker exec -it mysql bash
mysql -uroot -p123456
6、使用遇到的问题
# 1. 配置数据库表大小写问题:初始lower_case_table_names = 0,因此需要将mysql的lower_case_table_names改为1即可
lower_case_table_names = 0 表名存储为给定的大小和比较是区分大小写的
lower_case_table_names = 1 表名存储在磁盘是小写的,但是比较的时候是不区分大小写
lower_case_table_names = 2 表名存储为给定的大小写但是比较的时候是小写的
# 2. 开始改动大小写问题,如下图所示(图6-1)
docker ps -a
docker exec -it mysql /bin/bash
vi /etc/mysql/mysql.conf.d/mysqld.cnf
# 3. 配置错误时,怎么找到配置文件呢?
find / -name my.cnf |grep '/etc/mysql/my.cnf'
mv my.cnf.fallback my.cnf
ln -s my.cnf /etc/alternatives/my.cnf(无 -s 是硬链接,有是软链接)
# 4. mysql的group_concat函数,默认最大长度是1024,增大长度(以后使用中可能需要)
show variables like 'group_concat_max_len';
# 方法一:不重启方式扩量
SET GLOBAL group_concat_max_len = 4294967295;
SET SESSION group_concat_max_len = 4294967295;
# 方法二:在配置文件mysqld.cnf中加,需要重启扩容
[mysql]
group_concat_max_len = 4294967295
图 6-1
三、Docker拉取RabbitMQ镜像
1、拉取rabbitmq镜像
说明:选择带有-management后缀的文件安装
docker pull rabbitmq:3.7.7-management
2、查看是否拉取成功
说明:能发现rabbitmq则说明拉取成功。
sudo docker images
3、根据下载的镜像创建和启动容器:
docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 -v `pwd`/data:/var/lib/rabbitmq --hostname myRabbit -e RABBITMQ_DEFAULT_VHOST=dev -e RABBITMQ_DEFAULT_USER=admin -e RABBITMQ_DEFAULT_PASS=admin 2888deb59dfc
说明:
-d 后台运行容器;
--name 指定容器名;
-p 指定服务运行的端口(5672:应用访问端口;15672:控制台Web端口号);
-v 映射目录或文件;
--hostname 主机名(RabbitMQ的一个重要注意事项是它根据所谓的 “节点名称” 存储数据,默认为主机名);
-e 指定环境变量;(RABBITMQ_DEFAULT_VHOST:默认虚拟机名;RABBITMQ_DEFAULT_USER:默认的用户名;RABBITMQ_DEFAULT_PASS:默认用户名的密码)
镜像image_id:2888deb59dfc 是 sudo docker images 查找出的 <IMAGE ID>
4、检查容器是否正确运行
docker container ls
5、使用浏览器打开web管理端:
① 地址:http://ip:port
② 上面设置的密码和账号是:admin/admin
③ 如果使用的是阿里云,还需要在阿里云平台配置暴露port端口
6、进入MQ虚拟环境
说明:安装好后,如果想看docker安装下的MQ,可使用以下命令
docker exec -it rabbitmq /bin/bash