Devops 開發運維高階篇之容器管理
安裝docker
Dockerfile映象指令碼入門製作
Harbor映象倉庫安裝及使用
不過多解釋docker直接秀基操
安裝docker:(jenkins伺服器 20.0.0.30 、Harbor 20.0.0.50 、 生產伺服器 20.0.0.60)
命令操作可以見之前我的文章:docker 介紹及安裝操作 - 隱姓埋名4869 - 部落格園 (cnblogs.com)
systemctl stop firewalld setenforce 0 #安裝依賴包 yum -y install yum-utils device-mapper-persistent-date lvm2 #設定阿里雲映象源 yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo #安裝新版本docker yum -y install docker-ce #啟動並設定開機自啟動 systemctl start docker.service systemctl enable docker.service #映象加速下載(這裡是我的阿里雲的映象加速) vim /etc/docker/daemon.json { "registry-mirrors": ["https://au0weiai.mirror.aliyuncs.com"], "exec-opts": ["native.cgroupdriver=systemd"], "log-driver": "json-file", "log-opts": { "max-size": "100m" } } #載入重啟 systemctl daemon-reload systemctl restart docke #設定iPv4 vim /etc/sysctl.conf net.ipv4.ip_forward=1 #重啟網路卡重啟docker sysctl -p systemctl restart network systemctl restart docker
Dockerfile映象指令碼入門製作
Dockerfile其實就是我們用來構建Docker映象的原始碼,當然這不是所謂的程式設計原始碼,而是一些命令的組合,只要理解它的邏輯和語法格式,就可以編寫Dockerfile了。
簡單點說,Dockerfile的作用:它可以讓使用者個性化定製Docker映象。因為工作環境中的需求各式各樣,網路上的映象很難滿足實際的需求。
Dockerfile常見命令:
命令 |
作用 |
FROM image_name:tag |
|
MAINTAINER user_name |
宣告映象的作者 |
ENV key value |
設定環境變數 (可以寫多條) |
RUN command |
編譯映象時執行的指令碼(可以寫多條) |
CMD |
設定容器的啟動命令 |
ENTRYPOINT |
設定容器的入口程式 |
ADD source_dir/file dest_dir/file |
將宿主機的檔案複製到容器內,如果是一個壓縮檔案,將會在複製後自動解壓 |
COPY source_dir/file dest_dir/file |
和ADD相似,但是如果有壓縮檔案並不能解壓 |
WORKDIR path_dir |
設定工作目錄 |
ARG |
設定編譯映象時加入的引數 |
VOLUMN |
設定容器的掛載卷 |
具體用法可以看官網示例
接下來我們用dockerfile製作微服務映象
我們利用Dockerfile製作一個Eureka註冊中心的映象
上傳Eureka的微服務jar包到linux
cd ~ mkdir test cd test 把idea打包的jar包拖進test檔案裡!
1)編寫Dockerfile:
vim Dockerfile
FROM openjdk:8-jdk-alpine ARG JAR_FILE COPY ${JAR_FILE} app.jar EXPOSE 10086 ENTRYPOINT ["java","-jar","/app.jar"]
2) 構建映象
docker build --build-arg JAR_FILE=tensquare_eureka_server-1.0-SNAPSHOT.jar -t eureka:v1 .
3) 檢視映象是否建立成功
docker images
4) 建立容器
docker run -i --name=eureka -p 10086:10086 eureka:v1
5)訪問容器
http://20.0.0.50:10086
Harbor映象倉庫安裝及使用
Harbor是一個用於儲存和分發Docker映象的企業級Registry伺服器。
優勢:
- 提供分層傳輸機制,優化網路傳輸 Docker映象是是分層的,而如果每次傳輸都使用全量檔案(所以用FTP的方式並不適合),顯然不經濟。必須提供識別分層傳輸的機制,以層的UUID為標識,確定 傳輸的物件。
- 提供WEB介面,優化使用者體驗 只用映象的名字來進行上傳下載顯然很不方便,需要有一個使用者介面可以支援登陸、搜尋功能,包括區分公有、私有映象。
- 支援水平擴充套件叢集 當有使用者對映象的上傳下載操作集中在某伺服器,需要對相應的訪問壓力作分解。
- 良好的安全機制 企業中的開發團隊有很多不同的職位,對於不同的職位人員,分配不同的許可權, 具有更好的安全性。
安裝Harbor:
#把docker-compose 拖進harbor伺服器
#然後給許可權,並移動目錄
chmod +x docker-compose mv docker-compose /usr/local/bin
#把harbor安裝包拖進去harbor伺服器然後解壓
tar zxvf harbor-offline-installer-v1.9.2.tgz -C /opt
#然後去改配置檔案
cd /opt/harbor vim harbor.yml hostname: 20.0.0.50 port: 85
#然後,安裝Harbor(docker要處於啟動狀態)systemctl status docker 看一下
./prepare ./install.sh
訪問:http://20.0.0.50:85
預設賬戶:admin
預設密碼:Harbor12345
補充:
啟動harbor
docker-compose up -d 啟動
docker-compose stop 停止
docker-compose restart 重新啟動
Harbor上的操作:
1) 建立專案
Harbor的專案分為公開和私有的:
公開專案:所有使用者都可以訪問,通常存放公共的映象,預設有一個library公開專案。 私有專案:只有授權使用者才可以訪問,通常存放專案本身的映象。
我們可以為微服務專案建立一個新的專案:
2) 建立使用者
建立的使用者為: lvbu / Lvbu1234
3) 給私有專案分配使用者進入tensquare專案->成員
角色 |
許可權說明 |
訪客 |
對於指定專案擁有隻讀許可權 |
開發人員 |
對於指定專案擁有讀寫許可權 |
維護人員 |
對於指定專案擁有讀寫許可權,建立 Webhooks |
專案管理員 |
除了讀寫許可權,同時擁有使用者管理/映象掃描等管理許可權 |
4) 以新使用者登入Harbor
如何把之前建立的映象上傳到Harbor ?
Docker要把Harbo加入信任列表中
vim /etc/docker/daemon.json
{ "registry-mirrors": ["https://zydiol88.mirror.aliyuncs.com"], "insecure-registries": ["20.0.0.50:85"] }
然後重啟docker
systemctl restart docker
然後登入harbor 用之前建立的lvbu賬戶
docker login -u lvbu -p Lvbu1234 20.0.0.50:85
然後在推送一下下:
docker push 20.0.0.50:85/tensquare/eureka:v1
再去Harbor重新整理看一下:
如何拉取呢?
開一臺webserver伺服器,安裝好docker
然後修改配置:和之前的一樣的
vim /etc/docker/daemon.json
{ "registry-mirrors": ["https://zydiol88.mirror.aliyuncs.com"], "insecure-registries": ["20.0.0.50:85"] }
然後一樣~~:
先登入在拉取:
docker login -u lvbu -p Lvbu1234 20.0.0.50:85
登入上後直接在harbor找到專案映象然後點選複製命令
去執行就可以了:
最後檢視一下:docker images