DevOps 基於Walle的小型持續集成實戰(三)Docker與Gitlab

還在按照mysql安裝教程一步一步配置服務配置帳戶嗎?還在爲每開一個新環境從新配置這些服務感到苦惱嗎?使用Docker,服務快速構建部署。解決你的研發時間,早點下班~現代技術,還不會docker你就落後了。

Docker

百度百科定義php

Docker 是一個開源的應用容器引擎,讓開發者能夠打包他們的應用以及依賴包到一個可移植的鏡像中,而後發佈到任何流行的 Linux或Windows 機器上,也能夠實現虛擬化。容器是徹底使用沙箱機制,相互之間不會有任何接口

比較全面的學習網站:https://www.runoob.com/docker...html

如下資料來源於www.runoob.com,更多資料請直接訪問該網站,侵刪。

Docker 教程

clipboard.png

Docker 是一個開源的應用容器引擎,基於 Go 語言 並聽從Apache2.0協議開源。python

Docker 可讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,而後發佈到任何流行的 Linux 機器上,也能夠實現虛擬化。mysql

容器是徹底使用沙箱機制,相互之間不會有任何接口(相似 iPhone 的 app),更重要的是容器性能開銷極低。nginx

Docker 從 17.03 版本以後分爲 CE(Community Edition: 社區版) 和 EE(Enterprise Edition: 企業版),咱們用社區版就能夠了。git

誰適合閱讀本教程?

本教程適合運維工程師及後端開發人員,經過本教程你能夠一步一步瞭解 Docker 的使用。github

閱讀本教程前,您須要瞭解的知識

在閱讀本教程前,你須要掌握 Linux 的經常使用命令。你能夠經過本站的 Linux 教程 來學習相關命令。web

Docker的應用場景
Web 應用的自動化打包和發佈。

自動化測試和持續集成、發佈。

在服務型環境中部署和調整數據庫或其餘的後臺應用。
從頭編譯或者擴展示有的OpenShift或Cloud Foundry平臺來搭建本身的PaaS環境。
Docker 的優勢
一、簡化程序:
Docker 讓開發者能夠打包他們的應用以及依賴包到一個可移植的容器中,而後發佈到任何流行的 Linux 機器上,即可以實現虛擬化。Docker改變了虛擬化的方式,使開發者能夠直接將本身的成果放入Docker中進行管理。方便快捷已是 Docker的最大優點,過去須要用數天乃至數週的 任務,在Docker容器的處理下,只須要數秒就能完成。

二、避免選擇恐懼症:
若是你有選擇恐懼症,仍是資深患者。Docker 幫你 打包你的糾結!好比 Docker 鏡像;Docker 鏡像中包含了運行環境和配置,因此 Docker 能夠簡化部署多種應用實例工做。好比 Web 應用、後臺應用、數據庫應用、大數據應用好比 Hadoop 集羣、消息隊列等等均可以打包成一個鏡像部署。

三、節省開支:
一方面,雲計算時代到來,使開發者沒必要爲了追求效果而配置高額的硬件,Docker 改變了高性能必然高價格的思惟定勢。Docker 與雲的結合,讓雲空間獲得更充分的利用。不只解決了硬件管理的問題,也改變了虛擬化的方式。
相關連接

Docker 官網:http://www.docker.comredis

Github Docker 源碼:https://github.com/docker/dockersql


Docker 架構

Docker 使用客戶端-服務器 (C/S) 架構模式,使用遠程API來管理和建立Docker容器。

Docker 容器經過 Docker 鏡像來建立。

容器與鏡像的關係相似於面向對象編程中的對象與類。

Docker 面向對象
容器 對象
鏡像

clipboard.png

