Docker镜像仓库Harbor离线部署
Docker容器应用的开发和运行离不开可靠的镜像管理,虽然Docker官方也提供了公共的镜像仓库,但是从安全和效率等方面考虑,部署我们私有环境内的Registry也是非常必要的。
Harbor下载地址:https://github.com/goharbor/harbor/releases
Harbor安装
前提准备:需要事先安装好docker,可参考Docker离线部署
1、安装docker-compose
#Harbor的部署需要事先安装好docker-compose
GitHub的docker-compose下载地址:https://github.com/docker/compose/releases
有网的情况可以直接执行以下命令下载,无网就通过上方地址手动下载下来放置/usr/local/bin/下并授予执行权限即可
curl -L "https://github.com/docker/compose/releases/download/1.29.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
#检查是否安装成功
docker-compose --version
2、解压安装包
tar -zxvf harbor-offline-installer-v1.5.3.tgz -C /usr/local
3、修改Harbor配置文件
cd /usr/local/harbor
vi docker-compose.yml
proxy: image: vmware/nginx-photon:v1.5.3 container_name: nginx restart: always volumes: - ./common/config/nginx:/etc/nginx:z networks: - harbor ports: #修改该项,默认对外映射为80端口,在此我改成了5000 - 5000:80 - 443:443 - 4443:4443
vi harbor.cfg
#修改为自己本机IP地址 hostname = 192.168.36.151
4、安装启动
./install.sh
5、验证
访问http://192.168.36.151:5000即可(自己的设备IP地址)
默认密码:admin/Harbor12345
在配置文件harbor.cfg下有说明,可以进行修改
harbor_admin_password = Harbor12345
如果修改了harbor配置文件,需要重启
docker-compose down
./prepare
docker-compose up -d
6、测试连通性
#使用docker访问下harbor看下是否可以成功连接
docker login http:192.168.36.151:5000
Username: admin Password: Harbor Error response from daemon: Get https://http:192.168.36.151:5000/v1/users/: dial tcp: too many colons in address http:192.168.36.151:5000
其实出现以上错误正常的,因为docker默认是https协议的,而harbor是http
7、Harbor的https协议配置
vi harbor.cfg
#修改以下配置
ui_url_protocol = https ssl_cert = /usr/local/harbor/data/cert/server.crt ssl_cert_key = /usr/local/harbor/data/cert/server.key
mkdir -p /usr/local/harbor/data/cert/
配置秘钥证书
openssl genrsa -des3 -out server.key 2048
Enter pass phrase for server.key:1234567 #输入密码 Verifying - Enter pass phrase for server.key:1234567 #输入密码
openssl req -new -key server.key -out server.csr
Enter pass phrase for server.key:1234567 #上方所创建的密码 Country Name (2 letter code) [XX]:CN #国家 State or Province Name (full name) []:BJ #省 Locality Name (eg, city) [Default City]:BJ #城市 以下可以都为空 Organization Name (eg, company) [Default Company Ltd]: Organizational Unit Name (eg, section) []: Common Name (eg, your name or your server's hostname) []:
cp server.key server.key.org
#退掉密码
openssl rsa -in server.key.org -out server.key
Enter pass phrase for server.key.org:1234567 #输入上方密码
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
chmod a+x server.crt server.csr server.key
mv server.crt server.key server.csr /usr/local/harbor/data/cert/
8、重启harbor
docker-compose down
./prepare
docker-compose up -d
此时再次访问harbor页面就会自动走https
但是此时其实docker还是无法连接harbor的
9、配置信任
vi /etc/systemd/system/docker.service
#修改以下项,Harbor的地址 ExecStart=/usr/bin/dockerd --insecure-registry 192.168.36.151
10、重启Docker
systemctl daemon-reload
systemctl restart docker.service
#再次使用docker访问下harbor看下是否可以成功连接,Login Succeeded即为成功
docker login 192.168.36.151
Username: admin Password: Harbor12345 Login Succeeded
Harbor的使用
#首先我们得需要拥有一个镜像,这里,我本地有一个tomcat镜像
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE tomcat latest c0e850d7b9bb 12 months ago 667 MB
#需要先给现有镜像打个tag
docker tag tomcat:latest 192.168.36.151/library/tomcat:latest
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE 192.168.36.151/library/tomcat latest c0e850d7b9bb 12 months ago 667 MB tomcat latest c0e850d7b9bb 12 months ago 667 MB
#上传镜像
docker push 192.168.36.151/library/tomcat:latest
#去Habor页面上查看
#从Harbor上拉取镜像
docker pull 192.168.36.151/library/tomcat:latest
若我们的镜像是私有(private)权限的话,则需要docker login认证后才可以进行push和pull操作