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

 

 

 

Tags: