将你的Windows,快速打造成Docker工作站!

手里的macbook因为键盘问题返厂维修了,只好抱起了久违的Windows。首先面临的,就是Docker问题。

docker好用,但安装麻烦,用起来也命令繁多。一个小白,如何打造舒适的docker环境,是一个非常有挑战的问题。

本文将手把手的教你怎么把docker方便的搞到windows上,打造一个好用的开发环境,并安装好用的管理工具。所以本文包含以下内容:

  1. 安装Windows10

  2. 安装WSL2环境

  3. 安装Ubuntu操作系统

  4. 安装Docker

  5. 安装portainer

  6. 使用方法

篇幅较长,所以本文暂时杜绝废话。力求一气呵成,半小时内手握白富美。

1. 安装WSL2

1.1 安装Windows Terminal

在远程连接其他Linux的时候,我通常使用Xshell,就因为它长得比较漂亮耐看。

在Windows上,就可以安装Windows Terminal。有点类似于MacOS上的iTerm,可以说是Windows下最舒适的终端。

安装Windows Terminal需要从应用商店去获取,就是下面这个按钮。


在搜索框里搜索Windows Terminal,即可找到这个软件。比较人性化的一点是,它不像Mac的应用商店一样,需要你先准备一个账号。WT不需要登录即可获取。

如果你的页面一直打转也不要紧,关闭重新打开几次就好了。由于众所周知的原因,国外网站就没有几个不转圈的。


1.2 开启WSL2

如下图,在控制面板,找到程序选项,点击 “启用或关闭Windows功能”。

从弹出的对话框里,划到最下边,然后给“适用于Linux的Windows子系统“,打勾,完事!

要启用WSL2,必须要把Windows10升级到最新版本才可以。在Powershell中,执行下面命令,切换成WSL2版本。

wsl --set-default-version 2

2 安装Ubuntu子系统

从应用商店安装Ubuntu系统,这个系统将会以软件的形式存在。我这里选择的是LTS版本,可以看到给它打分的人并不多,可能大多数都是像我一样没有微软账号的游客。


此时,神奇的事情发生了。在我们的Windows Terminal右上角,有一个向下的箭头,点击它,就可以看到刚刚安装的Ubuntu。

在Windows上离着Linux,只差一次点击而已。


进入Linux系统之后,我们就可以像配置一个普通Linux一样配置这台机器。

首先把ubuntu的软件源给换掉。编辑/etc/apt/sources.list文件,把它的内容换成下面的源。

deb https://mirrors.ustc.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ bionic-proposed main restricted universe multiverse

然后,安装最好用的oh-my-zsh。先用sudo apt install zsh安装shell终端,然后运行下面的命令。

sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

等待一小段时间,我们的终端颜值就更上一层楼了。

3. 安装Docker

安装Docker,直接从官方下载最新的Windows版本就可以了,不要下载一些其他平台的阿猫阿狗。地址在这里

https://www.docker.com/products/docker-desktop

一路next即可安装。

启动之后,点击设置,然后更改镜像仓库。

因为一些不可明说的原因,docker官方的镜像仓库无法访问。你可以从下面这些挑选一个,或者直接全部写上 。

["https://registry.docker-cn.com","https://dockerhub.azk8s.cn","https://reg-mirror.qiniu.com","http://hub-mirror.c.163.com","https://docker.mirrors.ustc.edu.cn"
]

完事之后,不要忘了 apply & restart 重启生效一下。

此时在右下角,就出现了Docker的小图标,非常的赏心悦目。

3. 安装 portainer

有很多Docker的管理工具,但我独爱portainer,原因就是它好用,而且是基于web的。它不仅能管理单机上的docker,还能够管理局域网中的集群,只要你使用-H 0.0.0.0:2375把它监听在网络上。

我们来看它的一张图。


可以说,docker命令能搞的事情,在这个web应用上,都能搞。但首先我们得把它安装上去。

打开我们的wsl2的Ubuntu系统,此时你会发现,已经有了docker命令。我们在终端输入以下命令行。

docker volume create portainer_data
docker run -d -p 9000:9000 -p 8000:8000 --name portainer --restart always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer

