在DOCKER容器中运行MySQL服务的操作方法
admin
2023-04-18 09:43:09
0

下面讲讲关于在DOCKER容器中运行MySQL服务的操作方法,文字的奥妙在于贴近主题相关。所以,闲话就不谈了,我们直接看下文吧,相信看完在DOCKER容器中运行MySQL服务的操作方法这篇文章你一定会有所受益。

        虚拟机使用了VBOX,VBOX配置了2个网络,一个是HOST ONLY,一个是NAT,这样保证了虚拟机可以同时进行本地和外网连接。

操作系统CentOS7.5,docker的安装比较简单,参考网上说明即可:


1. 先卸载系统中版本比较低的docker

# yum remove docker \

                  docker-client \

                  docker-client-latest \

                  docker-common \

                  docker-latest \

                  docker-latest-logrotate \

                  docker-logrotate \

                  docker-selinux \

                  docker-engine-selinux \

                  docker-engine


2.安装必要的系统工具

# yum install -y yum-utils device-mapper-persistent-data lvm2


3.添加阿里云的源 (有些文档中的地址使用了http,导致添加源失败,需要注意,目前源地址使用的是https协议)

# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo


4.更新yum缓存

# yum makecache fast


5.安装docker-ce版本

# yum -y install docker-ce


6.配置docker服务自启动并启动docker服务

# systemctl enable docker

# systemctl start docker


7.至此docker配置完成,执行docker info,查看下docker的信息

# docker info

Containers: 3

 Running: 0

 Paused: 0

 Stopped: 3

Images: 3

Server Version: 18.06.1-ce

Storage Driver: overlay2


8.下载CENTOS最新的docker image

# docker search centos

# docker pull centos

[root@mysqldb ~]# docker images

REPOSITORY      TAG                IMAGE ID               CREATED             SIZE

centos                   latest              75835a67d134        4 weeks ago         200MB

       下面开始在物理主机上面配置必要的网络和目录信息。


1. 宿主机创建mysql目录

[root@mysqldb mysql]# cd /mysql/skydb/

[root@mysqldb skydb]# mkdir skydb1

[root@mysqldb skydb]# cd skydb1/

[root@mysqldb skydb1]# mkdir {data,log,binlog,tmp,script,etc}


2. 宿主机创建容器专用网络 (只需要创建一次)

创建网络是为了方便在docker容器中使用固定的IP地址。


[root@mysqldb ~]# docker network create --subnet=172.168.56.0/16 skynet

[root@mysqldb ~]# docker network ls


3. 启动centos docker容器

[root@mysqldb ~]# 

docker run -id --name skydb1 \

-v /mysql/mysql/mysql-5.7.24:/opt/mysql5.7 \

-v /mysql/skydb/skydb1:/mysqldata \

-v /etc/hosts:/etc/hosts \

--net skynet --ip 172.168.56.10 --hostname skydb1 centos 


--name skydb1 指定docker容器的名称

-v /etc/hosts:/etc/hosts 指定本地文件与docker容器内部的文件映射

--net skynet 指定docker的虚拟网络

--ip 172.168.56.10 固定docker容器的ip地址

--hostname skydb1 指定docker容器的主机名


MySQL使用的二进制安装包,解压到宿主机上面,通过文件映射的方式映射给docker容器。


下面是5.7和8.0的安装介质下载地址:

wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz


wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.13-linux-glibc2.12-x86_64.tar.xz


4. 连接容器 (通过容器名称和ID进行连接)

[root@mysqldb ~]# docker exec -it skydb1 bash -c ". /root/.bash_profile && /bin/bash"


为了使登录的信息比较醒目,在 /root/.bash_profile 指定 banner `hostname`,方便识别docker容器主机。


5. 创建文件链接

[root@skydb1 ~]# cd /usr/local/

[root@skydb1 local]# ln -s /opt/mysql5.7/ ./mysql

[root@skydb1 local]# ln -s /opt/mysql5.7/bin/mysql /usr/local/bin/mysql

[root@skydb1 script]# ln -s /mysqldata/script/my.cnf /etc/my.cnf


6. 通过ldd,检查mysqld程序是否包含了所有动态库

[root@skydb1 ~]# ldd /usr/local/mysql/bin/mysqld


7. docker容器,安装必要软件包

[root@skydb1 ~]# yum install libaio

[root@skydb1 ~]# yum install numactl

