Docker搭建MySQL服务

Stella981
• 阅读 306

Docker开源镜像

前面我们已经安装好了Docker,也简单了解了Docker。那么我们可以尝试搭建一个MySQL服务。

要搭建服务就要启动服务容器,要创建容易就要有镜像,Docker提供了一个类似Github的开源平台,提供开源镜像,放心可靠。(毕竟大家都看着源码呢)

Docker开源镜像传送门


大概步骤

1. 下载MySQL镜像 2. 创建运行容器

好像很简单是吧?


详细步骤

第零步,查看Docker MySQL文档

MySQL文档地址: https://hub.docker.com/_/mysql/


第一步,拉取MySQL镜像

$ sudo docker pull mysql

之后docker会自动拉取(下载)MySQL镜像。

等待同样是漫长的。。。

注意,若提示拉取失败就重复几次,总有一次会成功的。。。没办法,墙内的人民很辛苦

拉取成功后我们查看一下:

$ sudo docker images

Docker搭建MySQL服务

第二步,创建并启动一个MySQL容器

输入以下命令:

$ sudo docker run --name pwc-mysql -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -d mysql

Docker搭建MySQL服务

  • –name:给新创建的容器命名,此处命名为pwc-mysql
  • -e:配置信息,此处配置mysqlroot用户的登陆密码
  • -p:端口映射,此处映射主机3306端口容器pwc-mysql的3306端口
  • -d:成功启动容器后输出容器的完整ID,例如上图 73f8811f669ee...
  • 最后一个mysql指的是mysql镜像名字

到这里我们查看容器运行状态:

$ sudo docker ps

Docker搭建MySQL服务

上图可以看到容器的简写ID,容器的源镜像,创建时间,状态,端口映射信息,容器名字等。


第三步,测试连接MySQL

这里我使用navicat远程连接,连接MySQL前需要防火墙开放端口或者关闭防火墙。

开放端口:

$ sudo firewall-cmd --add-port=3306/tcp

关闭防火墙:

$ sudo systemctl stop firewalld

接着使用navicat连接 Docker搭建MySQL服务

连接成功,也可以进行相关数据库操作,因此MySQL服务搭建成功!


其他

1.可以启动多个MySQL服务,因为我们启动的是容器,容器可以有多个,只要容器名字映射段端口不一样就可以了,例如:

$ sudo docker run --name dbdb -e MYSQL_ROOT_PASSWORD=123456 -p 6666:3306 -d mysql

2.查看所有容器(启动状态或者关闭状态)

$ sudo docker ps -a

3.启动和关闭容器

启动命令:

$ sudo docker start pwc-mysql   //通过指定容器名字
$ sudo docker start 73f8811f669e  //通过指定容器ID

关闭命令:

$ sudo docker stop pwc-mysql   //通过指定容器名字
$ sudo docker stop 73f8811f669e  //通过指定容器ID

3.修改MySQL配置文件有两种方法:

  • 一是进入容器,修改容器里的MySQL的配置文件,然后重新启动容器,例如:

    $ sudo docker exec -it pwc-mysql /usr/bin/bash
    

    然后可以进入容器的命令行模式,接着修改 /etc/mysql/my.cnf 文件即可

  • 二是挂载主机的mysql配置文件,官方文档如下:

    The MySQL startup configuration is specified in the file /etc/mysql/my.cnf, and that file in turn includes any files found in the /etc/mysql/conf.d directory that end with .cnf. Settings in files in this directory will augment and/or override settings in /etc/mysql/my.cnf. If you want to use a customized MySQL configuration, you can create your alternative configuration file in a directory on the host machine and then mount that directory location as /etc/mysql/conf.d inside the mysql container.

    If /my/custom/config-file.cnf is the path and name of your custom configuration file, you can start your mysql container like this (note that only the directory path of the custom config file is used in this command):

    $ docker run --name some-mysql -v /my/custom:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag
    

    This will start a new container some-mysql where the MySQL instance uses the combined startup settings from /etc/mysql/my.cnf and /etc/mysql/conf.d/config-file.cnf, with settings from the latter taking precedence.