稍等片刻,portainer就启动成功了。这得益于我们把镜像仓库切换到国内的原因。

访问 http://localhost:9000 端口,将出现portainer的设置界面。


在模板页面,有很多常见的软件应用,直接点击部署,就可以将软件安装在系统上。如果你是作为开发机使用,那么推荐使用docker的host模式,相当于使用主机的网络,和安装一个平常的软件没什么区别。

比如我想要一个MySQL数据库,就不需要再跑到MySQL官方下载一个,然后进入繁杂的安装程序中。直接在Docker上搞一个就可以了。

点击小箭头,可以直接在web上进入Docker虚拟环境的命令行终端,非常的方便。如果你平常要调研的额软件和中间件非常的多,想要快速体验它的功能效果,这不得不说是个非常好用的功能。

End

到此为止,我们的Docker开发环境就搭建完毕了。

如果你是一个命令行控,可以直接使用WSL终端提供的docker命令进行操作。但如果你对docker并不是非常熟悉,那么就可以使用portainer实现对Docker的管理。

人生苦短,如果把时间都花费在安装软件上,那是多么一件悲哀的事情。

搞定Docker,以后安装软件,只需要在google搜一下软件docker启动的命令就可以了。

省时省力,不易出错。即使你的公司没有虚拟化环境,docker作为一个开发工具,依然有它的价值。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/544753.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HTML5游戏引擎Egret发布2.0版 开发工具亦获更新

5月22日在北京国际会议中心举办的HTML5游戏生态大会上,白鹭时代旗下游戏引擎Egret Engine发布2.0版,同时还发布了Flash转换HTML5工具Egret Conversion、HTML5游戏加速Egret Runtime 2.0、GUI可视化编辑器Egret Wing 2.0、骨骼动画工具DragonBones4.0、富…

DES和AES加密:指定键的大小对于此算法无效

“System.ArgumentException”类型的未经处理的异常在 mscorlib.dll 中发生 其他信息: 指定键的大小对于此算法无效。 在看DES和AES加密的时候,找了个加密的Demo,自己试验的时候总是报:指定键的大小对于此算法无效 的错误。 原因为&#xf…

软件测试 测试策略_测试策略| 软件工程

软件测试 测试策略Testing is a process of checking any software for its correctness. Various strategies are followed by the testers while checking for the bugs and errors in the software. Let us have a look at these strategies: 测试是检查任何软件的正确性的过…

漫画:什么是JVM的垃圾回收?

————— 第二天 —————————————————下面我们一起来研究这三个问题。问题1:哪些是需要回收的?首先我们需要知道如何哪些垃圾需要回收?判断对象是否需要回收有两种算法。一种是引用计数算法、一种是可达性分析算法。引用计…

C#日期格式

关于C#中日期DateTime的格式转换代码如下: PS:请忽略Log.v(); 这个是自定义的日志方法…… DateTime dt DateTime.Now; Log.v(dt.ToString("D"));//2017年1月23日 Log.v(dt.ToString("d"));//2017/1/23 Log.v(dt.ToString("…

48张图|手摸手教你性能监控、压测和调优

本文主要内容一、何为压力测试1.1、 大白话解释性能压测是什么:就是考察当前软件和硬件环境下,系统所能承受的最大负荷,并帮助找出系统的瓶颈所在。性能压测的目的:为了系统在线上的处理能力和稳定性维持在一个标准范围内&#xf…

java中intvalue_Java Float类intValue()方法与示例