[root@skydb1 ~]# yum install iproute

[root@skydb1 ~]# yum install net-tools


8. 创建安装用户并修改目录权限

[root@skydb1 ~]# groupadd mysql

[root@skydb1 ~]# useradd -g mysql -d /home/mysql -s /sbin/nologin -MN mysql

[root@skydb1 local]# cd /mysqldata/

[root@skydb1 mysqldata]# chown -R mysql:mysql ./


9. docker容器中初始化mysql

[root@skydb1 ~]# /usr/local/mysql/bin/mysqld --initialize

[root@skydb1 ~]# /usr/local/mysql/bin/mysqld  &


10. 查看默认的root口令

[root@skydb1 ~]# cd /mysqldata/log

[root@skydb1 log]# cat skydb1.err | grep pass

2018-11-06T05:27:43.361600-00:00 1 [Note] A temporary password is generated for root@localhost: /dJt?sq62OlF


11. 修改root用户口令

[root@skydb1 ~]# /usr/local/mysql/bin/mysql -S /mysqldata/tmp/skydb1.sock -uroot -p

mysql> set global super_read_only=0; 

mysql> set global read_only=0;

mysql> alter user user() identified by 'oracle';

mysql> flush privileges;


12. 配置本地自动登录

[root@skydb1 script]# cat my.cnf 

[client]

port = 3306

socket = /mysqldata/tmp/skydb1.sock

user = root

password = oracle

[root@skydb1 script]# mysql


13. 授权root用户远程连接

root@localhost [mysql]>GRANT ALL PRIVILEGES ON *.* TO root@"172.168.56.%" IDENTIFIED BY "oracle";

root@localhost [mysql]>GRANT ALL PRIVILEGES ON *.* TO root@"172.168.0.1" IDENTIFIED BY "oracle";

root@localhost [(mysql)]>flush privileges;


[root@mysqldb ~]# mysql -uroot -h 172.168.56.10 -p

[root@mysqldb ~]# mycli -u root -h 172.168.56.10


14. docker容器启停及登录

[root@mysqldb ~]# docker ps

[root@mysqldb ~]# docker stop skydb1

[root@mysqldb ~]# docker start skydb1

[root@mysqldb ~]# docker exec -it skydb1 bash -c ". /root/.bash_profile && /bin/bash"

对于以上在DOCKER容器中运行MySQL服务的操作方法相关内容,大家还有什么不明白的地方吗?或者想要了解更多相关,可以继续关注我们的行业资讯板块。

相关内容

热门资讯

“特高课”再现?日本强推“国家... 无视反对战争正义呼声 复刻战前军国主义体制日本强推“国家情报局”引发广泛担忧和批评(国际视点)本报记...
6G相比5G不只是速度更快 将...   6G相比5G不只是速度更快  【6G相比5G不只是速度更快】7月28日,相比5G,6G不仅是速度...
趣享夏日消保同行 泰康人寿深圳...   7月12日,为落实2026年“7·8全国保险公众宣传日”工作部署,泰康人寿深圳分公司结合三十周年...
泰康人寿深圳分公司联合泰康养老...   为深入践行金融工作的政治性、人民性,切实守护新就业群体的财产安全,7月23日下午,在深圳市居民金...
中牟改善买房必看:三代宅和四代... 准备在中牟买改善房的人,十有八九会纠结同一个问题:到底是买传统的第三代住宅,还是紧跟郑州置业主流买第...
徐巧芯剖析赖清德:最怕自己丢掉... 海峡导报综合报道 大罢免投票一周年纪念活动26日举行,台北市长蒋万安出席并怒轰,民进党一年过后仍没有...
中国红十字会总会紧急向广东调拨... 记者从中国红十字会总会了解到,针对台风“红霞”给广东造成的灾情,中国红十字会总会启动四级应急响应,紧...
这些少年,正被“毒蛋”围猎 李梦抽了几口电子烟,吐出了白色的烟雾,有一股浓烈的水果香味。随后,她看着自己握电子烟的手,跟身边人说...
蒋万安号召“倒阁”,卢秀燕认为... 海峡导报综合报道 台北市长蒋万安27日抛出震撼议题,表示多名民代向他提议推动“倒阁”,要求台行政机构...
特朗普将在白宫会见两位重要客人 俄乌战争仍未结束,美伊冲突又有升级风险。在此背景下,美国总统特朗普将在白宫接见乌克兰和以色列领导人。...