V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
dream4ever
V2EX  ›  Windows

Windows Server 是否适合用 Docker?

  •  
  •   dream4ever · 2022-08-23 16:42:15 +08:00 · 3786 次点击
    这是一个创建于 814 天前的主题,其中的信息可能已经有所发展或是发生改变。

    公司现有两台阿里云服务器,其中一台是七八年前买的,当时装的 Windows Server 2012 R2 。

    后来新开了一台作为备用服务器,装的是 Windows Server 2019 with Container 数据中心版 64 位中文版。

    之前也玩过 CentOS 和 Docker ,但是到了这台装了 Win 2019 的服务器上,发现 Docker 有各种问题。

    一开始是无法下载基于 Linux 创建的 Docker 镜像,按网上搜的方法改了 Docker 的配置之后,这个问题解决了,但是又出现了无法用基于 Linux 的镜像来启动容器的问题了,Google 了一番,尝试了各种方法也没能解决问题。

    现在就在想 Windows Server 是否适合用 Docker ?之前计划用 Docker ,是想让操作系统尽量“干净”,把 MySQL 、PHP 、Node.js 这样的软件安装在 Docker 中,就能够尽量少地影响操作系统。而且如果要升级软件的版本的话,或者需要在其他服务器上部署相同的软件环境,有 Docker 的话都会比较方便。

    但是在 Docker Hub 上搜索了一下,MySQL 、PHP 、Node.js 都没有基于 Windows 创建的镜像。而公司的环境决定了目前没有这个人力和时间来把操作系统切换到 CentOS/Ubuntu 下。

    PS:向公司申请付费购买云数据库之类的选择也暂不考虑,公司目前没有这个环境。

    那么这是否意味着如果要用 Windows Server ,还是只能保持现状,将各类软件都直接安装到操作系统中?

    18 条回复    2022-08-24 16:50:48 +08:00
    Kinnice
        1
    Kinnice  
       2022-08-23 16:51:26 +08:00
    不适合
    littlewing
        2
    littlewing  
       2022-08-23 16:51:32 +08:00
    windows 下的 docker 就是装了个 linux 虚拟机,然后在 linux 上装的 docker 吧
    或者你直接 hyper-v 装个 ubuntu ,然后跑 docker
    Kinnice
        3
    Kinnice  
       2022-08-23 16:53:00 +08:00
    用 Hyper-V 吧
    BugCry
        4
    BugCry  
       2022-08-23 16:57:24 +08:00 via Android
    在 docker 里面用数据库,各位 DBA 怎么看?
    ysc3839
        5
    ysc3839  
       2022-08-23 16:58:09 +08:00   ❤️ 1
    云服务器的 Windows 不适合用 Linux Docker ,因为是在虚拟机里运行的,而云服务器本身就是在虚拟机中运行的 (除非是独立服务器),嵌套虚拟化的性能不一定好。
    ltkun
        6
    ltkun  
       2022-08-23 16:58:55 +08:00
    docker 理论上是和操作系统没有关系的
    不然也就失去了 docker 的意思
    windows 的 WSL2 现在能很好的支持 docker 了
    试过很方便 主要主力系统不是 windows 偶尔进去看看
    前几天刚刚在 wls2 里面更新了 5.15 的内核
    zilongzixue
        7
    zilongzixue  
       2022-08-23 17:01:40 +08:00
    https://docker.easydoc.net/doc/81170005/cCewZWoN/lTKfePfP 可以是可以,不过生产数据库不建议上虚拟机
    pannanxu
        8
    pannanxu  
       2022-08-23 17:12:12 +08:00
    为什么不建议数据库放容器内
    dream4ever
        9
    dream4ever  
    OP
       2022-08-23 17:17:07 +08:00
    @pannanxu 性能会下降吧。
    dcsuibian
        10
    dcsuibian  
       2022-08-23 17:17:21 +08:00
    还是直接装吧,先拿个虚拟机练手,把操作步骤记下来
    如果熟悉 PowerShell 的话,再编个 Windows Container 的 Dockerfile
    anubu
        11
    anubu  
       2022-08-23 17:17:39 +08:00
    @ltkun Docker 不是虚拟机,理论上和操作系统强相关。原生运行的话,Windows 上的容器必须使用 Windows 版的镜像来创建运行,不是所有软件都有 Windows 版的镜像。
    不过,大部分个人用户在 Windows 上使用的是非原生 Docker ,本质上是在 Windows 中创建一个 Linux 虚拟机,然后运行 Linux 版本的 Docker 。
    ysc3839
        12
    ysc3839  
       2022-08-23 17:20:04 +08:00
    @ltkun 你想表达的可能是 Docker 和 Linux 发行版没有关系,这基本是对的。但是 Docker 和系统内核是有关系的,Docker 依赖系统提供的容器相关的 API ,比如 macOS 没提供容器 API ,就没有 macOS Docker 镜像。Docker 里面运行的软件也是要依赖某一内核的,比如 Windows Docker 镜像不能在 Linux 下跑,Linux Docker 镜像在 Windows 下需要虚拟机。
    timethinker
        13
    timethinker  
       2022-08-23 17:21:23 +08:00   ❤️ 2
    @pannanxu [生产] 数据库为了保证环境相对稳定,一般需要独占服务器,而且使用容器的主要目的在于部署和编排方便,但是数据库一般不需要频繁部署,因此也就没必要使用容器了。另外生产数据库为了使硬件资源利用率最大化,一般都会针对主机进行一些参数调优。
    mmdsun
        14
    mmdsun  
       2022-08-23 19:40:08 +08:00 via iPhone
    在 WSL 2 里面用 docker
    ch2
        15
    ch2  
       2022-08-23 20:02:11 +08:00
    完全没问题,windows 容器用起来跟 linux 区别不是很大
    但是 k8s 支持不太行,很难装
    不过你还得学一下 windows 的包管理软件 choco 跟 scoop 这些
    INCerry
        16
    INCerry  
       2022-08-24 10:43:49 +08:00   ❤️ 1
    看来大多数 V 友还只用过个人版的 Docker Desktop ,而不知道生成环境中使用的 Windows Container
    Docker Desktop 和 Windows Container 技术实现上有本质的区别,世界 500 强的生产案例也数不甚数

    https://docs.microsoft.com/zh-cn/virtualization/windowscontainers/
    nothingistrue
        17
    nothingistrue  
       2022-08-24 15:38:43 +08:00
    Docker 本身不是虚拟化,它要依赖操作系统的,而 Windows 上的 Docker 还刚起步。另外,就算 Windows Docker 普及了,因为依赖操作系统,Linux 的镜像跟 Windows 的镜像也是没办法互通的。如果不考虑多机部署部分,Docker 的作用更像默认用户隔离的包管理器,不能把它当成虚拟机或者应用沙盒看待。

    需要区分 Windows Docker 跟 Docker On Windows ( Docker Desktop 是两个都包含的),后者不管是早期的基于 Hyper-V 还是现在的基于 WLS2 ,它本质上都是开了一个 Linux 虚拟机然后运行 Linux Docker 。

    如果是本机的 Windows Server ,安装 Docker Desktop ,最好是用 Hyper-V 而非 WSL2 模式,然后把它当成 Linux Docker 用就行了。或者干脆抛弃 Docker Desktop ,直接 Hyper-V Linux 虚拟机里面手动安装 Linux Docker ,配置好 Hyper-V 跟 Liunx 虚拟机的网络即可。如果是云上的 Windows Server ,要看云主机的虚拟化技术是啥,如果是 Hyper-V 那就跟本机区别不大,如果不是就会有性能损耗。
    litguy
        18
    litguy  
       2022-08-24 16:50:48 +08:00
    @pannanxu IO 密集型应用建议物理机部署,性能下降有点狠
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5779 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 03:32 · PVG 11:32 · LAX 19:32 · JFK 22:32
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.