java中intvalue浮动类intValue()方法 (Float class intValue() method) intValue() method is available in java.lang package. intValue()方法在java.lang包中可用。 intValue() method is used to return the value denoted by this Float object converted to type int (by…

JTable demo

简单讲就是在没有使用layout manager的时候用setSize,在使用了layout manager 的时候用setPreferredSize 并且setPreferredSize通常和setMinimumSize、setMaximumSize联系起来使用setSize()是你手动来设置组件的大小 Dimension 类封装单个对象中组件的宽度和高度&am…

C#操作Cookie

简单的存储Cookie和获取Cookie例子 public string SaveCookie(string name) {// 登陆成功要将必要数据存储到 Cookie 里HttpCookie httpCookie new HttpCookie("cookie");// 设置过期时间httpCookie.Expires DateTime.Now.AddHours(1);// 设置姓名httpCookie.Valu…

Java生成随机数的4种方式,以后就用它了!

作者 | 王磊来源 | Java中文社群(ID:javacn666)转载请联系授权(微信ID:GG_Stone)在 Java 中,生成随机数的场景有很多,所以本文我们就来盘点一下 4 种生成随机数的方式,以…

Java LinkedList addFirst()方法与示例

LinkedList addFirst()方法 (LinkedList addFirst() method) This method is available in package java.util.LinkedList. 软件包java.util.LinkedList中提供了此方法。 This method is used to insert an object at the initial or beginning stage of the linked list. 此方…

二层冗余网络引起的问题

1.广播风暴 环路会引起广播风暴 网络中主机会收到重复数据帧 2.MAC地址表震荡 环路引起的MAC地址表震荡,交换机死机 3.有可能收到重复的流量转载于:https://www.cnblogs.com/hotshotgg/p/4537817.html

Everything是如何搜索的

写在前面 使用了Everything之后,一直对他的搜索速度感兴趣,在网上也看了很多对其原理的揭秘,终于有空找了个源码研究了一下,原理就是对NTFS的USN特性进行使用。 原理 详细解释我参照别人家的博客来一段: 当扇区的文…

漫话:如何给女朋友解释String对象是不可变的?

String的不变性String在Java中特别常用&#xff0c;相信很多人都看过他的源码&#xff0c;在JDK中&#xff0c;关于String的类声明是这样的&#xff1a;public final class String implements java.io.Serializable, Comparable<String>, CharSequence { }可以看到&#…

XenServer 6.5实战系列之十一:Install Update For XenServer 6.5

为了保证XenServer主机的安全及功能的更新&#xff0c;在企业环境中我们需要定期的到Citrix官网或通过XenCenter进行下载和更新。今天我们会从在线和离线两种不同的方法进行Update的安装。更新补丁之前请务必阅读对应Update的相关资料、注意事项和做好备份。1. 离线安装更新在…

机器学习 属性_属性关系文件格式| 机器学习

机器学习 属性Today, we will be looking at the use of attribute relation file format for machine learning in java and we would be writing a small java code to convert the popularly used .csv file format into the arff (Attribute relation file format). This f…

C#标记废弃方法

一、普通用法 在C#中&#xff0c;如果一个方法我们不再使用&#xff0c;我们可以将其标记为“废弃”的方法&#xff0c;只需要在方法前&#xff0c;加一个[Obsolete]即可&#xff1b; [Obsolete] public void BiuBiuBiu(){// 嘿嘿嘿 }废弃方法并非不能使用&#xff0c;而是在…

阿里二面一问MySQL就开始野了,抓着底层原理不撒手啊!

最近项目增加&#xff0c;缺人手&#xff0c;面试不少&#xff0c;但匹配的人少的可怜。跟其他组的面试官聊&#xff0c;他也抱怨了一番&#xff0c;说候选人有点儿花拳绣腿&#xff0c;回答问题不落地&#xff0c;拿面试最常问的MySQL来说&#xff0c;并不只是懂“增删改查”、…

[转]“Ceph浅析”系列之(—)—Ceph概况

转载自&#xff1a;http://yizhaolingyan.net/?p11本文将对Ceph的基本情况进行概要介绍&#xff0c;以期读者能够在不涉及技术细节的情况下对Ceph建立一个初步印象。2.1 什么是Ceph&#xff1f;Ceph的官方网站Ceph.com上用如下这句话简明扼要地定义了Ceph&#xff1a;“Ceph…

关于C#监视剪贴板信息

##1、常规方法 在C#中&#xff0c;有一个常规检测剪贴板的方法&#xff0c;用的是 System.Windows.Forms.Clipboard&#xff1b; 使用起来很简单&#xff0c;代码如下&#xff1a; /// <summary> /// 设置剪贴板的文本内容 /// </summary> /// <param name&qu…