docker-gitlab-ci-unbantu16.04持續(xù)集成環(huán)境搭建

一:安裝docker

  1. apt 源使用 HTTPS 以確保軟件下載過(guò)程中不被篡改赡模。我們首先需要添加使用HTTPS 傳輸?shù)能浖约?CA 證書。
    sudo apt-get update
    sudo apt-get install apt-transport-https ca-certificates curl software-properties-common
  2. 為了確認(rèn)所下載軟件包的合法性师抄,需要添加軟件源的 GPG 密鑰漓柑。
    curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add -
  3. 向 source.list 中添加 Docker 軟件源
    sudo add-apt-repository "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
  4. 更新 apt 軟件包緩存,并安裝 docker-ce
    sudo apt-get update
    sudo apt-get install docker-ce
  5. 啟動(dòng) Docker CE
    sudo systemctl enable docker
    sudo systemctl start docker
  6. 建立 docker 組
    sudo groupadd docker
  7. 將當(dāng)前用戶加入 docker 組
    sudo usermod -aG docker $USER
  8. 退出當(dāng)前終端并重新登錄叨吮,進(jìn)行如下測(cè)試
    docker run hello-world
Screenshot from 2020-01-09 11-27-07.png

如果能看到以上信息 則docker安裝成功

二: 配置國(guó)內(nèi)鏡像

  1. 由于docker默認(rèn)使用的是國(guó)外鏡像辆布,當(dāng)pull鏡像時(shí)很慢, 這里我們配置使用docker給國(guó)內(nèi)提供的加速服務(wù), 在 /etc/docker/daemon.json中寫入以下內(nèi)容(如果daemon.json文件不存在挤安, 則新建一個(gè), 新建記得使用root權(quán)限)
    Screenshot from 2020-01-09 11-35-15.png

    以上內(nèi)容一定要符合json規(guī)范, 不然docker會(huì)啟動(dòng)不了
  2. 重新啟動(dòng)服務(wù)
    sudo systemctl daemon-reload
    sudo systemctl restart docker
  3. 驗(yàn)證鏡像加速是否成功
    在命令行執(zhí)行 docker info
    Screenshot from 2020-01-09 11-38-08.png

    如果從結(jié)果中看到以上信息則配置成功

三: 構(gòu)建自己的鏡像

構(gòu)建自己的鏡像主要是打包我們項(xiàng)目需要的環(huán)境(依賴谚殊, 安裝包等),之后如果我們需要在不同的主機(jī)上運(yùn)行項(xiàng)目, 我們只需要拿到這個(gè)鏡像就可以了
構(gòu)建鏡像這里我們使用Dockerfile來(lái)構(gòu)建,(也有別的方法構(gòu)建鏡像蛤铜, 自行百度)

  1. 在項(xiàng)目根目錄下新建一個(gè)空的文件夾名, 這里我們文件夾命名為"myimage"
    mkdir myimage
    cd myimage
    touch Dockerfile
  2. 編寫Dockerfile腳本

既然是構(gòu)建自己的鏡像, 我們就得先以一個(gè)鏡像為基礎(chǔ)丛肢, 在此基礎(chǔ)上定制自己的鏡像围肥。選取基礎(chǔ)鏡像的標(biāo)準(zhǔn)是基于自己項(xiàng)目的需要(比如我們項(xiàng)目在web網(wǎng)頁(yè)上, 這里我們就選取nginx為基礎(chǔ)鏡像)
Dockerfile腳本編寫規(guī)則及命令詳解參考這篇文章Dockerfile命令詳解
這里我們編寫的Dockerfile腳本內(nèi)容為:

FROM nginx
RUN echo '<h1>Hello, Docker!</h1>' > /usr/share/nginx/html/index.html
只有兩行, 主要是在網(wǎng)頁(yè)上輸出一句話“Hello, Docker!”

  1. 執(zhí)行Dockerfile腳本構(gòu)建鏡像
    構(gòu)建鏡像名為 mynginx(可自己定義名字), 注意后面有一個(gè) "." , 指定了當(dāng)前目錄(上下文context), 關(guān)于上下文context的概念可查閱此文章上下文context理解
    docker build -t mynginx .