名稱 概述
Docker 鏡像(Images) Docker 鏡像是用於建立 Docker 容器的模板。
Docker 容器(Container) 容器是獨立運行的一個或一組應用。
Docker 客戶端(Client) Docker 客戶端經過命令行或者其餘工具使用 Docker API (https://docs.docker.com/refer... 與 Docker 的守護進程通訊。
Docker 主機(Host) 一個物理或者虛擬的機器用於執行 Docker 守護進程和容器。
Docker 倉庫(Registry) Docker 倉庫用來保存鏡像,能夠理解爲代碼控制中的代碼倉庫。
Docker Hub(https://hub.docker.com) 提供了龐大的鏡像集合供使用。
Docker Machine Docker Machine是一個簡化Docker安裝的命令行工具,經過一個簡單的命令行便可在相應的平臺上安裝Docker,好比VirtualBox、 Digital Ocean、Microsoft Azure。

Docker安裝和使用

請直接訪問https://www.runoob.com/docker...

如下簡述常規鏡像和容器操做

docker pull training/webapp  # 載入鏡像
docker run -d -P training/webapp python app.py  # 後臺運行鏡像
docker ps # 查看正常運行的容器
CONTAINER ID        IMAGE               COMMAND             ...        PORTS                 
CONTAINER ID        IMAGE                      COMMAND                  CREATED             STATUS              PORTS                               NAMES
749081df9fe6        alenx/walle-web:2.1        "nginx -g 'daemon of…"   2 weeks ago         Up 2 days           0.0.0.0:7070->80/tcp                walle-nginx
eafa0bf1e0f8        alenx/walle-python:2.1     "bash -c 'cd /opt/wa…"   2 weeks ago         Up 2 days           5000/tcp                            walle-python
dde36e384856        mysql                      "docker-entrypoint.s…"   2 weeks ago         Up 2 days           0.0.0.0:3306->3306/tcp, 33060/tcp   walle-mysql
b7f2cab4ac7c        eclipse/che-server:6.8.0   "/entrypoint.sh"         11 months ago       Up 2 days           8000/tcp, 0.0.0.0:8080->8080/tcp    che
docker logs -f d3d5e39ed9d3 #查看日誌
docker stop che   # 中止容器
docker start che  # 啓動容器
docker rm che # 移除容器

Docker常規實例

該網站內包括如下docker鏡像的部署

實例 網站
Nginx https://www.runoob.com/docker...
PHP https://www.runoob.com/docker...
MySQL https://www.runoob.com/docker...
Tomcat https://www.runoob.com/docker...
Python https://www.runoob.com/docker...
Redis https://www.runoob.com/docker...
MongoDB https://www.runoob.com/docker...
Apache https://www.runoob.com/docker...
Gitlab https://www.jianshu.com/p/080...
Nexus https://www.jianshu.com/p/77a...

案例操做

Mysql安裝

內容參考: https://www.runoob.com/docker...

查找遠程鏡像:docker search mysql
拉取遠程鏡像:docker pull mysql:5.6
瀏覽本地鏡像:docker images |grep mysql
運行本地鏡像:docker run -d -P mysql:5.6
查看本地容器:docker ps

Gitlab安裝

內容參考 https://www.jianshu.com/p/080...

拉取遠程鏡像:docker pull gitlab/gitlab-ce
運行本地鏡像:

$ docker run -d  -p 443:443 -p 80:80 -p 222:22 --name gitlab --restart always -v /home/gitlab/config:/etc/gitlab -v /home/gitlab/logs:/var/log/gitlab -v /home/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce
# -d:後臺運行
# -p:將容器內部端口向外映射(左邊宿主機端口,右邊容器端口)
# --name:命名容器名稱
# -v:將容器內數據文件夾或者日誌、配置等文件夾掛載到宿主機指定目錄
因爲gitlab須要使用ssh鏈接,而且http地址須要使用固定地址(不然下載完的代碼可能呈現giturl爲127.0.0.1,因此咱們要進行略微的調整)

編輯鏡像配置:vim /home/gitlab/config/gitlab.rb

編輯鏡像配置:

# 配置http協議所使用的訪問地址,不加端口號默認爲80
external_url 'http://192.168.1.122'

# 配置ssh協議所使用的訪問地址和端口
gitlab_rails['gitlab_ssh_host'] = '192.168.1.122'
gitlab_rails['gitlab_shell_ssh_port'] = 222 # 此端口是run時22端口映射的222端口
:wq #保存配置文件並退出

重啓本地容器:docker restart gitlab

clipboard.png

後續建立項目和拉取代碼等常規操做再也不解釋

相關文章
相關標籤/搜索