摘要:現階段,容器技術已經相當成熟,就算是中小型公司也可以基于鏡像服務輕松搭建自己的集群服務。線上環境可以設置為,測試環境設置為安裝創建一個項目登錄創建一個項目。接下來我們就可以訪問集群任意一臺機器的端口。
現階段,Docker容器技術已經相當成熟,就算是中小型公司也可以基于 Gitlab、Aliyun鏡像服務、Docker Swarm 輕松搭建自己的 Docker集群服務。
安裝 Dockercurl -sSL https://get.daocloud.io/docker | sh搭建自己的Gitlab 安裝Gitlab
首先我們修改一下端口號,把 sshd 服務的 22 端口改為 2222,讓 gitlab 可以使用 22 端口。
$ vim /etc/ssh/sshd_config # 默認 Port 改為 2222 Port 2222 # 重啟服務 $ systemctl restart sshd.service
重新登錄機器
ssh -p 2222 root@host
安裝 Gitlab
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 會重置密碼,用戶名是 root。
安裝gitlab-runner官方地址
以 CentOS 為例
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。
$ 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 集群
登錄另外一臺機器,初始化集群
$ docker swarm init
創建自定義 Overlay 網絡
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 --tokenip:2377 # 顯示worker節點的TOKEN $ docker swarm join-token worker # 加入worker節點到集群 $ docker swarm join --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
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/31834.html
摘要:譯者按實踐中會發現,生產環境中使用單個節點是遠遠不夠的,搭建集群勢在必行。集群的網絡通信服務發現,負載均衡以及容器間通信非常可靠。負載均衡也是由提供的。 譯者按: 實踐中會發現,生產環境中使用單個Docker節點是遠遠不夠的,搭建Docker集群勢在必行。然而,面對Kubernetes, Mesos以及Swarm等眾多容器集群系統,我們該如何選擇呢?它們之中,Swarm是Docker原...
摘要:當然此時的局限性較大,比如沒有副本和負載均衡的概念,這導致服務無法高可用當然也更不存在什么服務網絡管理和跨節點數據存儲這些東西沒有服務模型集群中服務間關系和啟動順序編排也很復雜于是就有了下面的的誕生。 showImg(https://segmentfault.com/img/remote/1460000015317037?w=1885&h=1153); 概述 在我的《Docker S...
摘要:既然要組集群那就涉及諸如的資源調度管理等等一系列問題。目前涉及集群的三個主要的技術無外乎三種。從本文開始作者將會一一實踐這幾種主要的集群技術,話不多說,現在開始。完全運行于內存中,體積小,啟動快。 showImg(https://segmentfault.com/img/remote/1460000015723680); 前言 相信Docker技術大家都有所了解,單個Docker能發...
摘要:介紹的集群的自動發現有兩種方式與本文使用的是的方式準備安裝以上版本初始化集群創建一個名為的網絡開放端口初始化集群部份可看我之前的博客使用搭建多主機集群創建網絡查看當前的網絡也是一個網絡可以跨主機通信本教程會創建一個新的創建網絡 介紹 docker 1.12 的swarm 集群的自動發現有兩種方式, virtual IP address (VIP) 與 DNS round-robin, ...
閱讀 2019·2023-04-26 02:15
閱讀 2302·2021-11-19 09:40
閱讀 1038·2021-10-27 14:13
閱讀 3307·2021-08-23 09:44
閱讀 3609·2019-12-27 12:24
閱讀 652·2019-08-30 15:53
閱讀 1164·2019-08-30 10:53
閱讀 2153·2019-08-26 12:14