docker swarm在阿里云主机上single node部署沙箱环境

本文介绍如何在阿里云CentOS服务器上将Docker从1.12升级到1.13,并通过singlenode模式部署Docker Swarm集群。文章详细记录了解决依赖冲突、创建网络和服务的过程。

mac本机可以通过docker machine + docker compose的方式部署,也可以通过docker swarm的方式single node部署
本文描述如何在阿里云的虚拟主机上single node的方式部署docker swarm

升级docker

运维给的机子是centos7+docker 1.12, 需要升级到docker 1.13
1.登录阿里云主机

1.1 先连 aliyunhz的vpn

1.2 登录跳板机 ssh -p3299 xxx@$IP

1.3 ssh $EVA_HOSTNAME

2.修改配置文件 解决yum无法联网安装软件包的bug

sudo vi /etc/yum.conf

#注释掉最后proxy相关的行

#proxy=http://

3.升级docker1.12 到 1.13 参考资料1-https://docs.docker.com/engine/installation/linux/centos/#install-docker

3.1 准备工作

sudo yum install -y yum-utils

sudo yum-config-manager \
    --add-repo \
    https://docs.docker.com/engine/installation/linux/repo_files/centos/docker.repo

yum list docker-engine.x86_64  --showduplicates |sort -r

sudo yum makecache fast

3.2 安装 1.13.1

sudo yum -y install docker-engine-1.13.1-1.el7.centos
报错:
错误:docker-engine conflicts with 2:docker-1.12.5-14.el7.centos.x86_64
错误:docker-engine-selinux conflicts with 2:container-selinux-1.12.5-14.el7.centos.x86_64

3.3 解决冲突

yum list  installed |grep docker
docker.x86_64                     2:1.12.5-14.el7.centos   @xxx-extras
docker-client.x86_64              2:1.12.5-14.el7.centos   @xxx-extras
docker-common.x86_64              2:1.12.5-14.el7.centos   @xxx-extras


sudo yum -y remove docker.x86_64

sudo yum -y remove  docker-client.x86_64

sudo yum -y remove  docker-common.x86_64


yum list  installed |grep container-selinux

sudo yum -y remove  container-selinux.x86_64

3.4 重复3.2 sudo yum -y install docker-engine-1.13.1-1.el7.centos 安装成功

sudo docker version
Client:
 Version:      1.13.1
 API version:  1.26
 Go version:   go1.7.5
 Git commit:   092cba3
 Built:        Wed Feb  8 06:38:28 2017
 OS/Arch:      linux/amd64
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

部署docker swarm

参考资料2-Run Docker Engine in swarm mode https://docs.docker.com/engine/swarm/swarm-mode/

参考资料3-swarm 路由配置 https://docs.docker.com/engine/swarm/ingress/

4.1 创建swarm

$ sudo docker swarm leave -f

#多ip的机子, swarm init 必须指定--advertise-addr参数 本机的公网ip是121.*.*.*

$ sudo docker swarm init --advertise-addr $(ifconfig |grep inet |grep -v inet6|grep 121| awk '{print $2}')

Swarm initialized: current node (k0jikwapsoy31kja5sx9svz55) is now a manager.

To add a worker to this swarm, run the following command:

    docker swarm join \
    --token SWMTKN-1-271fkt35jk35i7akrznc379yffardv1kfsdrzc6111exbe1fai-25uuohjxi6k450p4xw0e2swvw \
    10.117.24.180:2377

To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

$ sudo docker node ls
ID                           HOSTNAME               STATUS  AVAILABILITY  MANAGER STATUS
k0jikwapsoy31kja5sx9svz55 *  $HOSTNAME             Ready   Active        Leader

4.2 创建overlay network

$ docker network create \
  --driver overlay \
  --subnet 10.0.9.0/24 \
  --opt encrypted \
  eva-sandbox

4.3从仓库拉取最新image


#登录远程仓库
$ sudo docker login https://$REPO_ADDR/
Username:
Password:

#pull image 
$ sudo docker pull $REPO_ADDR/eva-api
$ sudo docker pull $REPO_ADDR/eva-web
$ sudo docker pull $REPO_ADDR/eva-mysql

sudo docker image ls
REPOSITORY                                    TAG                 IMAGE ID            CREATED             SIZE
$REPO_ADDR/eva-web     latest              e359aca3bd6e        3 days ago          593 MB
$REPO_ADDR/eva-mysql   latest              d7c0644118a2        3 days ago          406 MB
$REPO_ADDR/eva-api     latest              eefe12d7c2cf        3 days ago          485 MB

4.4 创建service

$ sudo docker service create \
  --with-registry-auth \
  --replicas 1 \
  --name eva-web \
  --network eva-sandbox \
  --publish 80:8087 \
  --env SERVER=$(sudo docker network inspect eva-sandbox|grep \"IP\":|awk -F"\"" '{print $4}') \
  $REPO_ADDR/eva-web

$ sudo docker service create \
  --with-registry-auth \
  --replicas 1 \
  --name eva-mysql \
  --network eva-sandbox \
  $REPO_ADDR/eva-mysql

$ sudo docker service create \
  --with-registry-auth \
  --replicas 1 \
  --name eva-api \
  --network eva-sandbox \
  --publish 20171:20171 \
  --env MYSQLHOST=eva-mysql \
  $REPO_ADDR/eva-api

访问公网地址 http://121...* 检查前后台功能是否正常

4.5 解析eva-sdb.xxx 到 121...* , 访问 http://eva-sdb.xxx 检查前后台功能是否正常


docker更新

5.1 重复4.3 拉取最新image

5.2 不停服务,在线升级

$ sudo docker service update \
  --env-add SERVER=$(sudo docker network inspect eva-sandbox|grep \"IP\":|awk -F"\"" '{print $4}')  \
  --image $(sudo docker inspect -f '{{index .RepoDigests 0}}' $REPO_ADDR/eva-web) \
  eva-web

$ sudo docker service update \
  --image $(sudo docker inspect -f '{{index .RepoDigests 0}}' $REPO_ADDR/eva-mysql)  \
  eva-mysql

$ sudo docker service update \
  --env-add MYSQLHOST=eva-mysql \
  --image $(sudo docker inspect -f '{{index .RepoDigests 0}}' $REPO_ADDR/eva-api) \
  --publish-add 20171:20171 \
  eva-api

5.3 如果5.2的update方式失败 那就删了重建

先删除旧的service
sudo docker service rm eva-web
sudo docker service rm eva-mysql
sudo docker service rm eva-api

然后重复4.4 创建新的service
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值