Docker 創(chuàng)建私有鏡像倉庫

Docke構(gòu)建私有Registry

1. 啟動(dòng)registry

docker run -d -p 5000:5000 --restart=always --name="registry" -v /data/registry:/var/lib/registry registry

2. 修改配置文件

vim /etc/docker/daemon.json
{
    "registry-mirrors": ["https://68rmyzg7.mirror.aliyuncs.com"],
    "insecure-registries": ["192.168.1.105:5000"]
}

修改完重啟docker

3. 制作本地鏡像并push到registry

上傳鏡像需要把鏡像名改成標(biāo)準(zhǔn)格式
registry服務(wù)地址:服務(wù)端口號(hào)/用戶名/項(xiàng)目名:版本號(hào)

192.168.1.105:5000/jiuyangperp/nginx:v1

docker tar nginx:latest 192.168.1.105:5000/jiuyangperp/nginx:v1
docker push 192.168.1.105:5000/jiuyangperp/nginx:v1

4. 異地pull鏡像

docker pull 192.168.1.105:5000/jiuyangperp/nginx:v1

5. 本地倉庫加安全認(rèn)證

生成密碼:
yum install http-tools -y
mkdir /opt/registry-auth/ -p
htpasswd -Bbn admin jiuyang1205 > /opt/registry-auth/htpasswd

6. 重新啟動(dòng)帶有密鑰功能的registry容器

docker rm registry
docker -d -p 5000:5000 -v /opt/registry-auth/:/auth/ -v /data/registry:/var/lib/registry --name="registry-auth" -e "REGISTRY_AUTH=htpasswd" -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" -e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" registry

7. push鏡像捐晶,需要進(jìn)行登錄

docker login 192.168.1.105:5000
Username:
Password:

harbor實(shí)現(xiàn)圖形化私有鏡像倉庫

Harbor是一個(gè)用于存儲(chǔ)和分發(fā)Docker鏡像的企業(yè)級(jí)Registry服務(wù)器,通過添加一些企業(yè)必須的功能特性,例如安全、標(biāo)識(shí)和管理等拆魏,擴(kuò)展了開源Docker Distribution酸钦。作為一個(gè)企業(yè)級(jí)私有Registry服務(wù)器,Harbor提供了更好的性能和安全夫偶。提升用戶 使用Registry構(gòu)建和運(yùn)行環(huán)境傳輸鏡像的效率蛉拙。Harbor支持安裝在多個(gè)Registry節(jié)點(diǎn)的鏡像資源復(fù)制尸闸,鏡像全部保存在私有Registry中,確保數(shù)據(jù)和知識(shí)產(chǎn)權(quán)在公司內(nèi)部網(wǎng)絡(luò)中管控。另外室叉,Harbor也提供了高級(jí)的安全特性睹栖,諸如用戶管理,訪問控制和活動(dòng)審計(jì)等茧痕。

  • 基于角色的訪問控制—用戶與Docker鏡像倉庫通過“項(xiàng)目”進(jìn)行組織管理,一個(gè)用戶可以對(duì)多個(gè)鏡像倉庫在同一命名空間(project)里有不同的權(quán)限恼除。
  • 鏡像復(fù)制—鏡像可以在多個(gè)Registry石磊中復(fù)制(同步)踪旷。尤其適合于負(fù)載均衡,高可用豁辉,混合云和多云的場景令野。
  • 圖形化用戶界面—用戶可以通過瀏覽器來瀏覽,檢索當(dāng)前Docker鏡像倉庫徽级,管理項(xiàng)目和命名空間气破。
  • AD/LDAP支持—Harbor可以繼承企業(yè)內(nèi)部已有的AD/LDAP,用于鑒權(quán)認(rèn)證管理餐抢。
  • 審計(jì)管理—所有針對(duì)鏡像倉庫的操作都可以被記錄追溯现使,用于審計(jì)管理。
  • 國際化—已擁有英文旷痕、中文碳锈、德文、日文和俄文的本地化版本欺抗。更多的語言將會(huì)添加進(jìn)來售碳。
  • RESTful API—RESTful API 提供給管理員對(duì)于Harbor更多的操控,使得與其它的管理軟件集成變得更容易绞呈。
  • 部署簡單—提供在線和離線兩種安裝工具贸人,也可以安裝到vSphere平臺(tái)(OVA方式)虛擬設(shè)備。

