一、Docker Desktop 的设置代理
注意:都是http, 第二个写https会出错
二、Docker Desktop 的配置
2.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.2 配置代理
代理基本是开发过程中必备的,但是如果你使用的镜像服务是国内的,那么提交、下载镜像的时候又不应该走代理,所以需要在代理上额外配置一下:
如:使用阿里云镜像的代理配置
localhost,127.0.0.1,*.aliyuncs.com
2.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
123
除了启动命令的学习,这个仓库提供的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
12345
启动成功后,就可以进行自由的开发了。如果需要在容器内部编写代码,这里再推荐 vscode + ssh + 本地免密登录配置的开发模式。修改之后,在容器内部代码变更可以立刻生效,也可以在 vscode 中直接通过 命令行 执行操作
如果需要启动其他服务,开启更多端口映射,修改 Dockerfile 和 docker run 启动命令即可。
四、后言:Docker 在现在开发的重要性
现在不仅是信息爆炸的时代,更是技术爆炸的时代。底层技术虽然没有太大的变化,但是上层应用技术基本是2-3年一更新。
伴随而来的,不仅仅是我们自己知识库的更新,还有日益膨胀的操作系统。是的,有的时候我们需要在电脑上跑后台前端服务,有的时候也要学习其他基础组件,可能还要顺应潮流学一点机器学习。各种技术都需要安装一些依赖。不管是 mac 还是 windows,一旦你换一台电脑,迁移这些环境都是很费成本的。
因此 现在项目都推崇 协同开发的模式,所有代码、文档 都在云端统一管理。但是对个人来说,这种模式也慢慢变得必要起来。
所以我推荐 Docker 的原因就这么简单,只是镜像管理和环境管理的方便性,对于程序员来说就足够爱上它了。而且它也远不止这些内容,它的原理,以及 k8s 的实现,也是值得我们去学习的。共勉。