1. 程式人生 > 其它 >K8S--docker--搭建私有倉庫

K8S--docker--搭建私有倉庫

一、環境準備

  1、禁用swap分割槽 

vim  /etc/fstab   
# 將下面的內容註釋掉
#/dev/mapper/centos-swap swap  

  2、修改主機名及時間同步

# 設定主機名
hostnamectl set-hostname harbor

# 時間同步
yum -y install ntp
systemctl enable ntpd
systemctl start ntpd
ntpdate -u cn.pool.ntp.org
hwclock --systohc
timedatectl set-timezone Asia/Shanghai

  3、關閉防火牆及升級核心

# 關閉防火牆 Selinux
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config
 
# 升級核心
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
yum --enablerepo=elrepo-kernel install kernel-ml -y&&sed -i s/saved/0
/g /etc/default/grub&&grub2-mkconfig -o /boot/grub2/grub.cfg && reboot

二、安裝Docker、Docker-compose

  1、下載Docker包

wget https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-17.03.2.ce-1.el7.centos.x86_64.rpm
wget https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-selinux-17.03.2.ce-1.el7.centos.noarch.rpm
yum install docker-ce-selinux-17.03.2.ce-1.el7.centos.noarch.rpm -y yum install docker-ce-17.03.2.ce-1.el7.centos.x86_64.rpm -y

  2、設定開機啟動並替換docker配置

  說明一下:Docker預設從官方拉取映象,並且從1.12版本之後,預設私有倉庫是使用https來進行連線,我們需要將使用私服的主機上docker啟動檔案進行修改,在啟動命令新增--insecure-registry 192.168.1.197 Docker-compose Install,其中IP為主機IP

# 設定開機啟動並啟動docker
systemctl enable docker 
systemctl start docker 
# 替換docker相關配置
sed -i '/ExecStart=\/usr\/bin\/dockerd/i\ExecStartPost=\/sbin/iptables -I FORWARD -s 0.0.0.0\/0 -d 0.0.0.0\/0 -j ACCEPT' /usr/lib/systemd/system/docker.service
sed -i '/dockerd/s/$/ \-\-storage\-driver\=overlay2 --insecure-registry 172.20.10.6/g' /usr/lib/systemd/system/docker.service

  3、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-compose --version

    Docker-Compose常用命令

docker-compose up -d           ###後臺啟動,如果容器不存在根據映象自動建立
docker-compose down -v         ###停止容器並刪除容器
docker-compose start           ###啟動容器,容器不存在就無法啟動,不會自動建立映象
docker-compose stop            ###停止容器

三、安裝Harbor

  1、下載Harbor

wget https://storage.googleapis.com/harbor-releases/harbor-offline-installer-v1.5.0.tgz
tar xf harbor-offline-installer-v1.5.0.tgz

  2、修改harbor配置檔案harbor.cfg

  將hostname修改為IP,不能使用localhost和127.0.0.1,對於配置檔案引數解釋如下所示

[root@master harbor]# grep -Ev "^$|^[#;]" harbor.cfg 
# Harbor版本
_version = 1.5.0
# hostname 設定訪問地址,可以使用IP/域名,不可以設定127.0.0.1 && localhost
hostname = 192.168.60.24
# 訪問協議,預設是http,也可以設定https,如果設定https,則nginx ssl需要設定on
ui_url_protocol = http
# Job 最大程序數
max_job_workers = 50 
# 是否建立證書,建立證書將會在下面的路徑下生成
customize_crt = on
ssl_cert = /data/cert/server.crt
ssl_cert_key = /data/cert/server.key
# 私鑰儲存路徑
secretkey_path = /data
# 設定日誌大小
admiral_url = NA
log_rotate_count = 50
log_rotate_size = 200M
# 是否使用代理
http_proxy =
https_proxy =
no_proxy = 127.0.0.1,localhost,ui
# 郵箱設定,傳送重置密碼郵件時使用
email_identity = 
email_server = smtp.mydomain.com
email_server_port = 25
email_username = [email protected]
email_password = abc
email_from = admin <[email protected]>
email_ssl = false
email_insecure = false
# 安裝Harbor後,管理員UI登陸的密碼,預設是Harbor12345
harbor_admin_password = Harbor12345
# 認證方式,這裡支援多種認證方式,比如LDAP、資料庫認證。預設是db_auth
auth_mode = db_auth
# LDAP認證時配置項
ldap_url = ldaps://ldap.mydomain.com
ldap_basedn = ou=people,dc=mydomain,dc=com
ldap_uid = uid 
ldap_scope = 2 
ldap_timeout = 5
ldap_verify_cert = true
ldap_group_basedn = ou=group,dc=mydomain,dc=com
ldap_group_filter = objectclass=group
ldap_group_gid = cn
ldap_group_scope = 2
#是否開啟自動註冊
self_registration = on
# Token有效時間,預設30分鐘
token_expiration = 30
# 使用者建立專案許可權控制,預設是everyone(所有人),也可以設定為adminonly(管理員)
project_creation_restriction = everyone
# Mysql資料庫root使用者預設密碼root123,根據實際時使用來進行修改
db_host = mysql
db_password = root123
db_port = 3306
db_user = root
# Redis配置
redis_url = redis:6379
clair_db_host = postgres
clair_db_password = password
clair_db_port = 5432
clair_db_username = postgres
clair_db = postgres
uaa_endpoint = uaa.mydomain.org
uaa_clientid = id
uaa_clientsecret = secret
uaa_verify_cert = true
uaa_ca_cert = /path/to/ca.pem
registry_storage_provider_name = filesystem
registry_storage_provider_config = 

  3、安裝

./install.sh

  4、驗證

docker images
docker-compose ps

      

四、訪問Harbor

  直接訪問IP即可,預設為80埠,如果要修改埠,可以修改docker-compose.yaml對應服務的對映

  管理員使用者名稱為admin,密碼為harbor.cfg配置檔案中配置的密碼

      

五、客戶端免HTTPS 

  這個是為了可以使用http的方式上傳映象

echo '{ "insecure-registries":["172.20.10.6"] }' > /etc/docker/daemon.json
# 重啟docker
service docker restart
# 重啟 harbor
exit 後重新連線

  驗證:

docker login 172.20.10.6

    

六、配置私有倉庫

  1、建立使用者:

    

  2、新建專案:

    

  3、檢視拉取映象命令

    點選專案,在專案中新增人員:

    

  4、拉取映象

    修改/etc/docker/daemon.json

    registry-mirrors:映象加速地址;insecure-registries:Docker如果需要從非SSL源管理映象,這裡加上

{
   "registry-mirrors":["https://7bc3o1s2.mirror.aliyuncs.com"],
   "insecure-registries":["192.168.124.21"]
}

    拉取Nginx映象作為測試使用

docker pull nginx:1.16

    給映象打上標籤 - 映象倉庫地址/專案名稱/標籤資訊

docker image tag nginx:1.16 172.20.10.6/lcltest/nginx:lcl

    登入倉庫

docker login 172.20.10.6

    複製第3步中檢視拉取映象命令中的命令,修改映象源名稱和tag,並設定自己的映象名稱,打完映象後,將映象推送至映象倉庫。

      

docker tag nginx:1.16 192.168.124.21/nginx/lcltestnginx:lcl
docker images
docker push 192.168.124.21/nginx/lcltestnginx:lcl

    

  說明:文章中有的ip是172.20.10.6,有的是192.168.124.21,是因為我在公司的電腦上和家裡電腦上都做了部分驗證,導致前後ip可能不一致。

------------------------------------------------------------------
-----------------------------------------------------------
---------------------------------------------
朦朧的夜 留筆~~