Docker-Docker Desktop 安装教程,以及推荐Docker作为学习工具的理由
目录
文章字数:约2300
阅读大约需要时间:10min
本文自建博客地址
一、前言
2年前我写了一篇 关于如何在本地安装Docker 的教程),但是当时安装 Docker Desktop 还需要开启 hyper-v 或者是安装 toolbox 才能开启虚拟化。这两种情况下配置各有不同,而且也都需要配置环境变量,安装过程还是比较麻烦的。
但是现在有了 wsl2,在 windows 上使用 Docker 开发 更加方便了。本质上,wsl2 还是依赖hyper-v 技术,启动速度不慢,也不需要单独安装其他虚拟机,配置起来也更加方便。
不过wsl2 的方便性可以说是锦上添花,docker 最大的好处,我认为还是在相比虚拟机来说,它拥有和git 类似的仓库管理、版本等属性,有了这些基础,才有了作为开发工具的高效性。这才是我真正推荐它的原因。
这篇博客主要就是帮大家避坑,把docker desktop 安装之后需要预设的配置尽量说明清楚,让大家可以安心地 在win10 系统上安装 Docker Desktop,以及提供一个基础开发镜像,帮助大家以后学习新技术能够更加方便。
二、安装 docker desktop
2.1 环境准备
2.1.1 配置wsl
前提:本机已经安装了 wsl (参考官方教程,使用docker 到第五步 Set WSL 2 as your default version完成就可以了。最新版本的win10 应该是自带的)
检查wsl 是否有安装:
到windows 功能中查找选项:适用于linux 的 windows 子系统
然后是限制 wsl 使用的资源:默认情况下,一旦你开启的镜像需要比较多资源,系统资源就会被直接吃满。
所以一定要记得设置wsl 占用资源配置,配置方式如下:
Win+R 然后输入 %UserProfile% 进入用户文件夹
然后编辑 .wslconfig 输入以下内容:(具体数值根据实际情况调整)
[wsl2]
memory=4GB
swap=5GB
processors=5
localhostForwarding=true
memory: 内存
swap: 虚拟内存
processors: 处理器数量,当前电脑的processor 数量可以通过 wmic 指令获取
LocalhostForwarding: 允许本地通过 localhost 访问 wsl,默认就是开启
更多参数的说明
然后重启 lxss manager (即wsl服务)
net stop LxssManager
net start LxssManager
最后是设置wsl 的数据存储路径,这个在安装 Docker Desktop 完成之后可以添加上去,参考下面的说明。
2.1.2 注册一个 dockerhub 账号 和 国内云厂商 容器服务
账号本身 不影响 Docker Desktop 启动 ,但是还是建议体验一下容器镜像服务。容器镜像管理的方式类似git 代码,可以把自己后续学习其他技术的过程中 ,搭建好的镜像提交到云端,做备份用。也方便共享。
下面几个镜像服务提供商,个人版本都是免费的。不过主推还是国内的镜像服务,传输速度快一点。
阿里云镜像服务(前言中引的博客中有说明注册方式)
腾讯云镜像服务
dockerhub(建议开启代理访问)
2.2 安装 Desktop
首先从官网下载 最新版本,直接安装即可
安装完成之后,可以先测试是否能正常启动,其他配置可以慢慢来改,kubernetes 也不急着安装。
2.3 Docker Desktop 的配置
2.3.1 wsl 数据存储路径
第一次成功启动 docker desktop 之后,你可以在 C:\Users\用户名\AppData\Local\Docker\wsl\data 这个目录下,找到ext4 文件,它就是 wsl 使用的虚拟机文件,我们使用docker 的所有操作和下载的所有文件,都会在这个目录中执行。
因此如果默认系统分了系统盘和数据盘,或者是我们有其他空间更大的硬盘可选,那么有必要将 这个ext4盘文件 进行迁移。
更新:20221008 发现一个工具可以帮我们快速迁移,比之前使用 wsl 指令,还需要先导出,再导入的操作稍微简单一些
迁移方式:先确认需要迁移的 wsl 名称:
./LxRunOffline.exe list
然后迁移:(迁移需要一定时间)
./LxRunOffline.exe move -n docker-desktop-data -d 'D:\wsl'
== 以下是旧的迁移方式 ==
迁移步骤:首先退出 docker desktop ,并检查docker desktop 对应的虚拟机的状态,应该都要是关闭状态
wsl --list -v
wsl --export docker-desktop-data "C:\Users\用户名\AppData\Local\Docker\wsl\data\docker-desktop-data.tar"
将目前的wsl 磁盘文件导出到指定压缩文件中
wsl --unregister docker-desktop-data
卸载docker-desktop-data服务
wsl --import docker-desktop-data "D:\docker\wsl\data" "D:\docker\wsl\docker-desktop-data.tar" --version 2
导入刚才导出的 wsl 磁盘文件
最后,重启 docker desktop,正常来说:
① docker 可以正常启动
② 原目录的 ext4 文件没有了(Distro 下面也有一个 ext4 文件,这个没关系)
2.3.2 配置代理
代理基本是开发过程中必备的,但是如果你使用的镜像服务是国内的,那么提交、下载镜像的时候又不应该走代理,所以需要在代理上额外配置一下:
如:使用阿里云镜像的代理配置
localhost,127.0.0.1,*.aliyuncs.com
2.3.3 测试拉取并运行镜像
这里我们测试一个可直接通过 ssh 连接的镜像:jdeathe/centos-ssh
Git地址
docker pull jdeathe/centos-ssh
docker run -d --env "SSH_PASSWORD_AUTHENTICATION=true" --env "SSH_USER=centos" --env "SSH_USER_PASSWORD=test123" --name ssh.1 -p 30022:22 jdeathe/centos-ssh
除了启动命令的学习,这个仓库提供的Dockefile 非常标准化,是直接基于centos 原生镜像 在其基础上改的,从Dockerfile中也能看到非常多标准化的操作,想要学习 centos 原生镜像初始化细节的可以从这个项目的Dockerfile中了解更多细节。
三、搭建自己的开发服务器
这里提供一个自己平时开发用的镜像,里面安装了一些开发语言的基本环境
其中,语言下载的依赖(比如 maven、gopath)都统一放在 /opt/path 目录下,安装的组件都放在 /opt/modules 下。
项目git地址(smiecj/docker-centos)
镜像下载和启动方式:
# 构建一个包含 golang、python、java 和 npm 的开发镜像
REPO=mzsmieli nohup make build_dev_full
# 运行镜像 (也可以直接运行 将从 docker hub 下载镜像)
docker run -it -d -p 2222:22 mzsmieli/centos:base8_dev_full_1.0
启动成功后,就可以进行自由的开发了。如果需要在容器内部编写代码,这里再推荐 vscode + ssh + 本地免密登录配置的开发模式。修改之后,在容器内部代码变更可以立刻生效,也可以在 vscode 中直接通过 命令行 执行操作
如果需要启动其他服务,开启更多端口映射,修改 Dockerfile 和 docker run 启动命令即可。
四、后言:Docker 在现在开发的重要性
现在不仅是信息爆炸的时代,更是技术爆炸的时代。底层技术虽然没有太大的变化,但是上层应用技术基本是2-3年一更新。
伴随而来的,不仅仅是我们自己知识库的更新,还有日益膨胀的操作系统。是的,有的时候我们需要在电脑上跑后台前端服务,有的时候也要学习其他基础组件,可能还要顺应潮流学一点机器学习。各种技术都需要安装一些依赖。不管是 mac 还是 windows,一旦你换一台电脑,迁移这些环境都是很费成本的。
因此 现在项目都推崇 协同开发的模式,所有代码、文档 都在云端统一管理。但是对个人来说,这种模式也慢慢变得必要起来。
所以我推荐 Docker 的原因就这么简单,只是镜像管理和环境管理的方便性,对于程序员来说就足够爱上它了。而且它也远不止这些内容,它的原理,以及 k8s 的实现,也是值得我们去学习的。共勉。
更多推荐
所有评论(0)