工作需要,搭建 nomad 环境。
按照步骤一步步搭建环境很简单,但是我认为如果能够了解搭建环境时的每一步我都在干什么,才是真正地学习,而非照葫芦画瓢,遇到问题时也会更加从容。
(虽然写完这篇博客之后我觉得我学到的东西还是很浅显…所以仅作为个人学习记录。)
所以无知的我,准备从了解什么是 WSL 、docker 和 nomad开始。
什么是 WSL
WSL 的全称是 Windows Subsystem for Linux 的缩写,即 linux 版的 windwos 子系统。起初看到 使用 WSL 安装 Ubuntu 时,我欣喜若狂,这岂不是就意味着不需要再安装 VM 什么的了吗?需要安装双系统什么的需求也迎刃而解了(还记得大一那年为了双系统捣鼓两天的我, 现在一个小时就能搞定…),可以在享受 windows 稳定的同时减少了许多折腾!
官网介绍:什么是适用于 Linux 的 Windows 子系统?
官网里的介绍为
适用于 Linux 的 Windows 子系统可让开发人员按原样运行 GNU/Linux 环境 - 包括大多数命令行工具、实用工具和应用程序 - 且不会产生传统虚拟机或双启动设置开销。
WSL 2 是适用于 Linux 的 Windows 子系统体系结构的一个新版本,它支持适用于 Linux 的 Windows 子系统在 Windows 上运行 ELF64 Linux 二进制文件。 它的主要目标是提高文件系统性能,以及添加完全的系统调用兼容性。
这一新的体系结构改变了这些 Linux 二进制文件与Windows 和计算机硬件进行交互的方式,但仍然提供与 WSL 1(当前广泛可用的版本)中相同的用户体验。
单个 Linux 分发版可以在 WSL 1 或 WSL 2 体系结构中运行。 每个分发版可随时升级或降级,并且你可以并行运行 WSL 1 和 WSL 2 分发版。 WSL 2 使用全新的体系结构,该体系结构受益于运行真正的 Linux 内核。
WSL 的安装
附上 WSL 的使用安装教程:安利 WSL Linux 子系统
WSL 的卸载
既然安装了,那必然就要为卸载做好准备…
- 查看当前环境安装的 WSL
wsl --list
- 注销(卸载)
wsl --unregister
什么是 Docker
Docker 官网
Github Docker 源码
关于 Docker 简单易懂的介绍
文章中将 容器 比为集装箱,操作系统比为港口,如果说一个程序运行时依赖的各种库以及配置为容器,将一个程序和它运行时的依赖打包为一个容器,是否就可以保证在不同配置的操作系统里,运行该程序得到的表现都一致?
以我粗略浅显的理解,容器的概念可以理解为隔离了操作系统与应用程序的运行环境,运行在操作系统之上的抽象应用层。而 Docker 是容器的一种实现。
所以关于 Docker,我可以得出一个结论:Docker 是一个用 Go 语言实现的开源应用容器引擎,它可以将程序以及程序所有的依赖打包到一个轻量级、可移植的容器中,保证程序在任何环境下的表现一致,不再依赖于操作系统的环境。
Docker 的安装
在网上找到了一篇博客,如下,介绍了安装 docker 的两种方式,第一个评论道出了我的疑惑,这两种方式有什么区别吗?
Win10 利用 WSL2 安装 docker 的 2种方式
Docker 的架构
Docker 使用客户端-服务器 (C/S) 架构模式,使用远程 API 来管理和创建 Docker 容器。
基本概念
如果使用面向对象的思维来理解,容器是对象,镜像是类,容器是要通过镜像来创建的。
镜像 Image
镜像时用于创建 Docker 容器的模板;相当于是一个 root 文件系统,也可以理解为是一个只读的静态模板,类似于在安装系统时的 .iso 文件。
容器 Container
容器时独立运行的一个或一组应用,是镜像运行时的实体。
镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的类和实例一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
仓库 Repository
一个 Docker Registry 中可以包含多个仓库(Repository);每个仓库可以包含多个标签(Tag);每个标签对应一个镜像。
通常,一个仓库会包含同一个软件不同版本的镜像,而标签就常用于对应该软件的各个版本。我们可以通过 <仓库名>:<标签> 的格式来指定具体是这个软件哪个版本的镜像。如果不给出标签,将以 latest 作为默认标签。
仓库用于保存镜像,可以理解为是一个代码仓库。
官方的 Docker Hub 提供了庞大的镜像集合供使用: Docker Hub
客户端 Client
Docker 客户端通过命令行或者其他工具使用 Docker SDK (https://docs.docker.com/develop/sdk/) 与 Docker 的守护进程通信。
主机 Host
一个物理或者虚拟的机器用于执行 Docker 守护进程和容器。
Docker Machine
Docker Machine是一个简化Docker安装的命令行工具,通过一个简单的命令行即可在相应的平台上安装Docker,比如VirtualBox、 Digital Ocean、Microsoft Azure。
Docker Machine 管理的虚拟主机可以是机上的,也可以是云供应商,如阿里云,腾讯云,AWS,或 DigitalOcean。
使用 docker-machine 命令,您可以启动,检查,停止和重新启动托管主机,也可以升级 Docker 客户端和守护程序,以及配置 Docker 客户端与您的主机进行通信。