Harbor
Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器。
如:
gitlab : git 私服
nexus : maven 私服
harbor: docker 私服
下载
下载链接:https://github.com/goharbor/harbor.
压缩包下载地址:https://github.com/goharbor/harbor/releases.
百度网盘链接:https://pan.baidu.com/s/1y3pQUfhVfLlsbeNssgmYfw.
提取码:hhg5
关闭防火墙和启动docker
systemctl stop firewalld
systemctl start docker
上传至linux并解压
tar -zxvf harbor-offline-installer-v1.8.0.tgz.tar
修改配置文件
cd harbor
vim harbor.yml
# 修改为域名或你服务器 IP
hostname: 192.168.**.**
执行安装脚本。注:执行之前要安装 docker-compose
./install.sh
验证是否安装成功
通过浏览器访问 http://192.168.**.**
输入账号 admin,密码 Harbor12345,登录成功后可以创建项目
harbor 的启动和停止
# 启动
docker-compose start
# 停止
docker-comose stop
# 重启
docker-compose restart
设置集成服务器
设置私服(这里配置harbor服务器的ip)
在 /etc/docker/daemon.json 中增加如下内容(如果文件不存就新建该文件)
修改后记得重启docker
[root@base ~]# cd /etc/docker
[root@base docker]# ls
daemon.json key.json
[root@base docker]# vim daemon.json
[root@base docker]# cat daemon.json
{
"registry-mirrors":["https://plxiqtpg.mirror.aliyuncs.com"],
"insecure-registries":["192.168.182.131"]
}
[root@base docker]# systemctl restart docker
# 设置密码
[root@base docker]# vim harbor_pw
[root@base docker]# cat harbor_pw
Harbor12345
登录harbor
[root@base docker]# cat /etc/docker/harbor_pw | docker login 192.168.182.131 -u admin --password-stdin
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded
查看本地的镜像
docker images
标记想推送的镜像(镜像名按如下要求)
docker tag 镜像id harbor的ip/项目名/镜像名:tag
docker tag 5c9f0869c789 192.168.182.131/demo/image:1.0
推送镜像
docker push 镜像名:tag
拉去镜像
docker pull 镜像名:tag
具体操作流程
[root@base docker]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
image 1.0 5c9f0869c789 27 hours ago 332MB
openjdk 8-jre 26ac3f63d29f 3 days ago 273MB
mysql 5.7 c20987f18b13 4 days ago 448MB
mysql latest 3218b38490ce 4 days ago 516MB
[root@base docker]# docker tag 5c9f0869c789 192.168.182.131/demo/image:1.0
[root@base docker]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
192.168.182.131/demo/image 1.0 5c9f0869c789 27 hours ago 332MB
image 1.0 5c9f0869c789 27 hours ago 332MB
openjdk 8-jre 26ac3f63d29f 3 days ago 273MB
mysql 5.7 c20987f18b13 4 days ago 448MB
mysql latest 3218b38490ce 4 days ago 516MB
[root@base docker]# docker push 192.168.182.131/demo/image:1.0
The push refers to repository [192.168.182.131/demo/image]
79ba94021d45: Pushed
2c95a0eeb72b: Pushed
b4cfcb8385a8: Pushed
2b730cf18c09: Pushed
edeaba958753: Pushed
8bf42db0de72: Pushed
31892cc314cb: Pushed
11936051f93b: Pushed
1.0: digest: sha256:e18ed06a6d233dda2afce649f3ac809fe270108f8c045ad70422f84507ecafd9 size: 2000
在harbor上查看
拉取镜像
[root@base docker]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
192.168.182.131/demo/image 1.0 5c9f0869c789 27 hours ago 332MB
image 1.0 5c9f0869c789 27 hours ago 332MB
openjdk 8-jre 26ac3f63d29f 3 days ago 273MB
mysql 5.7 c20987f18b13 4 days ago 448MB
mysql latest 3218b38490ce 4 days ago 516MB
[root@base docker]# docker rmi -f 192.168.182.131/demo/image:1.0 image:1.0
[root@base docker]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
openjdk 8-jre 26ac3f63d29f 3 days ago 273MB
mysql 5.7 c20987f18b13 4 days ago 448MB
mysql latest 3218b38490ce 4 days ago 516MB
[root@base docker]# docker pull 192.168.182.131/demo/image:1.0
1.0: Pulling from demo/image
0e29546d541c: Already exists
9b829c73b52b: Already exists
cb5b7ae36172: Already exists
99ce012bef04: Already exists
22dc2a72d098: Already exists
9c69a57e10d9: Already exists
3fd945f3699a: Pull complete
c59823f8d50a: Pull complete
Digest: sha256:e18ed06a6d233dda2afce649f3ac809fe270108f8c045ad70422f84507ecafd9
Status: Downloaded newer image for 192.168.182.131/demo/image:1.0
192.168.182.131/demo/image:1.0
[root@base docker]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
192.168.182.131/demo/image 1.0 5c9f0869c789 27 hours ago 332MB
openjdk 8-jre 26ac3f63d29f 3 days ago 273MB
mysql 5.7 c20987f18b13 4 days ago 448MB
mysql latest 3218b38490ce 4 days ago 516MB
[root@base docker]# cd /usr/project/dockerfile/
[root@base dockerfile]# ls
data docker-compose.yaml Dockerfile right.jar share.jar user.jar
[root@base dockerfile]# vim docker-compose.yaml
[root@base dockerfile]# cat docker-compose.yaml
version: '3.1'
services:
mysql_linux: # 服务的名称
restart: always # 代表只要docker启动,那么这个容器就跟着一起启动
image: mysql:5.7 # 指定镜像路径
container_name: mysql_linux # 指定容器名称
ports:
- 3308:3306 # 指定端口号的映射
environment:
MYSQL_ROOT_PASSWORD: root # 指定MySQL的ROOT用户登录密码
TZ: Asia/Shanghai # 指定时区
volumes:
- ./data:/var/lib/mysql # 映射数据卷
springcloud_user: # 服务的名称
restart: always # 代表只要docker启动,那么这个容器就跟着一起启动
image: 192.168.182.131/demo/image:1.0 # 指定镜像路径
container_name: springcloud_user # 指定容器名称
ports:
- 7001:6001 # 指定端口号的映射
environment:
profiles: prod
TZ: Asia/Shanghai # 指定时区
[root@base dockerfile]# docker-compose up -d
mysql_linux is up-to-date
Creating springcloud_user ... done
[root@base dockerfile]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
aac754ed9c71 192.168.182.131/demo/image:1.0 "java -jar user_imag…" 21 seconds ago Up 20 seconds 0.0.0.0:7001->6001/tcp, :::7001->6001/tcp springcloud_user
0458ea31025a mysql:5.7 "docker-entrypoint.s…" 27 hours ago Up 16 minutes 33060/tcp, 0.0.0.0:3308->3306/tcp, :::3308->3306/tcp mysql_linux
测试成功
整理一张流程图