Docker:Windows下部署MySQL
Docker是什么?
Docker
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。 Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。 容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
说人话
如果你玩过虚拟机的话,就知道可以在当前系统下通过 VMware、virtualBox 等安装一个新的系统,你可以定制这个虚拟机的CPU 内存 硬盘等参数,获得几乎媲美原生的体验。既然系统可以安装为一个虚拟机,那么聪明的人就有了一个大胆的想法,我可不可以把一个软件服务通过虚拟机装起来呢?于是docker应运而生,docker不仅可以安装centos Ubuntu等操作系统,也可以安装nginx mysql等服务,甚至可以部署个人编写的web服务。 通过虚拟机托管,这样启动了一个进程就相当于在物理机系统中启动了一个新的服务——进程即服务。由于win10自带hyperV虚拟机,因此windows上的docker能直接调用这个虚拟机。
为什么要用Docker?
在没有docker之前,如果我们要在windows上安装mysql、mongodb需要先下载这些软件,然后还要一步步点设置,并且注册到windows服务。并且根本不知道安装到什么地方(某些版本mysql不能指定安装位置,默认到C盘)。同时也会在控制面板内注册许多相关的插件。以后要卸载的时候可能还会有各种残留。作为一个强迫症患者这是万万不能忍受的。
现在有了docker,只需要一行代码就能拉取所需软件的镜像,然后配置一个容器就启动了。需要开发的时候就打开docker,服务便能够运行。占用的空间也小,性能和原生差异不大。增删查改都只需要一行代码就能完成。卸载起来也毫无残留。更重要的是,我可以同时有一个镜像的几个容器。即使我搞坏了一个,也可以用其他的容器。还能随时监测这些容器的磁盘占用等状态
安装及使用
获取Docker
获取Docker 注意这个版本只支持win10以上,win7是没有hyperV虚拟机的
Docker.png
安装完成后,你在桌面上就获得一个可爱的鲸鱼图标,双击以后右下角就会出现docker的图标,稍等会提升docker is running
修改配置
配置文件.png
首先修改使用的CPU数, docker占用资源不大,这里随意。内存根据自己的实际需求来。然后是关键的镜像位置,默认在C盘,强迫症患者还是移到了其他盘
配置加速镜像
Docker的默认官方仓库在国外,因此想在国内使用需要配置镜像加速器,首推阿里云。每个人分配的地址是不一样的,只需要注册阿里云用户就会得到一个加速地址了。
安装MySQL
终端.png
搞定后在终端输入docker就能获得以下信息
// 搜索mysql的镜像信息
$ docker search mysql
// 从仓库拉取mysql,mysql:tag 后面可以跟标签得到指定版本,不加默认为lastest
$ docker pull mysql
// 从镜像生成容器,注意mysql需要指定登录的密码,以及通过-p 映射端口,必须要映射端口在能才物理机中访问到服务
$ docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password -d mysql
// 访问容器内的终端
$ docker exec -it mysql bash
终端操作.png
注意事项
在双击Docker的安装的过程中,会让你打开VT虚拟化,现在的主流处理器都支持虚拟化功能,所以进BIOS打开就好了,重启电脑以后Docker就能正常使用了。 就是这样:)
- ASP.NET MVC Action Filters
- Android:StatFs类 获取系统/sdcard存储空间信息
- 数据挖掘干货
- 高效 Mac 人士必备:实现工作/家庭间网络环境切换的自动化
- android中AVD的使用
- ASP.NET MVC 2示例Tailspin Travel UI层分析
- CSS 命名之Dialog, Modal, Popup, Popover, Lightbox 等的区别
- Eclipse JAVA文件注释乱码
- 2018年小程序的红利趋势预测,懂的来……或许你将成为下个富翁
- VUE 入门基础(6)
- 五年换4高管,6000员工裁95%剩300人,王健林为何抛弃万达网科?
- Android Permission中英对照
- 你知道人脸识别技术是如何实现的吗?
- WordPress REST API 定制化输出
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Android自定义控件的步骤
- Android通过Socket与服务器之间进行通信的示例
- SAP Spartacus central configuration - B2cStorefrontModule
- Android自定义控件实现折线图
- 关于Angular Component changeDetection策略设置成OnPush的一个单元测试局限性
- SAP Spartacus CmsService.Components数据结构
- Android同时安装Release和Debug版本的方法
- Django 后台带有字典的列表数据与页面js交互实例
- SAP Spartacus CmsService的CmsActions.LoadCmsComponent
- SAP Spartacus OccEndpointsService单元测试的依赖注入
- Python利用PyPDF2库获取PDF文件总页码实例
- TypeScript里get属性的实现
- SAP Spartacus OccEndpointsService单元测试之getBaseEndpoint
- html+css入门基础案例之圣诞那些事
- 建议收藏备查!MySQL 常见错误代码说明