1 Install Docker CE

apt-get update
apt-get install apt-transport-https ca-certificates software-properties-common curl
curl -fsSL https://download.docker.com/linux/ubuntu/gpg |sudo apt-key add -
apt-key fingerprint 0EBFCD88
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
apt-get update
apt-get install docker-ce

2 Install Docker-compose

curl -L "https://github.com/docker/compose/releases/download/1.22.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
#查看版本
docker --version
Docker version 18.09.0, build 4d60db4
docker-compose --version
docker-compose version 1.22.0, build f46880fe

3 Install Harbor

wget https://storage.googleapis.com/harbor-releases/release-1.6.0/harbor-offline-installer-v1.6.0.tgz
tar -zxvf harbor-offline-installer-v1.6.0.tgz
#編輯配置文件
cd harbor/
vim harbor.cfg
hostname = www.harbor.mobi # 這里配置的監(jiān)聽地址佃声,可以是域名
harbor_admin_password = password # 配置admin用戶的密碼
#http:
#  port: 80
https:
  # https port for harbor, default is 443
  port: 443
  # The path of cert and key files for nginx
 
  certificate: /data/cert/www.harbor.mobi.crt
  private_key: /data/cert/www.harbor.mobi.key
# 注意證書路徑

所有需要使用鏡像倉庫的docker主機(jī):
echo "192.168.1.150  www.harbor.mobi" >> /etc/hosts

4 運(yùn)行證書一鍵生成腳本:

#!/bin/bash

# 在該目錄下操作生成證書艺智,正好供harbor.yml使用
mkdir -p /data/cert
cd /data/cert

openssl genrsa -out ca.key 4096
openssl req -x509 -new -nodes -sha512 -days 3650 -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=www.harbor.mobi" -key ca.key -out ca.crt
openssl genrsa -out www.harbor.mobi.key 4096
openssl req -sha512 -new -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=www.harbor.mobi" -key www.harbor.mobi.key -out www.harbor.mobi.csr

cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names

[alt_names]
DNS.1=www.harbor.mobi
DNS.2=harbor
DNS.3=ks-allinone
EOF

openssl x509 -req -sha512 -days 3650 -extfile v3.ext -CA ca.crt -CAkey ca.key -CAcreateserial -in www.harbor.mobi.csr -out www.harbor.mobi.crt
    
openssl x509 -inform PEM -in www.harbor.mobi.crt -out www.harbor.mobi.cert

cp www.harbor.mobi.crt /etc/pki/ca-trust/source/anchors/www.harbor.mobi.crt 
update-ca-trust

5 把這三個(gè)密鑰文件復(fù)制到docke下,所有節(jié)點(diǎn)都需要

mkdir -p /etc/docker/certs.d/www.harbor.mobi/
cp /data/cert/www.harbor.mobi.cert /etc/docker/certs.d/www.harbor.mobi/
cp /data/cert/www.harbor.mobi.key /etc/docker/certs.d/ywww.harbor.mobi/
cp /data/cert/ca.crt /etc/docker/certs.d/www.harbor.mobi/


最終docker目錄結(jié)構(gòu):
/etc/docker/certs.d/
    └── www.harbor.mobi
       ├── www.harbor.mobi.cert  <-- Server certificate signed by CA
       ├── www.harbor.mobi.key   <-- Server key signed by CA
       └── ca.crt               <-- Certificate authority that signed the registry certificate
# 重啟docker
systemctl restart docker.service

# 停止
docker-compose down -v

# 重新生成配置文件
./prepare --with-notary --with-clair --with-chartmuseum

# 啟動(dòng)
docker-compose up -d

問題:

docker login https://192.168.75.100

x509: cannot validate certificate for 192.168.75.100 because it doesn't contain any IP SANs

排查步驟:
檢查harbor.yml文件中hostname變量的值是否跟生成證書使用的一致秉溉,并檢查系統(tǒng)時(shí)間

官方步驟示例:

#set hostname
hostname: yourdomain.com

http:
  port: 80

https:
  # https port for harbor, default is 443
  port: 443
  # The path of cert and key files for nginx
  certificate: /data/cert/yourdomain.com.crt
  private_key: /data/cert/yourdomain.com.key
# 生成使用的相關(guān)證書
openssl genrsa -out ca.key 4096