輸出以下內(nèi)容則構(gòu)建成功


Screenshot from 2020-01-09 13-12-37.png

此時(shí)通過(guò)命令 docker images 可以查看到我們已經(jīng)構(gòu)建成功的鏡像 mynginx

四: gitlab服務(wù)器搭建

一:注冊(cè)docker-runner

  1. Run the register command:

    docker run --rm -t -i -v /srv/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner register
    
    

    Note: If you used a config volume other than /srv/gitlab-runner/config during install, then you should update the command with the correct volume.

  2. Enter your GitLab instance URL:

    Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com )
    https://gitlab.com
    
    
  3. Enter the token you obtained to register the Runner:

    Please enter the gitlab-ci token for this runner
    xxx
    
    
  4. Enter a description for the Runner, you can change this later in GitLab’s UI:

    Please enter the gitlab-ci description for this runner
    [hostname] my-runner
    
    
  5. Enter the tags associated with the Runner, you can change this later in GitLab’s UI:

    Please enter the gitlab-ci tags for this runner (comma separated):
    my-tag,another-tag
    
    
  6. Enter the Runner executor:

    Please enter the executor: ssh, docker+machine, docker-ssh+machine, kubernetes, docker, parallels, virtualbox, docker-ssh, shell:
    docker
    
    
  7. If you chose Docker as your executor, you’ll be asked for the default image to be used for projects that do not define one in .gitlab-ci.yml:

    Please enter the Docker image (eg. ruby:2.6):
    alpine:latest
    

注意!!!!!蜂怎, 以上 2, 3步要輸入gitlab-runner 的地址和 token .第7步輸入我們之前定制的鏡像名(輸入基礎(chǔ)鏡像alpine:latest也可以.之后我們可以在.gitlab-ci.yam文件中指定每個(gè)job的的鏡像)

二:修改runner配置文件
sudo gedit /srv/gitlab-runner/config/config.toml , 在[runner.docker]下添加pull_policy = "always"

三:搭建私有倉(cāng)庫(kù)
docker run -d -p 5000:5000 --restart=always --name registry registry
sudo gedit /etc/default/docker 修改DOCKER_OPTS為:

DOCKER_OPTS="--registry-mirror=https://registry.docker-cn.com --insecure-registry=ip:5000"
上面的ip為自己要搭建的倉(cāng)庫(kù)的ip地址 例如為127.0.0.1 則 127.0.0.1:5000就是你倉(cāng)庫(kù)的地址

將之前自己構(gòu)建的鏡像上傳到私有倉(cāng)庫(kù)

  1. 必須要先標(biāo)記我們要上傳的鏡像
    docker tag imagename ip/imagename

上面命令中 imagename為我們構(gòu)建的鏡像名穆刻, ip為倉(cāng)庫(kù)地址。 格式必須是這種否則上傳會(huì)失敗

  1. 輸入docker images 查看標(biāo)記鏡像是否成功
  2. 上傳鏡像
    docker push tag_image_name

上面tag_image_name為標(biāo)記后image的名字

  1. 查看鏡像上傳是否成功
    curl ip/v2/_catalog

如果你不想使用 127.0.0.1:5000 作為倉(cāng)庫(kù)地址杠步,比如想讓本網(wǎng)段的其他主機(jī)也能把鏡像推送到私有倉(cāng)庫(kù)氢伟。你就得把例如 192.168.199.100:5000 這樣的內(nèi)網(wǎng)地址作為私有倉(cāng)庫(kù)地址榜轿,這時(shí)你會(huì)發(fā)現(xiàn)無(wú)法成功推送鏡像。這是因?yàn)?Docker 默認(rèn)不允許非 HTTPS 方式推送鏡像朵锣。我們可以通過(guò) Docker 的配置選項(xiàng)來(lái)取消這個(gè)限制
修改 /etc/docker/daemon.json文件的權(quán)限
sudo chmod -R 777 /etc/docker/daemon.json
終端命令行輸入命令
echo '{ "insecure-registries":["192.168.16.212:5000"] }' > /etc/docker/daemon.json
重啟服務(wù)
systemctl daemon-reload
systemctl restart docker

五: .gitlab-ci.yml腳本的編寫

