MySQL容器化详细教程步骤
发布时间:2023-07-25 14:21:54 所属栏目:MySql教程 来源:
导读:上篇文章介绍了Docker工具的安装及常用命令使用。本篇文章我们会介绍如何在Docker中运行MySQL实例,可能有的小伙伴会问:为什么要在Docker里运行MySQL呢?因为在Docker里部署MySQL实例操作简单,不需要考虑操作系统等
上篇文章介绍了Docker工具的安装及常用命令使用。本篇文章我们会介绍如何在Docker中运行MySQL实例,可能有的小伙伴会问:为什么要在Docker里运行MySQL呢?因为在Docker里部署MySQL实例操作简单,不需要考虑操作系统等依赖差异,而且可以多实例部署,比如说我们原来服务器有安装MySQL5.7,我们想再运行MySQL8.0实例的话只需要用Docker启动MySQL8.0镜像即可。下面我们就来介绍下如何用Docker启动MySQL实例。 ▍1.拉取MySQL官方镜像 在上篇文章中我们介绍过Docker中三个基本的概念:镜像,容器,仓库。要用在Docker中部署MySQL,第一步要做的是从官方仓库中拉取MySQL镜像,这里我们从Docker Hub中拉取MySQL镜像。进入Docker Hub,搜索MySQL,可以看到如下画面,其中有不同版本的镜像及使用介绍。 MySQL容器化详细教程cdn.nlark.com/yuque/0/2019/png/119537/1572918549506-2b81bb36-1574-4aea-bc6b-9bb21fd1178d.png"> 比如我们想拉取MySQL5.7版本及8.0版本的镜像,可以做如下操作: # 拉取5.7及8.0版本镜像 稍等片刻即可拉取成功 docker pull mysql:5.7.23 docker pull mysql:8.0.18 # 查看镜像 docker images REPOSITORY TAG IMAGE ID CREATED SIZE mysql 8.0.18 c8ee894bd2bd 2 weeks ago 456MB mysql 5.7.23 1b30b36ae96a 12 months ago 372MB 其实MySQL官方镜像也存在一些缺陷,比如说时区不是北京时间,系统字符集问题等。下面以MySQL5.7.23版本镜像为基础,展示下如何修改构建镜像。 # 创建Dockerfile 主要作用是更改系统字符集及时区 内容如下: cat Dockerfile FROM mysql:5.7.23 MAINTAINER wang RUN echo "alias ls='ls --color=auto'" >> /root/.bashrc \ && ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime ENV LANG=C.UTF-8 # 构建镜像 docker build -t my-mysql:5.7.23 . Sending build context to Docker daemon 2.048kB Step 1/4 : FROM mysql:5.7.23 ---> 1b30b36ae96a Step 2/4 : MAINTAINER wang ---> Running in a7cc94f95cc7 Removing intermediate container a7cc94f95cc7 ---> d9590ed98de5 Step 3/4 : RUN echo "alias ls='ls --color=auto'" >> /root/.bashrc && ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime ---> Running in e698bfdb3817 Removing intermediate container e698bfdb3817 ---> 31c9ed9103c5 Step 4/4 : ENV LANG=C.UTF-8 ---> Running in eefa296fef94 Removing intermediate container eefa296fef94 ---> 10aa697936e9 Successfully built 10aa697936e9 Successfully tagged my-mysql:5.7.23 # 再次查看镜像即可找到我们新构建的镜像 docker images REPOSITORY TAG IMAGE ID CREATED SIZE my-mysql 5.7.23 10aa697936e9 About a minute ago 372MB mysql 8.0.18 c8ee894bd2bd 2 weeks ago 456MB mysql 5.7.23 1b30b36ae96a 12 months ago 372MB ▍2.启动MySQL实例 这里为大家介绍如何利用上面构建的镜像来运行MySQL实例,MySQL容器化其实也需要映射端口,数据持久化,加载配置文件等操作,下面给大家演示下具体启动操作。 2.1 创建数据持久化路径及配置文件 # 创建配置文件目录及数据目录 mkdir -p /data/mysql57/{cnf,data} # 添加配置文件my.cnf cd /data/mysql57/cnf/ vim my.cnf # 配置文件内容如下,可自定义 [mysqld] pid-file = /var/run/mysqld/mysqld.pid socket = /var/run/mysqld/mysqld.sock datadir = /var/lib/mysql server-id = 33061 max_connections = 1000 sql_mode = NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION lower_case_table_names=1 innodb_file_per_table = 1 log_timestamps=SYSTEM character-set-server = utf8 max_allowed_packet = 32M sort_buffer_size = 4M read_buffer_size = 4M join_buffer_size = 4M binlog_cache_size = 4M tmp_table_size = 96M max_heap_table_size = 96M innodb_buffer_pool_size = 512M #logs slow_query_log = 1 slow_query_log_file = /var/lib/mysql/slow.log long_query_time = 3 log-bin = /var/lib/mysql/binlog binlog_format = row expire_logs_days = 15 log_bin_trust_function_creators = 1 2.2 docker run运行MySQL实例 # 一条命令启动一个MySQL实例 docker run -itd -p 33061:3306 --name mysql57 --hostname=mysql57 -v /data/mysql57/cnf:/etc/mysql -v /data/mysql57/data:/var/lib/mysql --privileged=true -e MYSQL_ROOT_PASSWORD=Asdf@123456 my-mysql:5.7.23 # 解释下各个参数的含义 -d: 后台运行容器,并返回容器ID -i: 以交互模式运行容器,通常与 -t 同时使用 -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用 -p: 指定端口映射,格式为:主机(宿主)端口:容器端口 --name="mysql57": 为容器指定一个名称 --hostname=mysql57: 指定容器的hostname -v: 绑定一个卷 --privileged=true: 以特权方式启动容器 2.3 检查容器状态 # 查看容器状态 docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 04cd3d99d5cb my-mysql:5.7.23 "docker-entrypoint.s…" 13 seconds ago Up 11 seconds 33060/tcp, 0.0.0.0:33061->3306/tcp mysql57 # 进入容器内 docker exec -it mysql57 /bin/bash 或 docker exec -it [CONTAINER ID] /bin/bash ▍3.其他相关操作 到此为止,我们已经在Docker中成功运行了MySQL实例,其实还没有结束,还有好多操作还没讲,比如如何备份恢复,怎么更改配置等,下面简单介绍下这类相关操作。 备份恢复 # 备份 docker exec mysql57 sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > /tmp/all-databases.sql # 恢复 docker exec -i mysql57 sh -c 'exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD"' < /tmp/all-databases.sql 更改配置 # 更改配置只需要修改宿主机 /data/mysql57/cnf/my.cnf 文件,然后重启容器即可 docker restart mysql57 如果你想在本地通过工具连接容器内MySQL的话,可以使用宿主机ip加映射端口来连接。比如我们上面创建的MySQL实例就可以通过宿主机ip+30661端口来连接,若无法连接请检查网络及服务器防火墙。 (编辑:聊城站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