Hyper-V + Docker 容器化部署与应用

基于 Hyper-V 与 Docker 的容器化部署与应用


前言

本文仅提供 Hyper-V 与 Docker 最低限度应用的指导,详细内容请参考官方文档

关于 Hyper-V

Hyper-V 提供 硬件虚拟化。 这意味着每个虚拟机都在虚拟硬件上运行。 Hyper-V 允许你创建虚拟硬盘驱动器、虚拟交换机以及许多其他虚拟设备,所有这些都可以添加到虚拟机中。

  • 优势

相比传统虚拟机,Hyper-V 极大地 减少发送 I/O 请求所需的开销。使高 I/O 工作负载的 CPU 开销大大降低。

  • 局限

需要使用 GPU 进行处理的游戏或应用程序可能无法良好运行。

运行环境

宿主机
  • Windows Server 2019 x64
虚拟机

Hyper-V 的启用

Windows10 已经附带虚拟组件 Hyper-V
默认情况下 Hyper-V 组件并没有被启用,需手动启用。

  1. 服务器管理器 > 添加角色和功能
image.png
  1. 勾选 Hyper-V,待安装完成后重启系统

Hyper-V 虚拟机创建

  • 以宿主机 Windows Server 2019 + 虚拟机 Ubuntu 20.04.1为例:

  • 开始 > Windows 管理工具 > Hyper-V 管理器

image.png
  • Hyper-V 管理器 > 服务器-右键 > 新建 > 虚拟机
image.png
  • 指定名称和位置
image.png
  • 指定虚拟机代数

由于 Hyper-V 第二代虚拟机的兼容性尚不明确,此处建议选择第一代虚拟机

image.png
  • 分配内存

此处填写虚拟机所需的启动内存用量,强烈建议勾选上 为此虚拟机使用动态内存

关于 Hyper-V 动态内存管理

