亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

centos7搭建docker私人倉庫的方法(kubernetes)

發布時間:2020-09-06 04:01:31 來源:腳本之家 閱讀:187 作者:VincentFF 欄目:服務器

我們平時鏡像都是習慣于放在公共倉庫的,比如Dockerhub, Daocloud。但在企業里,我們經常會需要搭建公司自己的鏡像倉庫。

這篇文章講解如何用docker提供的registry鏡像來搭建自己的鏡像倉庫。

不添加ssl認證的倉庫

下面用registry:2.6.2鏡像創建docker倉庫。

將宿主機的5000端口映射到容器的5000端口。

將宿主機/mnt/registry掛在到容器的/var/lib/registry目錄,容器里的這個目錄就是存放鏡像的地方。這樣可以將數據持久化,當容器掛掉時鏡像不會丟失。

mkdir /mnt/registry

docker run -d \
 -p 5000:5000 \
 --restart=always \
 --name registry \
 -v /mnt/registry:/var/lib/registry \
 registry:2.6.2

docker倉庫是需要ssl認證的,由于現在沒有添加ssl認證,需要在docker客戶端添加參數:

vim /etc/sysconfig/docker

# 在OPTIONS下添加--insecure-registry=<host-ip>:5000
OPTIONS='--selinux-enabled --log-driver=json-file --signature-verification=false --insecure-registry=10.34.31.13:5000'

# 重啟docker
systemctl restart docker

我們可以測試一下新建的倉庫是否可用。

docker push 10.34.31.13:5000/hello-world:v1

但這樣形式的倉庫可用性不高,比如我們有多個鏡像倉庫要使用,我們需要經常去修改--insecure-registry參數。

下面會講解如何創建一個https協議的高可用倉庫。

創建一個帶ssl認證的高可用倉庫

1、安裝openssl

yum install -y openssl

2、修改openssl.cnf文件

vim /etc/pki/tls/openssl.cnf

# 找到v3_ca,在下面添加宿主機的IP地址
[ v3_ca ]
subjectAltName = IP:10.34.31.13

如果沒有修改這個文件,最后生成的ssl證書使用時會報錯如下:

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

3、生成ssl證書

mkdir /certs
openssl req -newkey rsa:4096 -nodes -sha256 \
      -keyout /certs/domain.key -x509 -days 1000 \
      -out /certs/domain.cert

# 生成證書的過程中需要填寫以下參數,在Conmmon那一欄填寫你為dokcer倉庫準備的域名
Country Name (2 letter code) [AU]:CN
State or Province Name (full name) [Some-State]:
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:10.34.31.13:5000
Email Address []:

4、創建docker倉庫

# 這里啟動方式跟上面差別不大,多了掛載/certs文件夾和添加了兩個certificate參數
docker run -d \
 --restart=always \
 --name registry \
 -v /certs:/certs \
 -v /var/lib/registry:/var/lib/registry \
 -e REGISTRY_HTTP_ADDR=0.0.0.0:5000 \
 -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.cert \
 -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key \
 -p 5000:5000 \
 registry:2.6.2

5、配置docker客戶端

# 以后需要使用這個倉庫的機器,在客戶端像這樣配置一下就可以了
mkdir /etc/docker/certs.d/10.34.31.13:5000
cp /certs/domain.cert /etc/docker/certs.d/10.34.31.13:5000/ca.crt

# 現在就可以測試一下了
docker push 10.34.31.13:5000/hello-world:v1

使用kubernetes部署docker倉庫

上面的容器是由doker直接啟動的,由于我使用的是kubernetes集群,所以我希望一切容器都能由kubernetes來管理。

于是我為kubernetes集群添加了一個node節點,來做k8s集群的鏡像倉庫。

1、生成ssl證書

參考上面,在準備的node節點上生成ssl證書。

2、給node添加標簽

因為我只想在這臺節點上運行registry容器,所以需要給這臺節點添加標簽,便于k8s部署能只選到這臺節點。

# n3是這個節點的hostname.如果沒有添加k8s客戶端權限,可以在master節點上執行。
kubectl label node n3 bind-registry=ture

3、創建registry目錄,用于持久化images數據

mkdir /var/lib/registry

4、部署registry。dockerhub-dp.yaml我會在最后面貼出來。

kubectl create -f dockerhub-dp.yaml

5、配置docker客戶端

這個跟上面一個思路,端口稍有不同。

# 以后需要使用這個倉庫的機器,在客戶端像這樣配置一下就可以了
mkdir /etc/docker/certs.d/10.34.31.13:30003
cp /certs/domain.cert /etc/docker/certs.d/10.34.31.13:5000/ca.crt

為了訪問方便,我將registry service的端口設置為了NodePort,但k8s限制這個端口只能設置為30000以上,所有我這里設置為了30003。

dockerhub-dp.yaml

apiVersion: apps/v1beta2
kind: Deployment
metadata:
 name: docker-local-hub
 namespace: kube-system
 labels:
  app: registry
spec:
 replicas: 1
 selector:
  matchLabels:
   app: registry
 template:
  metadata:
   labels:
    app: registry
  spec:
   containers:
   - name: registry
    image: registry:2.6.2
    ports:
    - containerPort: 5000
    env:
    - name: REGISTRY_HTTP_TLS_CERTIFICATE
     value: "/certs/domain.cert"
    - name: REGISTRY_HTTP_TLS_KEY
     value: "/certs/domain.key"
    volumeMounts:
    - mountPath: /var/lib/registry
     name: docker-hub
    - mountPath: /certs
     name: certs
   nodeSelector:
    bind-registry: "ture"
   volumes:
   - name: docker-hub
    hostPath:
     path: /var/lib/registry
     type: Directory
   - name: certs
    hostPath:
     path: /certs
     type: Directory
---
apiVersion: v1
kind: Service
metadata:
 name: docker-local-hub
 namespace: kube-system
 labels:
  app: registry
spec:
 selector:
  app: registry
 ports:
 - port: 5000
  targetPort: 5000
  nodePort: 30003
 type: NodePort

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

松溪县| 余姚市| 万山特区| 浦江县| 哈巴河县| 霍邱县| 怀远县| 邯郸市| 历史| 玉溪市| 安溪县| 元朗区| 宁阳县| 沧州市| 佛冈县| 屯留县| 浏阳市| 白沙| 调兵山市| 福建省| 临湘市| 县级市| 临江市| 邢台市| 襄汾县| 伊金霍洛旗| 崇信县| 科尔| 重庆市| 泾阳县| 贵州省| 东明县| 故城县| 库尔勒市| 越西县| 湛江市| 瑞金市| 昌江| 大余县| 宜兰县| 商都县|