DockerRegistry
DockerRegistry的分類
Registry用于保存docker鏡像聂渊,包括景象的層次結(jié)構(gòu)和元數(shù)據(jù)
用戶可以自建Registry稚铣,也可以使用官方的dockerhub
-
分類如下:
Sponsor Restory:第三方的registry狰住,供客戶和docker社區(qū)使用
Mirror Registry:第三方的registry景鼠,只供客戶使用
Vendor Registry: 由發(fā)布Docker鏡像的供應(yīng)商提供的Registry
Private Registry:通過(guò)舍友防火墻和額外安全層的私有實(shí)體提供的Registry
Docker Registry的組成
-
Repostory
由特定的docker鏡像的所有迭代版本組成的鏡像倉(cāng)庫(kù)
-
一個(gè)registry可以存在多個(gè)Repostory
Registory可以分為
頂層倉(cāng)庫(kù)
和用戶倉(cāng)庫(kù)
用戶倉(cāng)庫(kù)名稱更是為
用戶名/倉(cāng)庫(kù)名
每個(gè)倉(cāng)庫(kù)可以包含多個(gè)
Tag
葛菇,每個(gè)Tag只對(duì)應(yīng)一個(gè)鏡像
Index: 維護(hù)用戶賬戶从媚,鏡像的校驗(yàn)以及公共命名空間信息逞泄,相當(dāng)于為Registry提供了一個(gè)擁護(hù)認(rèn)證和檢索的接口
鏡像的制作 與推送
docker registry中的鏡像由開(kāi)發(fā)或者運(yùn)維人員制作,而后推送到“公共”或者“私有”Repostry上保存拜效,供其他人使用
例如: 部署到生產(chǎn)環(huán)境
Docker私有倉(cāng)庫(kù)的搭建
-
注意事項(xiàng)
生產(chǎn)環(huán)境需要構(gòu)建成高可用形式
使用阿里云鏡像倉(cāng)庫(kù)喷众,創(chuàng)建私有倉(cāng)庫(kù)即可
安裝和配置私有倉(cāng)庫(kù)
docker-distribution的配置與使用
- 配置docker-distribution
[root@centos7-node2 ~]# yum -y install docker-distribution
[root@centos7-node2 ~]# vim /etc/docker-distribution/registry/config.yml
version: 0.1
log:
fields:
service: registry
storage:
cache:
layerinfo: inmemory
filesystem:
rootdirectory: /data/registry
http:
addr: :5000
[root@centos7-node2 ~]# mkdir /data/registry
[root@centos7-node2 ~]# systemctl restart docker-distribution
- 打tag與上傳鏡像
[root@centos7-node1 ~]# vim /etc/docker/daemon.json
{
"bip": "172.31.0.1/16",
"registry-mirrors": ["https://0b8hhs68.mirror.aliyuncs.com"],
"insecure-registries": ["http://192.168.56.12:5000"],
"storage-driver": "overlay2",
"graph":"/data/docker",
"storage-opts": [
"overlay2.override_kernel_check=true"
]
}
[root@centos7-node1 ~]# scp /etc/docker/daemon.json 192.168.56.12:/etc/docker/
[root@centos7-node1 ~]# ssh 192.168.56.12 systemctl restart docker
[root@centos7-node1 ~]# systemctl restart docker
[root@centos7-node1 ~]# docker tag centos:7 192.168.56.12:5000/centos:7 #打標(biāo)簽
[root@centos7-node1 ~]# docker push 192.168.56.12:5000/centos:7 #上傳鏡像
[root@centos7-node1 ~]# docker tag myimg:v0.6 192.168.56.12:5000/myimg:v0.6
[root@centos7-node1 ~]# docker push 192.168.56.12:5000/myimg:v0.6 #上傳鏡像
[root@centos7-node2 v2]# docker pull 192.168.56.12:5000/myimg:v0.6
[root@centos7-node2 v2]# docker pull quay.io/coreos/flannel:v0.12.0-amd64 #獲取第三方鏡像
Harbor
-
依賴:
docker: 17.06+
docker-compose: 1.18+
-
部署與使用 - harbor-offline-installer-v2.0.0
- 默認(rèn)證書(shū)模式關(guān)閉
[root@centos7-node2 ~]# yum -y install epel-release docker docker-compose
[root@centos7-node2 ~]# tar xf harbor-offline-installer-v2.0.0.tgz
[root@centos7-node2 ~]# cd harbor
[root@centos7-node2 harbor]# cp harbor.yml.tmpl harbor.yml
hostname: 192.168.56.12
# http related config
http:
# port for http, default is 80\. If https enabled, this port will redirect to https port
port: 80
# https related config
#https:
# # https port for harbor, default is 443
# port: 443
# # The path of cert and key files for nginx
# certificate: /your/certificate/path
# private_key: /your/private/key/path
[root@centos7-node2 harbor]# mkdir /data/ #數(shù)據(jù)目錄默認(rèn)是/data
[root@centos7-node2 harbor]# bash install.sh #開(kāi)始安裝
登陸harbor: 默認(rèn)賬戶和密碼是(admin/Harbor12345)
創(chuàng)建賬戶
創(chuàng)建prod項(xiàng)目,并將創(chuàng)建的賬戶加入prod項(xiàng)目
在鏡像打tag并傳到上面創(chuàng)建的prod項(xiàng)目下
[root@centos7-node1 ~]# vim /etc/docker/daemon.json
{
"bip": "172.31.0.1/16",
"registry-mirrors": ["https://0b8hhs68.mirror.aliyuncs.com"],
"insecure-registries": ["http://192.168.56.12"],
"storage-driver": "overlay2",
"graph":"/data/docker",
"storage-opts": [
"overlay2.override_kernel_check=true"
]
}
[root@centos7-node1 ~]# systemctl restart docker
[root@centos7-node1 ~]# docker tag php-httpd:v0.6 192.168.56.12/prod/php-httpd:v0.6
[root@centos7-node1 ~]# docker login 192.168.56.12 #使用剛創(chuàng)建好的鏡像倉(cāng)庫(kù)的賬戶登陸即可
資源限制
NameSpace: 資源隔離
Cgroups: 資源限制
內(nèi)存(memory)資源的限制
- 常見(jiàn)參數(shù)
選項(xiàng) | 描述 |
---|---|
-m or --memory | 限制最大空間的內(nèi)存紧憾,要與--memory-swap結(jié)合使用 |
--memory-swap | 允許使用交換分區(qū)的大小(建議不啟用) |
--memory-swappiness | 使用交換分區(qū)的傾向性(建議不啟用) |
--memory-reservation | 給系統(tǒng)預(yù)留的內(nèi)存大小 |
--kernel-memory | 給內(nèi)核預(yù)留的內(nèi)存大小 |
--oom-kill-disable | 禁止oom而kill容器 |
CPU資源的限制
- 常見(jiàn)參數(shù)
選項(xiàng) | 描述 |
---|---|
--cpus=value | 指定占用cpu的容量到千,最大值是宿主機(jī)的CPU核心數(shù)(1core=1000m[微核]) |
--cpu-period=value | 傾向性指定,1.13之后被廢棄 |
--cpu-quota=value | 1.13之后被廢棄 |
--cpuset-cpus | 指定跑在哪個(gè)宿主機(jī)CPU核心上赴穗,實(shí)現(xiàn)CPU綁定 |
--cpu-shares | 共享CPU憔四,會(huì)按照配額動(dòng)態(tài)去占用宿主機(jī)cpu資源 |
docker-stress-ng壓測(cè)
[root@centos7-node1 ~]# docker pull lorel/docker-stress-ng
[root@centos7-node1 ~]# docker run --name stress -it --rm lorel/docker-stress-ng --help #查看幫助
[root@centos7-node1 ~]# docker run --name stress --cpus 2 --rm lorel/docker-stress-ng -c 2 #對(duì)2核心CPU機(jī)器壓測(cè)
[root@centos7-node1 ~]# docker run --name stress --cpus 2 --cpuset-cpus 0,1 ---rm lorel/docker-stress-ng -c 2 #對(duì)2核心CPU機(jī)器壓測(cè)(只壓測(cè)第0核和第1核心)
[root@centos7-node1 ~]# docker run --name stress -m 512m --rm lorel/docker-stress-ng -vm 2 # 內(nèi)存壓測(cè)總共512m的內(nèi)存,分給兩個(gè)進(jìn)程