动态内存管理 是 Hyper-V R2 提供的一项新功能和特性,目前只有Windows Server 2008 R2 Service Pack 1((SP1)以上版本(Windows Server 2012)支持该功能,该功能能够自动平衡服务器上运行的虚拟机所占用的物理内存大小。此功能可以在管理员针对不同虚拟机所指定的内存范围内,根据虚拟机中的应用优先级来 自动调整虚拟机对物理内存的占用大小,在应用性能和内存占用大小方面进行自动平衡并达到性能优化的目的。

image.png
  • 配置网络

暂不配置,网络相关配置详见后文

image.png
  • 连接虚拟硬盘
image.png
  • 安装选项

选择 从可启动的 CD/DVD-ROM 安装操作系统,并选择已下载好的系统镜像文件。

image.png
  • 完成虚拟机创建
image.png

安装 Ubuntu

  • 选择语言
image.png
  • 选择键盘布局
image.png
  • 网卡配置

默认即可

image.png
  • 代理配置

不配置代理

image.png
  • Ubuntu 镜像配置

此处建议使用 清华大学 Ubuntu 镜像https://mirrors.tuna.tsinghua.edu.cn/ubuntu

image.png
  • 硬盘选择

默认即可

image.png
  • 硬盘分区

默认即可

image.png
  • 服务器相关信息配置

务必牢记初始账户与密码

image.png
  • 安装 OpenSSh server

为便于未来远程终端操作与文件传输,建议安装。

image.png
  • 安装第三方常用工具包

为容器化部署作准备,此处可选 microk8sdocker 进行安装

image.png
  • 待安装完成后重启虚拟机
image.png

Hyper-V 网络配置

  • Hyper-V 管理器 > 服务器-右键 > 虚拟交换机管理器
image.png
  • 选择虚拟交换机类型
关于 Hyper-v 虚拟交换机类型
  • 外部:虚拟机可以连接外部外网(与宿主机的网络相同),允许与其他虚拟机互相通信。
  • 内部:只能在虚拟机之间或者虚拟机与宿主机之间进行网络通信,无法连接外部网络。
  • 专用:虚拟机与虚拟机之间的局域网,宿主机无法对其访问。

此处默认可选用 外部 类型。

如果宿主机不是 DHCP 动态 IP 而是静态 IP 网络配置的情况下(不进行新的 IP 配置),使用 外部 类型在可能会导致宿主机与虚拟机都无法连接外部网络。此情况下,应选择使用 内部 类型,并将宿主网络共享至内部虚拟交换机。

PS:此处以 内部 类型为例

image.png
  • 创建虚拟交换机
image.png
  • 虚拟机-右键 > 设置
image.png
  • 网络适配器

在网络适配器一栏选择刚刚新建的虚拟交换机

image.png
  • 网络连接 > 带有外部网络连接的网卡-右键 > 属性
image.png
  • 属性 > 共享

勾选 允许其他网络用户通过此计算机的 Internet 来连接允许其他网络用户控制或禁用共享的 Internet 连接,并在 家庭网络连接 中选择刚刚创建的内部虚拟交换机。

image.png
  • 进入虚拟机,确认外部网络对内部虚拟交换机的共享已经完成
image.png
  • 启动虚拟机确认安装完成

此前选择的第三方工具会在首次启动后联网下载安装,待安装完成后即可使用

image.png

Hyper-V 虚拟机与宿主机的文件传输

Linux

在 Linux 下宿主机可直接使用 SSH 协议对虚拟机进行终端操作与文件传输

  • 宿主机上生成 ssh 公钥与密钥
ssh-keygen
  • 虚拟机上生成 ssh 公钥与密钥
ssh-keygen
  • 在虚拟机内配置宿主机公钥
cd ~/.ssh
nano authorized_keys
image.png
  • 修改虚拟机 sshd 配置
cd /etc/ssh
nano sshd_config

配置以下内容

PasswordAuthentication no
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
image.png
  • 重启 sshd 服务
service sshd restart
  • 待服务重启完成后,即可使用 puTTY 或 MobaXterm 等支持 ssh 协议的连接工具进行操作
image.png

Windows

在 Windows 下有两种文件传输方式

1. 共享文件夹
  • 在宿主机上选择文件夹进行共享
image.png
  • 在虚拟机上添加宿主机的共享文件夹
image.png
  • 完成配置后即可通过共享文件夹进行宿主机与虚拟机的文件传输
image.png
2. RDP
  • 虚拟机开启远程桌面功能
image.png
  • 宿主机即可通过远程桌面 RDP 连接虚拟机进行文件传输
image.png

Docker 容器化部署

关于 Docker

Docker 是一个开放平台,用于开发应用、交付(shipping)应用、运行应用。 Docker允许用户将基础设施(Infrastructure)中的应用单独分割出来,形成更小的颗粒(容器),从而提高交付软件的速度。

Docker 加速镜像配置

  • 添加当前用户至 docke 用户组(可选)
sudo usermod -aG docker [用户名]
  • 配置 docker 镜像加速器
sudo mkdir -p /etc/docker
sudo nano /etc/docker/daemon.json

向 daemon.json 文件添加以下内容:

{
  "registry-mirrors": [
    "https://hub-mirror.c.163.com",
    "https://mirror.baidubce.com"
  ],
  "log-opts": {"max-size":"500m", "max-file":"3"}
}
image.png
  • 修改完成后重启 docker 服务:
sudo systemctl restart docker

定义 Docker 容器

关于 Docker 容器

Docker 容器与虚拟机类似但在原理上不同。容器是将操作系统层虚拟化,具有便携性、能够高效地利用服务器。由于容器的标准化,因此它可以 无视基础设施的差异,部署到任何一个地方。

关于 Docker Compose

Docker Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Docker Compose,可以使用 YML 文件来配置应用程序需要的所有服务。并且使用一个命令就可以从 YML 文件配置中创建并启动所有服务。

  • 新建 docker-compose.yml 文件
mkdir ~/gitlab
nano ~/gitlab/docker-compose.yml
  • 填写容器定义内容
version: '3.5'
services:
  gitlab:
    image: 'gitlab/gitlab-ee:latest'
    restart: always
    hostname: 'gitlab.example.com'
    environment:
      GITLAB_OMNIBUS_CONFIG: |
        external_url 'http://192.168.7.225:8929'
        gitlab_rails['gitlab_shell_ssh_port'] = 2224
    ports:
      - '8929:8929'
      - '2224:22'
    volumes:
      - '/opt/gitlab/config:/etc/gitlab'
      - '/opt/gitlab/logs:/var/log/gitlab'
      - '/opt/gitlab/data:/var/opt/gitlab'
    logging: 
      options: 
        max-size: 1g
    networks:
      - gitlab

  gitlab-runner:
    image: gitlab/gitlab-runner:alpine
    restart: unless-stopped
    depends_on:
      - gitlab
    privileged: true
    volumes:
      - /opt/gitlab-runner/config:/etc/gitlab-runner
      - /opt/gitlab-runner/run/docker.sock:/var/run/docker.sock
      - /opt/gitlab-runner/docker:/bin/docker
    logging: 
      options: 
        max-size: 1g
    networks:
      - gitlab

networks:
  gitlab:

启动 Docker 容器

  • 启动容器
cd ~/gitlab
sudo docker-compose up
image.png
  • 待首次镜像拉取完成容器启动后即可访问服务
image.png

相关链接


©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 162,306评论 4 370
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 68,657评论 2 307
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 111,928评论 0 254
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,688评论 0 220
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 53,105评论 3 295
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 41,024评论 1 225
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,159评论 2 318
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,937评论 0 212
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,689评论 1 250
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,851评论 2 254
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,325评论 1 265
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,651评论 3 263
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,364评论 3 244
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,192评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,985评论 0 201
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 36,154评论 2 285
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,955评论 2 279

推荐阅读更多精彩内容