harbor部署
harbor介绍
Harbor 是一个开源的企业级容器镜像仓库,用于存储和分发 Docker 镜像及其他容器格式的镜像。
- Harbor 提供了一个集中化的存储库,方便团队成员共享和管理容器镜像。你可以将构建好的镜像推送到 Harbor 仓库中,其他成员可以从仓库中拉取镜像进行部署。
- Harbor 提供了一个直观的 Web 界面,方便用户管理镜像仓库、用户和权限等。你可以通过 Web 界面进行镜像的上传、下载、搜索和管理操作。
- Web 界面还提供了丰富的统计信息和日志记录,方便用户监控和审计镜像仓库的使用情况。
由于要使用python环境运行docker-compose,所有要验证python :python --version
pip是python的包管理工具,和yum对redhat的关系是一致的
查看安装python的第三方版本号 pip list
步骤
1.安装pip
yum -y install python2-pip
2.升级版本,没有指定源无法升级
pip install --upgrade pip
3.临时使用,指定版本号,升级pip
pip install --upgrade pip==20.3 -i https://mirrors.aliyun.com/pypi/simple
4.查看pip版本号,升级到20.3
pip list
5.安装docker-compose,忽略requests
[root@docker2 ~]# pip install docker-compose --ignore-installed requests -i https://mirrors.aliyun.com/pypi/simple
6.上传harbor文件,解压harbor
[root@docker2 ~]# ls
anaconda-ks.cfg docker.sh harbor-offline-installer-v2.11.1.tgz
[root@docker2 ~]# tar -zxvf harbor-offline-installer-v2.11.1.tgz
[root@docker2 ~]# ls
anaconda-ks.cfg harbor
docker.sh harbor-offline-installer-v2.11.1.tgz
7.harbor的配置文件是 harbor.yml但是解压后的目录中只有harbor.yml.tmpl(模板),复制它,改名
[root@docker2 ~]# cd harbor
[root@docker2 harbor]# ls
common.sh harbor.yml.tmpl LICENSE
harbor.v2.11.1.tar.gz install.sh prepare
[root@docker2 harbor]# cp harbor.yml.tmpl harbor.yml
[root@docker2 harbor]# ls
common.sh harbor.yml install.sh prepare
harbor.v2.11.1.tar.gz harbor.yml.tmpl LICENSE
8.修改配置文件
[root@docker2 harbor]# vim harbor.yml
修改主机地址,注释掉https安全网站的配置,查看用户(admin)和密码(Harbor12345)
9.执行初始化操作
[root@docker2 harbor]# ./prepare
prepare base dir is set to /root/harbor
docker: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?.
See 'docker run --help'. //没有安装,配置docker
10.安装docker,配置docker的相关配置
{"registry-mirrors": ["https://do.nark.eu.org","https://dc.j8.work","https://docker.m.daocloud.io","https://dockerproxy.com","https://docker.mirrors.ustc.edu.cn","https://docker.nju.edu.cn"],"hosts": ["tcp://0.0.0.0:2375","unix:///var/run/docker.sock"],"insecure-registries":["http://192.168.118.57" //本机的IP地址]
}
11. 执行./prepare检查环境,下载镜像
[root@docker2 harbor]# ./prepare
12.执行./install.sh
13.docker ps --all
14.在远程主机上访问80,登录,查看项目
15.上传:先登录,在上传
登录
docker login http://192.168.118.57
用户:admin
密码:Harbor12345
打标签
docker tag centos:latest 192.168.118.57/library/wjcentos:v0
上传
docker push 192.168.118.57/library/wjcentos:v0
16.在浏览器上查看上传的镜像
17.测试:
新建一台机器,在该机器上拉取刚刚上传的镜像(192.168.118.57/library/wjcentos:v0)
在新机器上编辑docker配置文件(/etc/docker/daemon.json),添加安装harbor主机的IP地址
"insecure-registries":["http://192.168.118.55:5000","http://192.168.118.57" ]
[root@docker1 ~]# docker pull 192.168.118.57/library/wjcentos:v0
v0: Pulling from library/wjcentos
Digest: sha256:a1801b843b1bfaf77c501e7a6d3f709401a1e0c83863037fa3aab063a7fdb9dc
Status: Downloaded newer image for 192.168.118.57/library/wjcentos:v0
192.168.118.57/library/wjcentos:v0
[root@docker1 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
192.168.118.55:5000/centos yum 11c7f617cd4a 47 hours ago 272MB
192.168.118.57/library/wjcentos v0 5d0da3dc9764 2 years ago 231MB
centos latest 5d0da3dc9764 2 years ago 231MB
docker-compose
注意事项:
要在 docker-compose.yml ⽂件所在的⽬录下才能通过 docker compose 命令启动容器。
执行docker-compose命令时必须要在harbor目录下,因为docker-compose依赖harbor
[root@docker2 harbor]# ls
common docker-compose.yml harbor.yml install.sh prepare
common.sh harbor.v2.11.1.tar.gz harbor.yml.tmpl LICENSE
[root@docker2 harbor]# docker compose start|stop|down
docker-compose定义
yaml注意事项
docker compose命令选项
docker-compose实例
新建一台机器(192.168.118.58)
1.安装pip,docker-compose
12 yum -y install python2-pip
17 pip install --upgrade pip==20.3 -i https://mirrors.aliyun.com/pypi/simple
18 pip install docker-compose -i https://mirrors.aliyun.com/pypi/simple
19 pip list
2.安装docker,配置docker的相关内容
[root@docker3 test]# vi /usr/lib/systemd/system/docker.service
[root@docker3 test]# systemctl daemon-reload
[root@docker3 test]# systemctl restart docker
3.创建yml文件,创建数据卷目录,启动compose集群
[root@docker3 ~]# mkdir test # 创建⼀个⽬录,该⽬录是⼀个:(project)⼯程
[root@docker3 ~]# cd test
[root@docker3 test]# mkdir html #创建数据卷目录
[root@docker3 test]# echo "我是被编排的nginx" > ./html/index.html #创建索引文件
[root@docker3 test]# vi docker-compose.yml #这⾥⽂件名称是固定不变的version: "3"
services:nginx:container_name: c1image: "nginx:latest"ports:- "80:80"volumes:- /root/test/html/:/usr/share/nginx/html/ #挂载[root@docker3 test]# ls
docker-compose.yml html# 启动⼯程后会根据指定的容器名称,⽣成对应的容器[root@docker3 test]# docker compose up -d
WARN[0000] /root/test/docker-compose.yml: `version` is obsolete
[+] Running 8/8✔ nginx Pulled 99.5s ✔ e4fff0779e6d Pull complete 22.0s ✔ 2a0cb278fd9f Pull complete 23.5s ✔ 7045d6c32ae2 Pull complete 23.5s ✔ 03de31afb035 Pull complete 23.5s ✔ 0f17be8dcff2 Pull complete 23.5s ✔ 14b7e5e8f394 Pull complete 23.5s ✔ 23fa5a7b99a6 Pull complete 24.1s
[+] Running 2/2✔ Network test_default Created 0.2s ✔ Container c1 Started 0.4s
[root@docker3 test]# systemctl stop firewalld
[root@docker3 test]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 5ef79149e0ec 2 weeks ago 188MB
[root@docker3 test]# docker ps --all
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
189bcd639c76 nginx:latest "/docker-entrypoint.…" 16 minutes ago Up 16 minutes 0.0.0.0:80->80/tcp, :::80->80/tcp c1
4.在浏览器上访问: