[Java学习笔记]Docker安装MySql

参考文档:https://hub.docker.com/_/mysql/

一、Docker获取MySql镜像

下载镜像

$ sudo docker pull mysql:5.7   # 拉取 mysql 5.7
$ sudo docker pull mysql       # 拉取最新版mysql镜像

访问官网太慢报错

Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: TLS handshake timeout

配置 Docker 镜像站
`该脚本可以将 --registry-mirror 加入到你的 Docker 配置文件 /etc/docker/daemon.json 中。适用于 Ubuntu14.04、Debian、CentOS6 、CentOS7、Fedora、Arch Linux、openSUSE Leap 42.1,其他版本可能有细微不同。

$ curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io

$ curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://f1361db2.m.daocloud.io
docker version >= 1.12
{"registry-mirrors": ["http://f1361db2.m.daocloud.io"]}
Success.
You need to restart docker to take effect: sudo systemctl restart docker

重启docker

$ sudo systemctl restart docker

查看是否安装成功

$ sudo docker images

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
mysql               5.7                 d5cea958d330        35 hours ago        440MB

二、配置

将全部的配置文件和关联的文件夹统一放到/opt/docker-mysql

$ sudo mkdir -p /opt/docker-mysql/conf.d

转到刚创建的目录

$ cd /opt/docker-mysql/conf.d

创建配置文件config-file.cnf

$ sudo vi config-file.cnf

Linux下默认是区分的,设置表名不区分大小写。内容如下:

[mysqld]
# 表名不区分大小写
lower_case_table_names=1 
#server-id=1
datadir=/var/lib/mysql
#socket=/var/lib/mysql/mysqlx.sock
#symbolic-links=0
# sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

三、启动

增加数据库文件夹

$ sudo mkdir -p /opt/docker-mysql/var/lib/mysql

建立目录树启动 -v:主机和容器的目录映射关系,":"前为主机目录,之后为容器目录

$ sudo docker run --name mysql \
    --restart=always \
    -p 3306:3306 \
    -v /opt/docker-mysql/conf.d:/etc/mysql/conf.d \
    -v /opt/docker-mysql/logs:/var/log/mysql \
    -v /opt/docker-mysql/var/lib/mysql:/var/lib/mysql \
    -e MYSQL_ROOT_PASSWORD=123456 \
    -d mysql:5.7

如果不需要建立目录树,命令如下:

$ 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端口
  • -d:源镜像名,此处为 mysql:5.7
    检查容器是否允许正确

$ docker container ls

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                               NAMES
393a726634e1        mysql:5.7           "docker-entrypoint.s…"   39 seconds ago      Up 36 seconds       0.0.0.0:3306->3306/tcp, 33060/tcp   mysql

四、远程连接

使用sudo docker exec -it mysql bash进入容器

$ sudo docker exec -it mysql bash #进入容器
$ mysql -u root -p #进入MySql

修改root访问权限为任意访问

grant all privileges on *.* to 'root'@'%' ;

刷新权限

flush privileges;

查看权限

use mysql;
SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user; 

得到结果如下:

+------------------------------------+
| query                              |
+------------------------------------+
| User: 'root'@'%';                  |
| User: 'mysql.session'@'localhost'; |
| User: 'mysql.sys'@'localhost';     |
| User: 'root'@'localhost';          |
+------------------------------------+
4 rows in set (0.00 sec)

现在可以通过IP远程访问了,如果仍然无法访问查看一下安全策略和防火墙。

五、常用命令

使用sudo docker exec -it mysql bash进入容器

$ sudo docker exec -it mysql bash #进入容器
$ mysql -u root -p #进入MySql

查看日志

$ sudo docker logs -f mysql

备份数据

$ sudo docker exec mysql sh -c 'exec mysqldump --all-databases -uroot -p"123456"' > /some/path/on/your/host/all-databases.sql

恢复数据

$ sudo docker exec -i mysql sh -c 'exec mysql -uroot -p"123456-abc"' < /some/path/on/your/host/all-databases.sql

使用docker ps -a查看容器的运行或终止状态

$ sudo docker ps -a

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                               NAMES
393a726634e1        mysql:5.7           "docker-entrypoint.s…"   11 minutes ago      Up 11 minutes       0.0.0.0:3306->3306/tcp, 33060/tcp   mysql

使用docker stop $CONTAINER_ID来终止一个运行中的容器

$ sudo docker stop 393a726634e1 #393a726634e1是刚才查询的MySql编号

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                     PORTS               NAMES
393a726634e1        mysql:5.7           "docker-entrypoint.s…"   15 minutes ago      Exited (0) 6 seconds ago                       mysql

终止状态的容器,可以使用docker start $CONTAINER_ID来重新启动

$ sudo docker start 393a726634e1 #393a726634e1是刚才查询的MySql编号
$ sudo docker restart 393a726634e1 #使用docker restart命令来重启一个容器。

容器终止后,在需要的时候可以重新启动,确定不需要了,可以进行删除操作。
docker rm [NAME]/[CONTAINER ID]:不能够删除一个正在运行的容器,会报错。需要先停止容器。

$ sudo docker rm 393a726634e1

全部删除:docker本身没有提删除所有的操作,但是可以使用如下命令实现:
docker rm 'docker ps -a -q'

  • -a 标志列出所有容器
  • -q 标志只列出容器的ID 然后传递给rm命令,依次删除容器。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,843评论 6 502
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,538评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,187评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,264评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,289评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,231评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,116评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,945评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,367评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,581评论 2 333
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,754评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,458评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,068评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,692评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,842评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,797评论 2 369
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,654评论 2 354

推荐阅读更多精彩内容