我大概可以看懂,相信大家都可以的

原文 : https://www.cnblogs.com/pwc1996/p/5425234.html

点赞
收藏
评论区
推荐文章
秃头王路飞 秃头王路飞
2个月前
webpack5手撸vue2脚手架
webpack5手撸vue相信工作个12年的小伙伴们在面试的时候多多少少怕被问到关于webpack方面的知识,本菜鸟最近闲来无事,就尝试了手撸了下vue2的脚手架,第一次发帖实在是没有经验,望海涵。 language JavaScript "name": "vuecliversion2", "version": "1.0.0", "desc
刚刚好 刚刚好
2个月前
css问题
1、 在IOS中图片不显示(给图片加了圆角或者img没有父级) <div<img src""/</div div {width: 20px; height: 20px; borderradius: 20px; overflow: h
blmius blmius
1年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录 问题 用navicat导入数据时,报错: 原因这是因为当前的MySQL不支持datetime为0的情况。 解决修改sql\mode: sql\mode:SQL Mode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。 全局s
小森森 小森森
2个月前
校园表白墙微信小程序V1.0 SayLove -基于微信云开发-一键快速搭建,开箱即用
后续会继续更新,敬请期待2.0全新版本 欢迎添加左边的微信一起探讨!项目地址:](https://www.aliyun.com/activity/daily/bestoffer?userCodesskuuw5n) \2. Bug修复更新日历 2. 情侣脸功能大家不要使用了,现在阿里云的接口已经要收费了(土豪请随意), \ \ 和 注意
晴空闲云 晴空闲云
2个月前
css中box-sizing解放盒子实际宽高计算
我们知道传统的盒子模型,如果增加内边距padding和边框border,那么会撑大整个盒子,造成盒子的宽度不好计算,在实务中特别不方便。boxsizing可以设置盒模型的方式,可以很好的设置固定宽高的盒模型。 盒子宽高计算假如我们设置如下盒子:宽度和高度均为200px,那么这会这个盒子实际的宽高就都是200px。但是当我们设置这个盒子的边框和内间距的时候,那
艾木酱 艾木酱
1个月前
快速入门|使用MemFire Cloud构建React Native应用程序
> MemFire Cloud是一款提供云数据库,用户可以创建云数据库,并对数据库进行管理,还可以对数据库进行备份操作。它还提供后端即服务,用户可以在1分钟内新建一个应用,使用自动生成的API和SDK,访问云数据库、对象存储、用户认证与授权等功能,可专
Stella981 Stella981
1年前
MAC docker启动参数修改
启动 docker,漏加 16020 端口,怎么修改呢? 1\. Docker ps 看一下id CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS
Stella981 Stella981
1年前
Docker(三)——应用部署(MySQL部署,Nginx部署,Redis部署)
**一、MySQL部署** 1.拉取mysql5.7镜像 docker pull mysql:5.7 2.创建容器,启动mysql5.7 (建议别用最新版本的mysql) docker run -id --name=mysql1 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7
Wesley13 Wesley13
1年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
#### 背景描述 # Time: 2019-01-24T00:08:14.705724+08:00 # User@Host: **[**] @ [**] Id: ** # Schema: sentrymeta Last_errno: 0 Killed: 0 # Query_time: 0.315758 Lock_
helloworld_28799839 helloworld_28799839
2个月前
常用知识整理
# Javascript ## 判断对象是否为空 ```js Object.keys(myObject).length === 0 ``` ## 经常使用的三元运算 > 我们经常遇到处理表格列状态字段如 `status` 的时候可以用到 ``` vue
helloworld_34035044 helloworld_34035044
4个月前
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。 uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid() 或 uuid(sep)参数说明:sep 布尔值,生成的uuid中是否包含分隔符'',缺省为