前言
- 众所周知,作为一名开发者,有一台趁手的笔记本电脑是必不可少的,而我…今天不得不跟陪伴我六年的笔记本说再见了… ,最近全国范围内都在下大雨,想必大家都感受到,今天我骑着车去另一个项目组时,路过一个桥梁过道不怎么平稳,不小心把斜跨的双肩包掉积水里了,事实再一次说明,买双肩包要买一个防水的!!!!然后,当我把我的小破包捞起来的时候,里面已经全部灌满了,好不容易到了项目组,一堆人围着跟了我六年的笔记本尸体,纷纷提出了各种解决进水的方案…可惜最后还是无济于事,只好花了六千大洋又买了个拯救者的本子…
- 现在的话不得不重新弄一套开发环境了,还是按照我最喜欢的docker先来,在使用中加深理解!
谈谈docker是什么
- 用了这么多年了,docker的官方说法就是一个开源的容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源(没深入研究过Go)。
- Docker 可以打包应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
- Docker 容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。
什么是沙箱?
- 沙箱是一种用于隔离和管理网络环境的虚拟环境。它模拟网络中的真实场景,并提供对网络资源的限制和监控。
- 沙箱可以提供一些虚拟的硬件和软件资源,如文件系统、网络、操作系统等,使应用程序或进程可以在这个虚拟环境中运行,而不会对计算机系统产生任何不良影响
- 在沙箱中,如果应用程序或进程试图访问沙箱之外的资源或执行危险操作,沙箱会拦截这些请求并采取相应的安全措施,例如禁止该操作或中止应用程序或进程。
沙箱的功能
- 隔离性:沙箱提供了⼀个完全隔离的环境,使用户可以安全地运行不受信任的应用程序或文件。任何在沙箱中运行的应用程序或文件都无法访问主机操作系统或其他应用程序的敏感数据。
- 临时性:每次启动沙箱时,都会创建⼀个全新的操作系统实例。这意味着任何在沙箱中进行的更改、下载的文件或安装的应用程序都将在关闭沙箱后被完全删除,不会对主机系统产生任何影响。
- 安全性:沙箱中的操作系统实例是在主机操作系统的基础上创建的,因此可以利用主机操作系统的安全功能和更新机制来提供更高的安全性。
- 快速启动:沙箱的启动非常迅速,几乎可以立即进⼊隔离环境,无需等待长时间的系统启动过程。
- 兼容性:沙箱可以运行几乎任何应用程序,包括浏览器、办公套件、开发工具等。用户可以在沙箱中进行各种测试、评估和试验,而无须担心对主机系统的影响。
沙箱组件
- 虚拟化引擎:用于创建和管理虚拟环境,包括虚拟化硬件、操作系统和应用程序等。
- 安全隔离机制:用于隔离不同的用户或应用程序,并提供安全访问控制和审计功能。
- 网络资源管理:用于限制和监控用户或应用程序对网络资源的访问,包括网络带宽、IP地址、端口和服务等。
- 安全监控和分析:用于对用户或应用程序的网络行为进行监控和分析,以发现潜在的威胁和攻击。
Windows 下部署docker
安装 Hyper-V
- Hyper-V 是微软开发的虚拟机,类似于 VMWare 或 VirtualBox,仅适用于 Windows 10。这是 Docker Desktop for Windows 所使用的虚拟机
- Hyper-V 虚拟机一旦启用,QEMU、VirtualBox 或 VMWare Workstation 15 及以下版本将无法使用!如果你必须在电脑上使用其他虚拟机(例如开发 Android 应用必须使用的模拟器),请不要使用 Hyper-V!
开启 Hyper-V
- 找到应用和功能
- 找到程序和功能,找到启动或关闭Windows 功能,选中Hyper-V
docker 的安装
- 找个docker的安装包,然后一路Next ,点击Finish 完成安装
安装完毕以后,会有一个docker的小图标,这个情况就是安装成功了
双击运行即可,此时呢,运行ok了可以看到右下角有一个 docker标志,
也可以通过cmd进入命令行,查看一下docker 版本信息:docker --version
docker 安装mysql
- docker 安装成功后,首先就是安装mysql 喽,可以使用
docker search mysql
命令来查看可用版本
- 我这边跟随项目组mysql版本,在本地部署 mysql 8.0.18 版本的mysql,拉去命令为:
docker pull mysql:8.0.18
,默认是从docker官方的镜像仓库拉取docker,出现如下界面表示拉取失败
为docker 更换阿里云docker 镜像源头,我这里使用的阿里云的镜像源,找到 setting 如下图
这个阿里云镜像源地址:需要登录阿里云官网,搜索容器镜像服务,找到容器加速器 ,即可获得(如果没有,自行注册一个)
使用
docker images
查看是否安装了mysql ,能看到有mysql 就表示OK了PS C:\Users\Administrator> docker images REPOSITORY TAG IMAGE ID CREATED SIZE mysql latest 3218b38490ce 2 years ago 516 MB PS C:\Users\Administrator>
安装完成后,测试运行 mysql 容器:
docker run -itd --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql
-p 3306:3306
:映射容器服务的 3306 端口到宿主机的 3306 端口,外部主机可以直接通过 宿主机ip:3306 访问到 MySQL 的服务。MYSQL_ROOT_PASSWORD=123456
:设置 MySQL 服务 root 用户的密码。
PS C:\Users\Administrator> docker run -itd --name mysql-test -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql c9c7993e8d5feb2f3622ecb7d9c71939d6059f59dccddb4f861a54ed0e499561 PS C:\Users\Administrator>
通过
docker ps
命令查看是否运行成功:PS C:\Users\Administrator> docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c9c7993e8d5f mysql "docker-entrypoint..." About a minute ago Up About a minute 0.0.0.0:3306->3306/tcp, 33060/tcp mysql-test PS C:\Users\Administrator>
此时可以通过连接工具开始使用mysql了