V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Recommended Services
Amazon Web Services
LeanCloud
New Relic
ClearDB
naoh1000
V2EX  ›  云计算

前端程序员关于 Docker 和 Kubernetes 的一点疑惑

  •  1
     
  •   naoh1000 · 2020-12-05 08:13:49 +08:00 via iPhone · 5413 次点击
    这是一个创建于 1210 天前的主题,其中的信息可能已经有所发展或是发生改变。

    前端想要转后端的垃圾程序员,最近写了一些自己的项目,打算用 Docker 和 Kubernetes 部署,遇到了一些疑惑,查了很多资料后没有解决,希望大佬能够帮忙解答。

    1. 单节点服务有必要使用 k8s 吗? 官网写的 k8s 功能和优势大多数都表现在多服务器,项目初期只有一台服务器有必要使用 k8s 吗?
    2. 有必要自建 Docker Registry ? 如果项目都是在自己的服务器部署,有必要通过自建 Docker Registry 来绕开 Docker Hub 不充钱只能创建 1 个私有项目的限制吗?我看到一些个人开发者是在服务器上 git pull & docker build -t xxxx
    3. 多个项目应该使用多个数据库容器还是共用一个? 经常在搜索引擎上看到“数据库应该装在 Docker 里吗”这样的问题,不同人持不同看法。想知道如果我把数据库安装在 Docker 里,多个项目应该使用多个数据库容器还是共用一个?如果使用 Docker Compose 部署,大多数情况下每个项目都会自带一个数据库,是否会拖慢速度?这样的话如何方便的管理数据库里的数据?
    4. 如何方便的管理运行在一台服务器上的多个项目? 相互没有联系的容器。之前使用过 Docker Compose 管理,发现一个项目的容器启动后想关掉就只能关掉 docker-compose.yml 里的全部容器了,很不方便,现在自己写了一个 py 脚本管理,大佬们有没有更好的方法?
    19 条回复    2020-12-05 22:55:13 +08:00
    holulu
        1
    holulu  
       2020-12-05 08:29:04 +08:00
    直接去有 k8s 服务的云服务商上开集群就行了,数据库服务、Docker Registry 服务、部署管理服务啥都有,没必要自己折腾这么底层的。上面几点现在都是运维考虑的,开发者基本不考虑这些。
    snowfuck
        2
    snowfuck  
       2020-12-05 08:29:53 +08:00   ❤️ 1
    1.没有,你的理解是对的; k8s 是应对大规模容器化部署运维的,没这个需要没有上的必要
    2.没有,怎么方便怎么来
    3.数据库用同一个会好一点,跑多个就要占用多份资源;可以看下别人的 compose 文件改下
    4.docker-compose -f docker-compose.yaml stop xxx ; 这里的 xxx 是 compose 里定义的一个服务,是可以用 docker compose 管理单个服务的,有依赖另当别论

    我不是大佬,一点浅见仅供参考。
    cnbattle
        3
    cnbattle  
       2020-12-05 08:32:24 +08:00 via Android
    1 没必要
    2 不用 可以用阿里云或腾讯云 等的免费的服务
    3 只有一台服务器的话 ,没多版本需要,就用一个,否则多个
    4 自己使用问题 可以指定停止

    个人拙见
    lizheming
        4
    lizheming  
       2020-12-05 08:35:35 +08:00 via iPhone
    1. 单机都是直接 docker-compose 超级方便
    2. Github Registry 了解一下,可以私有项目传镜像哦
    3. 数据库建议一个,这样备份也好备份呀~直接设置 net 在同一个网络下应该就行了
    4. 楼上说的+1
    lizheming
        5
    lizheming  
       2020-12-05 08:36:46 +08:00 via iPhone
    @cnbattle 阿里云镜像仓库好像是收费的?腾讯云的目前公测免费倒是。
    yzbythesea
        6
    yzbythesea  
       2020-12-05 08:37:34 +08:00
    小项目不上云就用 docker compose
    eudore
        7
    eudore  
       2020-12-05 08:54:03 +08:00
    1 、私人小项目就 rancher 或 docker compose
    2 、Registry 除了 hub 还有各种云都有免费的使用。
    3 、数据可以放 docker 里面,然后-v 把数据卷挂载进去就好了
    4 、建议使用 rancher 就是一个 web 版 dockercompose,compose 我用的少,启动是可以指定配置文件去 up 的。
    cnbattle
        8
    cnbattle  
       2020-12-05 08:57:28 +08:00   ❤️ 1
    @lizheming 有个人开发者免费的方案
    lizheming
        9
    lizheming  
       2020-12-05 09:16:03 +08:00 via iPhone
    @cnbattle 原来如此!
    zliea
        10
    zliea  
       2020-12-05 09:42:50 +08:00
    1. 单节点纯 docker 即可,3 节点以上可以使用 swarm 管理,一般上没有 20 台机器不推荐用 k8s 。
    2. 单节点可以不折腾镜像仓库,如果服务器本地构建镜像可以不折腾,如果远程构建搭一个也很简单。
    3. 公用一个数据库服务器(容器),我现在都是使用 docker 管理(包括一些生产环境),现在好一点的镜像都是使用外部数据库服务的。
    4. 开源项目 portainer 了解一下,可视化管理。
    echowuhao
        11
    echowuhao  
       2020-12-05 09:47:24 +08:00
    99%的项目不需要 k8s
    yuzhiquan
        12
    yuzhiquan  
       2020-12-05 09:48:33 +08:00
    前端对应的概念不是 serverless 吗?
    hantsy
        13
    hantsy  
       2020-12-05 09:48:59 +08:00
    Docker Compose 现在也支持云部署啦。
    在 Docker Cloud 和 Docker Swarm 市场反响不好的情况,Docker 另辟途径,让 Docker Compose 规范去兼容 K8S,这个项目开发很长时间了,目前好像 AWS 可以用了。

    https://aws.amazon.com/blogs/containers/deploy-applications-on-amazon-ecs-using-docker-compose/
    hantsy
        14
    hantsy  
       2020-12-05 09:50:14 +08:00
    前端一样要用 Docker 啊。

    可以在 CI 把项目编译把包,用 Docker Image 发布。
    monkeyWie
        15
    monkeyWie  
       2020-12-05 10:56:07 +08:00 via Android
    单机可以试试 k3s
    mauve
        16
    mauve  
       2020-12-05 12:55:54 +08:00 via iPhone
    gitlab 免费版全都有
    hardy4y
        17
    hardy4y  
       2020-12-05 16:37:34 +08:00
    直接上阿里云的 serverless 不香吗?屏蔽了 node 的概念,不用关注又多少个节点,阿里云的 docker registry 也不收费啊.
    单节点想用 k8s 的特性可以用 k3s.
    mywaiting
        18
    mywaiting  
       2020-12-05 17:45:41 +08:00
    1 、单服务节点没有必要用 k8s,如果自己实在想用这类编排实现,建议可以试试 hashicorp nomad 比 k8s 心智负担少很多
    2 、没有必要自建,Github 有
    3 、项目有相关性的可以一个容器,无相关的多个容器。自己的项目还单节点服务器,一个容器简单方便
    4 、见 2 楼现成的命令
    chenqh
        19
    chenqh  
       2020-12-05 22:55:13 +08:00
    借楼问一下,docker-compose 怎么实现滚动重启 app?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2922 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 14:06 · PVG 22:06 · LAX 07:06 · JFK 10:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.