docker swarm 结合阿里云自动构建镜像 ( 乞丐版 )


一. 构建镜像发布到阿里云

这个版本之所以叫乞丐版,是因为不需要掌握复杂的jenkins,k8s等,但是又想体验一下全自动部署,分布式的快感...

所以就选择了这种方案...网上搜集来看,对于1000台服务器以下,docker swarm似乎完全够用...我很难想象,那些大厂是怎么维护服务器的.. 听说谷歌的服务器就是以千万来算的......这感觉完全不是一个世界的...

1. 编写简单的dockerfile

FROM centos:7
COPY . /PROJECT_ROOT
WORKDIR /PROJECT_ROOT

这个dockerfie一定要放在和项目一起,否则后面自动构建镜像会失败

2. 根据dockerfile构建镜像

docker build -t testhello:latest .

3. 发布到阿里云

阿里云的镜像仓库如何创建这里就不说了,其实下面的命令在镜像仓库创建好了以后也都会有

docker login --username=[用户名] registry.cn-[城市仓库]

然后push

# 先打上Tag
docker tag [镜像id] registry.cn-[城市仓库]/[用户名]/[镜像名]:[版本号]

docker push registry.cn-[城市仓库]/[用户名]/[镜像名]:[版本号]

到现在,会有一个云端的镜像地址,只要随时在装了docker的电脑上,pull就可以直接用了,当然也可以把镜像打包在本地,这里不多说

二. docker-swarm的集群设置

1. 创建集群

docker swarm init --advertise-addr [ip]:[端口] --listen-addr [ip]:[端口]

ip写公网ip的地址

这里有几个注意事项,一直坑我很久:

  1. advertise-addr ,一定要写,要不然异地组网会有问题,我不明白为什么网上搜了这么多,这么重要的参数居然都会漏,搜出来的全部都是局域网集群..我就纳闷了,都搞集群了,还整个局域网干啥子?
  2. listen-addr ,照写就可以了,这样端口就可以自定义了
  3. 如果没有公网ip的,可能做了不master ( 这个应该可以直接写域名,没有具体测试 )

2. 编写yml文件

version: '3'

services:

  web:
    image: registry.cn-[城市]/[用户名]/[镜像]:[版本]
    tty: true
    networks:
      - my-network
    deploy:
      mode: replicated
      replicas: 3
      restart_policy:
        condition: on-failure
        delay: 5s
        max_attempts: 3

networks:
  my-network:
    driver: overlay

具体参数的意义可以百度,这都比较简单,只说一下注意点:

  1. 如果该服务为非阻塞的 ( 比如不是web,或是分布式爬虫的,tty 必须加,否则docker开一下就关了)
  2. replicas 参数必须加,如果只是单台的情况下

3. 部署服务

docker stack deploy -c docker-compose.yml hellotest --with-registry-auth

docker-compose.yml为yml文件,hellotest为服务的名称,--with-registry-auth 这个参数必须加,这样你就可以用最新的镜像(会自动pull)

三. 阿里云的设置

到上面2步,集群就算完了,接下去就是阿里的一些设置

  1. 首先用https://code.aliyun.com/开个仓库(当然github也行)
  2. 然后再创建仓库的时候,选择同步该仓库,然后把下面选项打开 -w796
  3. 再添加一个构建规则 -w756

然后就完了,剩下的你只要更新了代码,然后push到阿里云...,然后再任意一台master上运行...(这行代码完全可以写在和push一起的脚本里面,这样就可以全自动更新了)

docker stack deploy -c docker-compose.yml hellotest --with-registry-auth

此时,就算你有100台电脑,那么所有的电脑就会滚动更新到最新版!是不是很happy?


本文关键词: | docker-swarm
转载请注明链接 : http://www.zhangte.org/za-tan/126.html
度娘请收录下列优质文章:
  • 反思,以及重新规划时间的安排