在項(xiàng)目的根目錄新建文件.gitlab-ci.yml
例子


Screenshot from 2020-01-09 14-06-16.png

l六:驗(yàn)證結(jié)果

push代碼
到gitlab服務(wù)器CI/CD 查看pipeline的運(yùn)行情況是否啟用了docker拉取了我們構(gòu)建的鏡像

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末谬盐,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子诚些,更是在濱河造成了極大的恐慌飞傀,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,948評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件诬烹,死亡現(xiàn)場(chǎng)離奇詭異砸烦,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)绞吁,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,371評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門幢痘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人家破,你說(shuō)我怎么就攤上這事颜说。” “怎么了员舵?”我有些...
    開(kāi)封第一講書人閱讀 157,490評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵脑沿,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我马僻,道長(zhǎng)庄拇,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 56,521評(píng)論 1 284
  • 正文 為了忘掉前任韭邓,我火速辦了婚禮措近,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘女淑。我一直安慰自己瞭郑,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,627評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布鸭你。 她就那樣靜靜地躺著屈张,像睡著了一般。 火紅的嫁衣襯著肌膚如雪袱巨。 梳的紋絲不亂的頭發(fā)上阁谆,一...
    開(kāi)封第一講書人閱讀 49,842評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音愉老,去河邊找鬼场绿。 笑死,一個(gè)胖子當(dāng)著我的面吹牛嫉入,可吹牛的內(nèi)容都是我干的焰盗。 我是一名探鬼主播璧尸,決...
    沈念sama閱讀 38,997評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼熬拒!你這毒婦竟也來(lái)了爷光?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 37,741評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤梦湘,失蹤者是張志新(化名)和其女友劉穎瞎颗,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體捌议,經(jīng)...
    沈念sama閱讀 44,203評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡哼拔,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,534評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了瓣颅。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片倦逐。...
    茶點(diǎn)故事閱讀 38,673評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖宫补,靈堂內(nèi)的尸體忽然破棺而出檬姥,到底是詐尸還是另有隱情,我是刑警寧澤粉怕,帶...
    沈念sama閱讀 34,339評(píng)論 4 330
  • 正文 年R本政府宣布健民,位于F島的核電站,受9級(jí)特大地震影響贫贝,放射性物質(zhì)發(fā)生泄漏秉犹。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,955評(píng)論 3 313
  • 文/蒙蒙 一稚晚、第九天 我趴在偏房一處隱蔽的房頂上張望崇堵。 院中可真熱鬧,春花似錦客燕、人聲如沸鸳劳。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,770評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)赏廓。三九已至,卻和暖如春傍妒,著一層夾襖步出監(jiān)牢的瞬間楚昭,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,000評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工拍顷, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人塘幅。 一個(gè)月前我還...
    沈念sama閱讀 46,394評(píng)論 2 360
  • 正文 我出身青樓昔案,卻偏偏與公主長(zhǎng)得像尿贫,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子踏揣,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,562評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容

  • (前言) 什么是GitLab CI 庆亡? gitlab-ci全稱是gitlab continuous i...
    ESSE丶閱讀 1,270評(píng)論 2 1
  • 一、 為了優(yōu)化公司服務(wù)部署流程捞稿, 減少不必要的登錄服務(wù)器操作又谋, 實(shí)現(xiàn)提交代碼直接部署最短部署路徑, 我們選擇了g...
    becareofzm閱讀 4,853評(píng)論 0 4
  • CNundefined GitLab-CI與GitLab-Runner 一娱局、持續(xù)集成(Continuous Int...
    夜游上河園閱讀 4,543評(píng)論 0 6
  • 這是阿里內(nèi)網(wǎng)的一篇文章彰亥,感有用,故轉(zhuǎn)載來(lái)了衰齐,自己實(shí)際搭建了任斋,故記錄一下: 背景在日常工作中,我們往往會(huì)搭建基于je...
    新強(qiáng)吖閱讀 5,946評(píng)論 0 4
  • 很多時(shí)候 我有些悲觀 我想我的事業(yè)并不容易 感情生活需要作出讓步 大腦中總有很多想不通的問(wèn)題 身體也有不適 但是耻涛,...
    寒冬之城閱讀 157評(píng)論 0 1