docker实践之docker-compose部署mysql

1、安装部署docker
1.1、安装环境
在Centos7进行安装,在 CentOS 7安装docker要求系统为64位(getconf LONG_BIT)、系统内核版本为 3.10 以上 (uname -r |awk -F’-’ ‘{print $1}’)
在这里插入图片描述
1.2、用yum源安装
1.2.1 查看是否已安装docker列表
如下是已经安装了的截图
yum list installed | grep docker
在这里插入图片描述
1.2.2 安装docker
yum -y install docker
-y表示不询问安装,直到安装成功,安装完后再次查看安装列表
1.3、安装包安装docker
下载地址:版本举例:docker-19.03.9.tgz
链接:https://pan.baidu.com/s/16wN6KR9RxaXte6wX03Fl6g
提取码:ah2t
1.3.1、解压docker安装包
tar -xf ./package/ docker-19.03.9.tgz
1.3.2、将docker目录移到/usr/bin目录下
/bin/cp -f ./docker/* /usr/bin/
1.3.3、将docker.service 移到/etc/systemd/system/ 目录
/bin/cp -f ./package/docker.service /etc/systemd/system/
1.3.4、添加文件权限
chmod +x /etc/systemd/system/docker.service
1.3.5、重新加载配置文件
systemctl daemon-reload
1.3.6、启动docker
systemctl start docker
1.3.7、设置开机自启
systemctl enable docker.service
1.3.8、查看docker是否安装成功
docker –v 或docker info
在这里插入图片描述
2、安装docker-compose
.1、下载docker-compose文件

#使用curl将docker-compose文件下载到/usr/local/bin/docker-compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.27.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
#但通常因为网速原因访问下载慢或失败,可以改为国内站点下载,使用以下链接。
sudo curl -L "https://get.daocloud.io/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

在这里插入图片描述

脚本安装:

 echo "开始安装docker-compose环境"
  install_docker_compose_version=`docker-compose -v `
  if [ $? -eq 0 ]; then
       echo "检查到docker-compose已安装,安装的版本:$install_docker_compose_version"
  else
       echo "将$docker_compose_version 移到/usr/local/bin/ 目录 "
       /bin/cp -f ./package/$docker_compose_version /usr/local/bin/docker-compose
       echo "docker-compose添加权限"
       chmod +x  /usr/local/bin/docker-compose
       docker-compose -v
       if [ $? -eq 0 ]; then
           echo "docker-compose安装成功"
       else
            echo "docker-compose安装失败"
            exit 1
       fi
  fi

2.2、赋予文件可执行权限
sudo chmod +x /usr/local/bin/docker-compose
2.3、执行docker-compose命令查看安装是否成功
docker-compose使用python编写,所以会看到依赖的python版本
在这里插入图片描述
3、docker实践之docker-compose部署mysql
mysql目录
在这里插入图片描述
3.1、my.cnf为初始化文件

[root@tandd-no conf]# cat my.cnf
[mysqld]
user=mysql
default-storage-engine=INNODB
character-set-server=utf8
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[root@tandd-no conf]#

在这里插入图片描述
3.2、编写docker-compose文件

[root@tandd-no mysql]# cat docker-compose.yml
version: '3.0'
services:
    mysql:
        network_mode: "host"
        environment:
            MYSQL_ROOT_PASSWORD: "******"
            MYSQL_USER: 'test'
            MYSQL_PASS: '*******'
        image: "docker.io/mysql:5.7"
        container_name: mysqltest
        restart: always
        volumes:
            - "./db:/var/lib/mysql"
            - "./conf/my.cnf:/etc/my.cnf"
            - "./init:/docker-entrypoint-initdb.d/"
[root@tandd-no mysql]#

在这里插入图片描述
1)network_mode:容器的网络模式
Docker中的host模式指定是容器与主机享受相同的network namespace,在这种情况下,我们访问主机端口就能访问我们的容器。比如说我们运行tomcat容器并且用-- network=host 来指定我们的网络模式为host,这样我们访问本机的8080端口就能访问到我们的tomcat容器
network_mode: “bridge”
network_mode: “host”
network_mode: “none”
network_mode: “service:[service name]”
network_mode: “container:[container name/id]”
2)MYSQL_ROOT_PASSWORD为数据库的密码,也就是root用户的密码。
3)MYSQL_USER和MYSQL_PASS另外一个用户名和密码。非root用户和密码
4)image为你拉取镜像的地址和版本,当然也可以换成自己的镜像仓库
container_name:指定自定义容器名称,而不是生成的默认名称。如果container name没有定义, docker-compose自动给container分配了一个名字,其格式为:<当前工作路径名>
5)volumes里面的参数为映射本地和docker容器里面的文件夹和目录。
A、./db 用来存放了数据库表文件,
B、./conf/my.cnf存放自定义的配置文件,
C、./init存放初始化的脚本。

3.3、Init.sql举例

CREATE USER 'test'@'%' IDENTIFIED BY '******';
GRANT All privileges ON *.* TO 'test'@'%';
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'Abc1234%';
create database compose_test;
use compose_test;
create table user
(
    id int auto_increment primary key,
    username varchar(64) unique not null,
    email varchar(120) unique not null,
    password_hash varchar(128) not null,
    avatar varchar(128) not null
);
insert into user values(1, "TOM","test12345@qq.com","passwd","avaterpath");
insert into user values(2, "Lily","12345test@qq.com","passwd","avaterpath");

说明:
ALTER USER ‘root’@’%’ IDENTIFIED WITH mysql_native_password BY ‘******’;这一句比较重要,放开root登入权限,如果你要在其他的主机用root用户登入到数据库就需要写入这句话。其他的语句就是建表操作和插入数据的操作了。
3.4、拉取服务依赖的镜像
docker-compose pull
在这里插入图片描述
3.5、启动所有容器
-d 将会在后台启动并运行所有的容器
docker-compose up -d
在这里插入图片描述
注意:需要在存放docker-compose.yml的目录下进行操作。
列出项目中目前的所有容器
docker-compose ps
在这里插入图片描述
或docker ps | grep mysql
在这里插入图片描述
3.6、检查初始化的数据
进入容器
docker exec -it ${CONTAINERID} /bin/bash
在这里插入图片描述
3.7、验证远程连接
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值