docker入门(二)ubuntu镜像安装mysql设置端口映射

4 篇文章 0 订阅
4 篇文章 0 订阅

拉取ubuntu镜像
参考前一篇博客Docker 入门(一) ubuntu 镜像 安装 jdk1.8

安装mysql

  1. 进入容器后执行更新
apt-get update
  1. 安装mysql
apt-get install mysql-server
# 提示×××(Y\N) 的时候 输入 Y 回车
  1. 启动mysql 服务
service mysql start
  1. 设置密码
# 安装vim
apt-get install  -y vim 
# 安装完毕后执行
vim /etc/mysql/debian.cnf
# 复制文件中的密码后执行
mysql -u debian-sys-maint -p
# 黏贴复制的密码,进入mysql 后执行
use mysql;
#显示user表中的列
show fields from user;  // 或者(describe user;# authentication_string这列就是密码(注:以前的版本这个字段是password,如果是password下面的操作将authentication_string替换成password即可)
update mysql.user set authentication_string=password('123456') where user='root'
# 刷新
flush privileges;
# 退出
quit;
# 设置目录
 usermod -d /var/lib/mysql/ mysql
# 重启服务
service mysql restart

  1. 修改字符集utf8,设置忽略表明大小写
# 编辑 mysql.cnf
vim /etc/mysql/mysql.cnf
# 增加或修改配置如下
=================== start ===================
[client]
default-character-set=utf8

[mysqld]
lower_case_table_names=1
collation-server = utf8_unicode_ci
init-connect = 'SET NAMES utf8'
character-set-server = utf8
# 设置外部访问
bind-address = 0.0.0.0
===================   end   ===================
#保存 摁ESC
:wq
# 重启mysql 进入 mysql
show variables like "char%";
# 显示结果为说明配置成功
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
  1. 保存 镜像
# docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
# OPTIONS说明:
#   -a :提交的镜像作者;
#   -c :使用Dockerfile指令来创建镜像;
#   -m :提交时的说明文字;
#  -p :在commit时,将容器暂停。
docker commit -a "xiyeming" -m "this is mysql5.7" 651a8541a47d(你的容器ID) myubuntu:v1(z自定义容器名称和标签)
  1. 启动docker 映射端口
docker run -d -it -p 8080:3306 ubuntu-jkd1.8-mysql5.7:latest /bin/bash
# 然后进入容器启动mysql 就可以在宿主机通过navicat  访问了(8080 映射的docker3306端口)
  1. mysql挂载目录到宿主机(也可以保存在容器,就不用设置此步骤,弊端是容器会越来越大添加链接描述
在宿主机创建目录并创建mysql配置文件my.cnf

mkdir /home/data/mysql56/data    #创建存放数据目录

mkdir /home/data/mysql56/conf    #创建存放配置目录

cd /home/data/mysql56/conf

touch my.cnf   #创建mysql配置文件my.cnf

vi my.cnf

[mysql]

# 设置mysql客户端默认字符集

default-character-set=utf8

[mysqld]

# 设置3306端口

port = 3306

3.执行命令

docker run -p 3307:3306 --restart=always --privileged=true --name mysql57 -v /home/data/mysql57/conf:/etc/mysql/conf.d -v /home/data/mysql57/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=hm12345 -d mysql:5.7

注释:

        1)-p 端口映射,格式为:主机(宿主)端口:容器端口

        2)--restart=always 设置随服务启动而启动容器

        3)--name 命名容器名称

        4)-v 设置挂载点,格式为:主机(宿主)目录:容器目录

        5)-e 设置环境变量

        6)-d 后台运行容器,并返回容器ID

        7)--privileged=true 使用该参数,container内的root拥有真正的root权限

    8)对于已经运行但没设置随docker服务的启动而启动容器的可以执行如下命令

  docker update --restart=always 容器名
  1. 启动失败解决方案(Fatal error: Can’t open and lock privilege tables: Table storage engine for ‘user’ doesn’t have this option.)
#查看异常日志 
vim + /var/log/mysql/error.log
# 如果 是 (Fatal error: Can't open and lock privilege tables: Table storage engine for '××' doesn't have this option.)
chown -R mysql:mysql /var/lib/mysql /var/run/mysqld
# 启动mysql
service mysql start
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值