目录

  • 一、前言
  • 二、安装 docker desktop
    • 2.1 环境准备
      • 2.1.1 配置wsl
      • 2.1.2 注册一个 dockerhub 账号 和 国内云厂商 容器服务
    • 2.2 安装 Desktop
    • 2.3 Docker Desktop 的配置
      • 2.3.1 wsl 数据存储路径
      • 2.3.2 配置代理
      • 2.3.3 测试拉取并运行镜像
  • 三、搭建自己的开发服务器
  • 四、后言:Docker 在现在开发的重要性

文章字数:约2300
阅读大约需要时间:10min

一、前言

博客-Docker-搭建可用SSH访问的centos镜像

2年前我写了一篇 关于如何在本地安装Docker 的教程),但是当时安装 Docker Desktop 还需要开启 hyper-v 或者是安装 toolbox 才能开启虚拟化。这两种情况下配置各有不同,而且也都需要配置环境变量,安装过程还是比较麻烦的。

但是现在有了 wsl2,在 windows 上使用 Docker 开发 更加方便了。本质上,wsl2 还是依赖hyper-v 技术,启动速度不慢,也不需要单独安装其他虚拟机,配置起来也更加方便。

不过wsl2 的方便性可以说是锦上添花,docker 最大的好处,我认为还是在相比虚拟机来说,它拥有和git 类似的仓库管理、版本等属性,有了这些基础,才有了作为开发工具的高效性。这才是我真正推荐它的原因。

这篇博客主要就是帮大家避坑,把docker desktop 安装之后需要预设的配置尽量说明清楚,让大家可以安心地 在win10 系统上安装 Docker Desktop,以及提供一个基础开发镜像,帮助大家以后学习新技术能够更加方便。

wsl官网

二、安装 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的安装路径

工具下载地址

迁移方式:先确认需要迁移的 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-sshdocker 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 启动命令即可。

扩展文章: vscode 使用技巧

四、后言:Docker 在现在开发的重要性

现在不仅是信息爆炸的时代,更是技术爆炸的时代。底层技术虽然没有太大的变化,但是上层应用技术基本是2-3年一更新。
伴随而来的,不仅仅是我们自己知识库的更新,还有日益膨胀的操作系统。是的,有的时候我们需要在电脑上跑后台前端服务,有的时候也要学习其他基础组件,可能还要顺应潮流学一点机器学习。各种技术都需要安装一些依赖。不管是 mac 还是 windows,一旦你换一台电脑,迁移这些环境都是很费成本的。

因此 现在项目都推崇 协同开发的模式,所有代码、文档 都在云端统一管理。但是对个人来说,这种模式也慢慢变得必要起来。

所以我推荐 Docker 的原因就这么简单,只是镜像管理和环境管理的方便性,对于程序员来说就足够爱上它了。而且它也远不止这些内容,它的原理,以及 k8s 的实现,也是值得我们去学习的。共勉。

Docker-Docker Desktop 安装教程,以及推荐Docker作为学习工具的理由相关推荐

  1. mysql8.0.17下载教程_Mysql8.0.17安装教程【推荐】

    Mysql8.0.17安装教程[推荐] 1.因为系统重装 又双叒叕开始了装myql数据库 2.解压到你想安装的地方 3.解压完是没有图红色框中的文件的 需要你配置my.ini文件 data文件夹是等会 ...

  2. ArcGIS for Desktop入门教程_第八章_Desktop学习资源 - ArcGIS知乎-新一代ArcGIS问答社区...

    ArcGIS for Desktop入门教程_第八章_Desktop学习资源 - ArcGIS知乎-新一代ArcGIS问答社区 原文:ArcGIS for Desktop入门教程_第八章_Deskto ...

  3. 【docker系列】docker深入浅出之安装教程

    Docker简介 Docker 是一个开源的应用容器引擎,基于 GO语言并遵从Apache2.0协议开源. Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布到任 ...

  4. 蚂蚁笔记 linux安装教程,群晖docker安装蚂蚁笔记安装教程

    原标题:群晖docker安装蚂蚁笔记安装教程 背景 偶然看见其他网友群晖一个 用途 当然是安装镜像了,需要安装2个 映像 mongo与leanote 2.直接创建mongo容器,端口27017 其他默 ...

  5. Docker版Dzzoffice安装教程

    背景 初期我是用的window直接安装的dzzoffice,不过很可惜不好迁移,一旦有机器迁移,同样的过程要做很多遍,各种配置环境其实都是没有必要的反复工作,基于以上情况,特此为了转成docker版并 ...

  6. docker版Jinkens安装教程

    [doc] 安装 docker安装 jenkins的docker官网地址 可以在这里找到拉取指令 我比较推荐大家去jenkins docker Github官方仓库安装 安装并运行指令 docker ...

  7. Centos7下安装Docker(详细安装教程、傻瓜式安装)

    一,Docker简介 百科说:Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙 ...

  8. zabbix安装 (zabbix在docker下快速安装教程)

    1, centos 安装docker 查看centos版本:cat /etc/redhat-release 安装 :yum install docker-latest 启动服务 :systemctl ...

  9. docker常用软件安装教程

    Docker Docker官方网址: https://docs.docker.com/ 英文地址 Docker中文网址: http://www.docker.org.cn/ 中文地址 Docker是基 ...

最新文章

  1. [软件工程]技术规格说明书
  2. 掌握图神经网络GNN基本,看这篇文章就够了
  3. ashx+jQuery,一个轻量级的asp.net ajax解决方案
  4. android 浏览器源码分析,从源码出发深入理解 Android Service
  5. linux批量部署war工具,Linux批量部署工具Expect
  6. 计算机考研四大金刚,“四大金刚”考研一个都不少
  7. java中容易被忽视的基本概念
  8. 电子表格中的数据清洗
  9. android studio按键精灵,51模拟器怎么连接按键精灵 51安卓模拟器按键精灵连接教程...
  10. c语言dll导出函数举例,DLL中导出函数的两种方式(dllexport与.def文件)
  11. 什么是驻点和拐点_极值点、驻点、拐点的区别
  12. 彻底解决mac os 下javac Java命令行工具乱码问题
  13. Ubuntu 如何更新软件源(阿里源、华为源、清华源等)
  14. 每日一题【56】导数-公切线问题
  15. matlabrobert锐化_Matlab图像处理系列3———空间域锐化滤波器
  16. 计算机二进制存储单位,计算机中的存储单位你清楚吗
  17. pd.set_option 问题
  18. 【剑指offer刷题】排序算法
  19. spark分布式矩阵采坑记
  20. 超详细Tarjan算法总结,求强连通分量,割点,割边,有重边的割边

热门文章

  1. eclipse java开发插件_10大Java开发必备的Eclipse插件
  2. 华科计算机专业就业认可度,华科的4大王牌专业,就业率薪资都超高,赶紧来看看...
  3. Linux下C语言实现UDP Socket编程
  4. %3c故乡%3e中语言描写的作用是什么,语言描写的作用
  5. 使用Myeclipse搭建Maven项目
  6. 连通域分析之种子填充法
  7. 温度记录仪校准——三点校准
  8. Vins-Mono+Fusion 学习笔记(二)
  9. JavaScript百炼成仙 1
  10. Android蓝牙增加自定义按键