openssl req -x509 -new -nodes -sha512 -days 3650 \
    -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=yourdomain.com" \
    -key ca.key \
    -out ca.crt

openssl genrsa -out yourdomain.com.key 4096

openssl req -sha512 -new \
    -subj "/C=CN/ST=Beijing/L=Beijing/O=example/OU=Personal/CN=yourdomain.com" \
    -key yourdomain.com.key \
    -out yourdomain.com.csr

cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names

[alt_names]
DNS.1=yourdomain.com
DNS.2=yourdomain
DNS.3=hostname
EOF

openssl x509 -req -sha512 -days 3650 \
    -extfile v3.ext \
    -CA ca.crt -CAkey ca.key -CAcreateserial \
    -in yourdomain.com.csr \
    -out yourdomain.com.crt

openssl x509 -inform PEM -in yourdomain.com.crt -out yourdomain.com.cert

# 把這三個(gè)復(fù)制到docke下
cp yourdomain.com.cert /etc/docker/certs.d/yourdomain.com/
cp yourdomain.com.key /etc/docker/certs.d/yourdomain.com/
cp ca.crt /etc/docker/certs.d/yourdomain.com/


最終docker目錄結(jié)構(gòu):
/etc/docker/certs.d/
    └── yourdomain.com:port
       ├── yourdomain.com.cert  <-- Server certificate signed by CA
       ├── yourdomain.com.key   <-- Server key signed by CA
       └── ca.crt               <-- Certificate authority that signed the registry certificate
# 重啟docker
systemctl restart docker.service

cp 192.168.75.100.crt /etc/pki/ca-trust/source/anchors/192.168.75.100.crt 
update-ca-trust

# harbor證書配置
cp yourdomain.com.crt /data/cert/
cp yourdomain.com.key /data/cert/

# 重新生成配置文件
./prepare --with-notary --with-clair --with-chartmuseum

# 停止
docker-compose down -v

# 啟動(dòng)
docker-compose up -d
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末力惯,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子召嘶,更是在濱河造成了極大的恐慌父晶,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,427評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件弄跌,死亡現(xiàn)場離奇詭異甲喝,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)铛只,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門埠胖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來糠溜,“玉大人,你說我怎么就攤上這事直撤》歉停” “怎么了?”我有些...
    開封第一講書人閱讀 165,747評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵谋竖,是天一觀的道長红柱。 經(jīng)常有香客問我,道長蓖乘,這世上最難降的妖魔是什么锤悄? 我笑而不...
    開封第一講書人閱讀 58,939評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮嘉抒,結(jié)果婚禮上零聚,老公的妹妹穿的比我還像新娘。我一直安慰自己些侍,他們只是感情好隶症,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,955評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著娩梨,像睡著了一般沿腰。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上狈定,一...
    開封第一講書人閱讀 51,737評(píng)論 1 305
  • 那天颂龙,我揣著相機(jī)與錄音,去河邊找鬼纽什。 笑死措嵌,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的芦缰。 我是一名探鬼主播企巢,決...
    沈念sama閱讀 40,448評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼让蕾!你這毒婦竟也來了浪规?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,352評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤探孝,失蹤者是張志新(化名)和其女友劉穎笋婿,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體顿颅,經(jīng)...
    沈念sama閱讀 45,834評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡缸濒,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,992評(píng)論 3 338
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片庇配。...
    茶點(diǎn)故事閱讀 40,133評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡斩跌,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出捞慌,到底是詐尸還是另有隱情耀鸦,我是刑警寧澤,帶...
    沈念sama閱讀 35,815評(píng)論 5 346
  • 正文 年R本政府宣布啸澡,位于F島的核電站揭糕,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏锻霎。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,477評(píng)論 3 331
  • 文/蒙蒙 一揪漩、第九天 我趴在偏房一處隱蔽的房頂上張望旋恼。 院中可真熱鬧,春花似錦奄容、人聲如沸冰更。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蜀细。三九已至,卻和暖如春戈盈,著一層夾襖步出監(jiān)牢的瞬間奠衔,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評(píng)論 1 272
  • 我被黑心中介騙來泰國打工塘娶, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留归斤,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,398評(píng)論 3 373
  • 正文 我出身青樓刁岸,卻偏偏與公主長得像脏里,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子虹曙,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,077評(píng)論 2 355