前段时间使用了8年的老电脑坏掉正式退役了,购买了新的电脑需要重新搭建本地开发环境。想着需要安装MySQL、Redis、Nginx、MQ、Elasticsearch等等,有时候学习新技术又需要安装其他服务。如果都在本机安装,安装起来会比较麻烦,同时电脑也会变得越来越卡,而且很多学习性的应用,学习一段时间后后面也用不到了,即使卸载后还是会有很多残留的文件需要清理。联想到公司的项目都是使用容器化部署,于是想到了Docker,我们可以将需要的应用以容器化的方式在本地启动,这样需要的时候以Docker启动,不用的时候停掉或者直接删掉也不会留下残留的文件,用起来就方便多了。
使用Docker好处:
- 环境隔离:Docker在Windows上可以创建独立的容器,每个容器都有自己的文件系统、运行时环境和依赖项。这意味着你可以将不同的开发环境隔离开来,避免互相干扰和冲突。例如,你可以在同一台Windows机器上同时运行多个容器,每个容器专门用于一个特定的应用程序或服务。
- 简化配置:通过将应用程序及其依赖项打包到Docker镜像中,你可以快速部署和配置开发环境。无需手动安装软件、配置环境变量等繁琐步骤,只需使用Dockerfile定义所需的环境设置,然后通过Docker命令构建和运行容器即可。
- 跨平台性:Docker是一种跨平台的容器化技术,可在不同操作系统上运行,包括Windows、Linux和macOS。这意味着你可以在Windows上构建和运行Docker容器,然后将其迁移到其他操作系统上,而无需重新配置和调整开发环境。
- 快速复制和共享:使用Docker,你可以轻松地复制和共享开发环境。通过将整个应用程序及其依赖项打包为一个Docker镜像,其他开发人员可以简单地拉取该镜像并在其本地环境中运行,无需再次进行配置和安装。
- 弹性扩展:当需要进行横向扩展时,Docker可以方便地创建多个相同的容器,并使用负载均衡等技术将流量分发到这些容器上。这使得你可以根据需求快速扩展应用程序的容量,以满足用户或业务的增长。
Docker安装
由于我使用的是Windows11家庭版的系统,所以我这边只介绍Windows的安装步骤😂
1.准备工作
安装WSL
-
用管理员的身份打开Windows PowerShell
bash#启动WSL dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart 启动虚拟机功能 dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
在这个安装过程中,可能会出现要你重启的情况,按照提示操作即可。
-
安装WSL
下载[WSL]并安装(由于是图形化的,这里就不详细说明安装步骤了)。
3.设置默认的WSL版本
arduino
wsl --set-default-version 2
2.安装Docker Desktop
下载Docker Desktop 并安装(由于是图形化的,这里就不详细说明安装步骤了)。
3.配置镜像源
设置国内镜像源(这里就不解释了,你懂的🤫)
点击「设置」按钮,在左侧选择「Docker Engine」,在右侧配置框中添加如下配置:
json
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn",
"https://cr.console.aliyun.com/",
"https://registry.docker-cn.com"
]
运行服务
这里以MySQL为例,简单介绍一下使用docker启动服务。
打开Windows PowerShell,输入命令
docker pull mysql:8.0.29
等待下载安装完成即可,大概有400多M,可能需要下载几分钟。
下载完成后,输入如下命令查看
docker images
接着我们就可以通过docker启动MySQL服务了,输入如下命令即可
css
docker run --name mysql -d -p 3306:3306 mysql:8.0.29
打开Docker Desktop 可以看到MySQL服务已启动成功
当然这样我们只是简单的启动MySQL,如果想将数据持久化,方便后期迁移,我们需要将MySQL的配置及数据文件映射到宿主机中。
在Docker Desktop中将启动的容器删掉,打开Windows PowerShell 使用如下命令启动MySQL。
javascript
docker run --restart=always --name mysql --privileged=true -d -p 3306:3306 -v D:\Docker\MySQL\conf\my.cnf:/etc/mysql/my.cnf -v D:\Docker\MySQL\logs:/logs -v D:\Docker\MySQL\data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql:8.0.29
命令解析:
--restart=always: 重启docker时,自动启动MySQL
--privileged=true: 赋予容器操作权限
--name mysql:将容器名定义为mysql
-p 3306:3306 :将 windows 的 3306 端口映射到该 docker 容器的 3306 端口上(前一个 3306 是 windows的,后一个是 docker 容器的)
【-v】:就是目录挂载的意思,windows无法直接访问 docker 容器中的文件,可以使用该命令将 docker 容器中的文件映射到 windows目录中;
-v D:\Docker\MySQL\conf\my.cnf:/etc/mysql/my.cnf :将 docker 容器的配置文件,映射到 windows中的D:\Docker\MySQL\conf\my.cnf
-v D:\Docker\MySQL\logs:/logs -v D:\Docker\MySQL\data:/var/lib/mysql: 将容器的日志文件和数据文件映射到window中
-e MYSQL_ROOT_PASSWORD=123456:-e 设置 mysql 的参数,此处是设置 mysql root 用户的密码为123456;
MySQL启动好后,我们可以通过Docker Desktop查看启动的容器及日志和一些基本配置等。
到这里我们就完成了MySQL的启动,我们可以通过客户端连接MySQL进行一些操作了,连接地址127.0.0.1,端口3306,账号root,密码123456
第一次可能比较慢,熟悉了之后就非常快了,比在本地直接安装配置要快的多,而且一些软件安装配置起来非常繁琐,会浪费很多不必要的时间。还有很多开源的应用提供docker版本,掌握了这个方法后,可以很快的安装这些应用来验证和使用,用户体验直接上升一个数量级。