• [Docker学习记] Windows电脑VBOX Centos下使用Docker安装mysql5.7


    前提:Windows电脑,已经安装了VBOX,下载centos.iso, 成功导入VBOX, 已安装好docker

    你会接触到:docker的部分基本命令和解释,一些特定配置(docker/container, VBOX)

    > docker pull mysql:5.7

    > docker image ls --查看是否有mysql5.7的镜像

    > docker run -itd --name cnblogs-com-tomcatandjerry-mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7    --指定mysql版本,不然会下载最新的版本,相当于mysql:latest

    > docker container ls --查看mysql是否运行

    > docker container logs 06b46 --[06b46]是containerID,通过docker container ls 可以看到

    在VBOX里配置下端口映射:
    设置 > 网络 > 网卡1 > 端口转发:
    添加一行 mysql, TCP, 127.0.0.1, 13306, 10.0.2.15, 3306

    保存完毕后,可以使用HeidiSQL配置连接到本机13306端口,连接mysql了


    > docker container stop 06b46 --停止运行的mysql, [06b46]是containerID,通过docker container ls 可以看到

    > docker container start 06b46 --使用start来继续运行上次的container,如果使用 run 命令,会是一个新的container, 里面的mysql也是全新的,你之前的数据不会出现

    docker命令部分参数解释
    ```
    run 命令的参数

    -it: shell映射,就是把你当前的shell映射到docker里的shell(你当前的命令行映射到docker里的命令行, 不带这个参数没法交互,当然可以通过docker container exec -it [containerID] /bin/bash 就能进入容器,通过shell输入脚本)

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

    -p: 小写的p,指定端口映射,就是指定centos的端口映射到容器端口 -p 8000:3000 就是把centos的8000端口映射到容器的3000端口, 如果是VBox跑的centos,就只需配置10000 映射到10.0.2.15 8000端口,就可以在最外层的windows上,使用 10000访问centos里docker的3000端口

    --name: 给container指定一个名字
    -e: 配置环境变量, MYSQL_ROOT_PASSWORD=123456,就是指定container里mysql的root密码是123456

    还有其他参数,可以参考[runoob.com](https://www.runoob.com/docker/docker-run-command.html)

    ```

    #### 提高篇 ####

    ## 把容器中的mysql数据文件映射到外面主机的目录

    上述方法启动mysql,数据文件(包括数据库,表,数据等)都是存在容器container的目录下(/var/lib/mysql)

    >! 如果容器文件损坏,会导致数据无法读取和恢复

    这个时候就需要把数据库的文件,存放到外面主机(比如Centos)的文件系统上
    这样就算启动时,有参数 --rm (表示容器container停止会删除container),容器停止且自动删除,数据库/表/数据文件依然在Centos的目录下

    ### 如何把数据文件映射到宿主机器上?

    很简单,利用Docker的VOLUMN: 简单点就是通过-v参数 把目录做个映射

    ```

    docker run --rm --name mysqldatatest
    -p 3306:3306
    -v /root/mysql/data:/var/lib/mysql
    -e MYSQL_ROOT_PASSWORD=123456
    -d mysql:5.7

    ```

    #### 参数解释:

    ```

    -v /aaa:/bbb 把宿主机器(Centos)上/aaa绝对路径,映射到容器里的/bbb路径

    ```
    通过以上的命令,把mysql的数据文件/var/lib/mysql 映射到了外面(宿主)Centos系统的/root/mysql/data

    你可以查看该目录:
    ls /root/mysql/data/

    mysql的数据文件都在这里。

    我们可以测试一下:
    连接到这个mysql,然后创建数据库,创建表,插入记录。

    然后:
    ```

    > docker container ls

    > docker container stop [containerId]

    > docker container ls -a ---查看所有容器,发现之前的mysql已经没了,因为使用--rm

    > docker run --rm --name mysqldatatest
    -p 3306:3306
    -v /root/mysql/data:/var/lib/mysql
    -e MYSQL_ROOT_PASSWORD=123456
    -d mysql:5.7

    > docker container ls ---查看新的mysql容器

    > docker logs [containerID] ---如果有错误,请把--rm参数去掉,再跑一边docker run, 然后查看containerID, 再查看日志到底是什么错误

    ```
    使用工具连接到数据库,发现之前的数据库/表/数据都在

    [测试完成](https://www.cnblogs.com/tomcatandjerry/p/12143442.html)。

  • 相关阅读:
    apk反编译
    Eclipse Android项目中如如第三方library文件
    layout_gravity属性和gravity属性区别(转载)
    android weight 属性正解(转载)
    010_01Servlet Request&Response
    009_02sendRedirect() forward() include()
    009_01Servlet基础简介
    008_02HTTP基础知识
    008_01WEB基础知识
    【实用】让代码变的更加简洁
  • 原文地址:https://www.cnblogs.com/tomcatandjerry/p/12143442.html
Copyright © 2020-2023  润新知