因為沒有網路,或是image本身並不是在docker hub公開的, 可以利用docker save image-nametarget-file的語法來匯出tar檔:
docker save registry-server:5000/datastash > datastash.tar
docker save registry-server:5000/acl > acl.tar
docker save registry-server:5000/sdlc > sdlc.tar
docker save registry-server:5000/jenkins > jenkins.tar
docker save registry-server:5000/psql > psql.tar
docker save sonarqube > sonarqube.tar
docker save docker.elastic.co/kibana/kibana:7.0.1 > kibana.tar
docker save docker.elastic.co/elasticsearch/elasticsearch:7.0.1 > elasticsearch.tar
tags:
Docker
CentOS
Dockerized Service 部署指南
一、前言
本文主要是說明如何在 CentOS 上於有網路及無網路時安裝 Docker,接著將容器化的系統部署在機器上的流程,
閱讀此篇的前提假設是讀者已經會定義 Dockerfile 透過 Docker daemon 將服務建置成 docker image。
作業系統的環境配置如下:
二、安裝Docker(有網路)
先用uname -a檢查一下是x64且3.10以上:
接著follow官方的步驟:
錯誤訊息告知docker daemon沒在運行,如下修正:
看到Client跟Server都有出現就對了,
如果此時有網路連線可以再測一下docker版的hello world:
嗯!看來一切正常了!
三、安裝Docker(無網路)
特別留意: 以下步驟 1-7 皆需先在有網路的環境操作。
安裝 Epel(Extra Packages for Enterprise Linux)
指令:
yum install -y epel-release.noarch
安裝 yum-utils
這是為了之後會用到的 yum-config-manager 而安裝的
指令:
yum install yum-utils
安裝 docker CE yum 的 repository
指令1:
yum-config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo
指令2:
yum-config-manager --enable docker-ce-nightly
建置 yum 的快取
前面步驟1-3安裝了docker相關的package到yum的manager,因此要把yum cache裡的東西build一下
指令:
yum makecache fast
下載 docker 相關的 rpm
a. 先建一個 docker 資料夾
b. 再把相關的 rpm 載到該資料夾
指令:
yumdownloader --resolve docker-ce
將rpm打包成 tar
指令:
tar cvzf ~/docker.tar.gz *
在無網路的機器上安裝 docker
利用步驟6包好的 tar,解開其內容後執行rpm即可
指令1:
mkdir docker && tar xvf docker.tar.gz -C docker
指令2:
cd docker && rpm -ivh --replacefiles --replacepkgs *.rpm
驗證 docker 已安裝
指令:
docker version
如下圖,好像出了什麼錯?
這是因為還沒有把 docker 設定為 service 並重開服務
指令:
systemctl enable docker.service && systemctl restart docker
如下圖,有兩個區塊的資訊才正確
四、打包dockerized service的image
因為沒有網路,或是image本身並不是在docker hub公開的,
可以利用docker save image-name target-file的語法來匯出tar檔:
五、匯入打包的image
六、安裝docker-compose(有無網路都一樣)
從這裡下載binary檔
或透過指令:
七、利用docker-compose開啟所有service
以下所啟動的服務主要是筆者所在團隊開發的一套 叫 AVC 的產品,其他的 Domain 就不多加說明,重點在系統有如預期正常運作即可。
利用以下指令可以將docker-compose.yml裡所定義的服務都開啟:
由於要載入的服務相當之多,等console輸出的各種訊息到一個差不多的點(沒有再有新的輸出),可以打開瀏覽器來看是不是能正常登入AVC:
試著登入看看?
建一個gitlab/github的權限(如果客戶有的話)
建一個專案
新增一張申請單並啟動它
成功啦!
下載成功的結果
恭禧!已經用docker-compose啟動整套SSDLC了!
八、結論
以上就是 dockerized service 的部署,
由於客戶端很有可能是沒有網路的,什麼都不能裝或下載,
所以最後再提醒一下在客戶端「無」網路時必須先在「有網路」的環境需要備齊的檔案:
以上。