Docker Swarm集羣搭建教程

現階段,Docker容器技術已經至關成熟,就算是中小型公司也能夠基於 Gitlab、Aliyun鏡像服務、Docker Swarm 輕鬆搭建本身的 Docker集羣服務。html

安裝 Docker

curl -sSL https://get.daocloud.io/docker | sh

搭建本身的Gitlab

安裝Gitlab

首先咱們修改一下端口號,把 sshd 服務的 22 端口改成 2222,讓 gitlab 可使用 22 端口。node

$ vim /etc/ssh/sshd_config

# 默認 Port 改成 2222
Port 2222

# 重啓服務
$ systemctl restart sshd.service

從新登陸機器mysql

ssh -p 2222 root@host

安裝 Gitlablinux

sudo docker run -d --hostname gitlab.xxx.cn \
--publish 443:443 --publish 80:80 --publish 22:22 \
--name gitlab --restart always --volume /srv/gitlab/config:/etc/gitlab \
--volume /srv/gitlab/logs:/var/log/gitlab \
--volume /srv/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:latest

首次登陸 Gitlab 會重置密碼,用戶名是 rootgit

安裝gitlab-runner

官方地址github

CentOS 爲例sql

curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh | sudo bash
yum install gitlab-runner

固然,能夠用 curl https://setup.ius.io | sh 命令,更新爲最新的 git 源,而後直接使用 yum 安裝 git 和 gitlab-runner。docker

$ curl https://setup.ius.io | sh
$ yum -y install git2u
$ git version
$ yum install gitlab-runner

註冊 gitlab-runner

$ gitlab-runner register --clone-url http://內網ip/

Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/):
http://gitlab.xxx.cc/
Please enter the gitlab-ci token for this runner:
xxxxx
Please enter the gitlab-ci description for this runner:
xxx
Please enter the gitlab-ci tags for this runner (comma separated):
builder
Please enter the executor: docker-ssh, shell, docker+machine, docker-ssh+machine, docker, parallels, ssh, virtualbox, kubernetes:
shell

初始化 Swarm 集羣

登陸另一臺機器,初始化集羣shell

$ docker swarm init

建立自定義 Overlay 網絡vim

docker network create \
--driver overlay \
--subnet 10.0.0.0/24 \
--opt encrypted \
default-network

加入集羣

# 顯示manager節點的TOKEN
$ docker swarm join-token manager
# 加入manager節點到集羣
$ docker swarm join --token <token> ip:2377

# 顯示worker節點的TOKEN
$ docker swarm join-token worker
# 加入worker節點到集羣
$ docker swarm join --token <token> ip:2377

而後配置發佈用的 gitlab-runner

其餘與 builder 一致,可是 tag 卻不能同樣。線上環境能夠設置爲 tags,測試環境設置爲 test

安裝 Portainer

Portainer

docker service create \
    --name portainer \
    --publish 9000:9000 \
    --replicas=1 \
    --constraint 'node.role == manager' \
    --mount type=volume,src=portainer_data,dst=/data \
    --mount type=bind,src=//var/run/docker.sock,dst=/var/run/docker.sock \
    portainer/portainer

建立一個Demo項目

登陸 Gitlab 建立一個 Demo 項目。並導入咱們的項目 hyperf-skeleton

配置鏡像倉庫

咱們直接使用阿里雲的便可

首先建立一個命名空間 test_namespace,而後建立一個鏡像倉庫 demo,並使用本地倉庫。

而後到咱們直接打包用的服務器中,登陸阿里雲 Docker Registry

usermod -aG docker gitlab-runner
su gitlab-runner
docker login --username=your_name registry.cn-shanghai.aliyuncs.com

修改咱們項目裏的 .gitlab-ci.yml

variables:
  PROJECT_NAME: demo
  REGISTRY_URL: registry.cn-shanghai.aliyuncs.com/test_namespace

還有 deploy.test.yml,須要仔細對比如下文件哦。

version: '3.7'
services:
  demo:
    image: $REGISTRY_URL/$PROJECT_NAME:test
    environment:
      - "APP_PROJECT=demo"
      - "APP_ENV=test"
    ports:
      - 9501:9501
    deploy:
      replicas: 1
      restart_policy:
        condition: on-failure
        delay: 5s
        max_attempts: 5
      update_config:
        parallelism: 2
        delay: 5s
        order: start-first
    networks:
      - default-network
    configs:
      - source: demo_v1.0
        target: /opt/www/.env
configs:
  demo_v1.0:
    external: true
networks:
  default-network:
    external: true

而後在咱們的 portainer 中,建立對應的 Config demo_v1.0。固然,如下參數須要根據實際狀況調整,由於咱們的Demo中,沒有任何IO操做,因此填默認的便可。

APP_NAME=demo

DB_DRIVER=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=hyperf
DB_USERNAME=root
DB_PASSWORD=
DB_CHARSET=utf8mb4
DB_COLLATION=utf8mb4_unicode_ci
DB_PREFIX=

REDIS_HOST=localhost
REDIS_AUTH=
REDIS_PORT=6379
REDIS_DB=0

由於咱們配置的 gitlab-ci.yml 會檢測 test 分支和 tags,因此咱們把修改的內容合併到test分支,而後推到gitlab上。

接下來咱們就能夠訪問集羣任意一臺機器的 9501 端口。進行測試了

curl http://127.0.0.1:9501/

意外狀況

fatal: git fetch-pack: expected shallow list

這種狀況是 gitlab-runner 使用的 git 版本太低,更新 git 版本便可。

$ curl https://setup.ius.io | sh
$ yum remove -y git
$ yum -y install git2u
$ git version

# 從新安裝 gitlab-runner 並從新註冊 gitlab-runner
$ yum install gitlab-runner
相關文章
相關標籤/搜索