Devops 開發運維高級篇之容器管理
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 //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": ["//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)訪問容器
//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
訪問://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": ["//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": ["//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