通过Dockerfile制作Docker镜像,然后搭建Harbor仓库,将镜像上传。

3 篇文章 0 订阅
1 篇文章 0 订阅

1、制作Docker镜像

1.1、首先编辑dockerfile文件

注意:制作镜像过程最好新建一个单独的空目录,然后进入这个空目录完成镜像制作过程,这样可以防止其他不必要的文件被打包进镜像里面。
我这里新建了一个data目录
命令:mkdir /data
进入该目录:cd /data
编辑dockerfile文件,这里我去名为centos.dockerfile。
命令:vim centos.dockerfile 在centos.dockerfile文件里添加如下内容:

#设置基本的镜像,后续命令都以这个镜像为基础,指定的centos版本是7,注意版本前使用冒号,不能用-等,否则会报错找不到源数据。
FROM centos:7
#构建镜像的作者信息
MAINTAINER  lht-2023-09
#重建rpm包数据库&安装依赖及所需要的工具&删除默认YUM源,使用YUM源为国内163 YUM源;
RUN rpm --rebuilddb;yum install make wget tar gzip passwd openssh-server gcc -y
#定义一个变量 变量的内容是下载163的基础源的地址
ENV REPOS_RUL http://mirrors.163.com/.help/CentOS7-Base-163.repo
#移除本地默认的yum源&下载163的基础源到指定位置
RUN rm -rf /etc/yum.repos.d/*;wget -P /etc/yum.repos.d/ $REPOS_RUL
#使用ssh-keygen生成ssh密钥,将yes命令的输出结果y,通过管道传递给ssh-keygen命令,这样ssh-keygen执行输出就不用再去输入“y”去确认了。
RUN yes|ssh-keygen -q -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key -N ''
RUN yes|ssh-keygen -q -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N ''
RUN yes|ssh-keygen -q -t ed25519 -f /etc/ssh/ssh_host_ed25519_key -N ''
#配置SSHD&修改root密码为Pa55Word
RUN echo 'Pa55Word' | passwd --stdin root
#启动SSHD服务进程,对外暴露22端口;
#只是声明端口,是做端口映射的依据
EXPOSE  22
CMD /usr/sbin/sshd -D

#ssh-keygen的主要参数如下:

# -b BITS  指定密钥长度。
# -e 读取私有或公共 OpenSSH 密钥文件并以 -m 选项指定的格式之一将密钥打印到标准输出。
# -C 添加注释。
# -f FILENAME 指定用来保存密钥的文件名。
# -i 以 -m 选项指定的格式读取未加密的私钥(或公钥)文件,并将 OpenSSH 兼容的私钥(或公钥)打印到 stdout。
# -l 显示公钥文件的指纹数据。
# -m KEY_FORMAT 为 -i(导入)或 -e(导出)转换选项指定密钥格式。支持的密钥格式为:“RFC4716”(RFC 4716/SSH2 公钥或私钥)、“PKCS8”(PEM PKCS8 公钥)或“PEM”(PEM 公钥)。 默认转换格式为“RFC4716”。
# -N 提供一个新密语。
# -P PASSPHRASE 提供(旧)密语。
# -q 静默模式。
# -t 指定要创建的密钥类型。可能的值为“dsa”、“ecdsa”、“ecdsa-sk”、“ed25519”、“ed25519-sk”或“rsa”。
# -y 从 OpenSSH 格式的私钥导出公钥。

1.2、使用docker build 来生成镜像

命令:docker build -t centos:ssh - < centos.dockerfile
在这里插入图片描述

2、搭建Harbor仓库

2.1、部署安装Docker-Compose快速编排工具

2.1.1、下载Docker-Compose

Docker-Compose本身就是一个程序(添加执行权限后可以执行),所以我们一般把他下载到/usr/local/bin/目录下

[root@localhost ~]# cd /usr/local/bin
[root@localhost bin]#
[root@localhost bin]# curl -L "https://github.com/docker/compose/releases/download/v2.17.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
[root@localhost bin]# ls
docker-compose  docker-compose.bak
2.1.2、给Docker-Compose添加执行权限
[root@localhost bin]# chmod u+x docker-compose
[root@localhost bin]# ls
docker-compose  docker-compose.bak
[root@localhost bin]# docker-compose --version
Docker Compose version v2.17.2
2.1.3、添加软链接(以后方便启动)
[root@localhost bin]# ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
[root@localhost bin]#

2.2、部署安装harbor

2.2.1、下载Habor并且解压

创建Habor下载目录并进入目录

[root@localhost bin]# cd /data/download/
[root@localhost download]# ls
[root@localhost download]# mkdir harbor
[root@localhost download]# cd harbor/
[root@localhost harbor]# 

下载harbor

[root@localhost harbor]# wget -c https://github.com/goharbor/harbor/releases/download/v2.7.1/harbor-offline-installer-v2.7.1.tgz
--2023-09-14 23:15:58--  https://github.com/goharbor/harbor/releases/download/v2.7.1/harbor-offline-installer-v2.7.1.tgz
Resolving github.com (github.com)... 20.205.243.166
Connecting to github.com (github.com)|20.205.243.166|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://objects.githubusercontent.com/github-production-release-asset-2e65be/50613991/7a5d660d-3ac0-493e-ac50-ece279e39505?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-X4CSVEH53A%2F20230914%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20230914T071601Z&X-Amz-Expires=300&X-Amz-Signature=01e0cf54ef76b0c371f46e0a666787922c6379a54c6c31514c4bc3cfHeaders=host&actor_id=0&key_id=0&repo_id=50613991&response-content-disposition=attachment%3B%20filename%3Dharbor-offline-installer-v2.7.1.tgz&response-content-type=applicatollowing]
--2023-09-14 23:15:59--  https://objects.githubusercontent.com/github-production-release-asset-2e65be/50613991/7a5d660d-3ac0-493e-ac50-ece279e39505?X-Amz-Algorithm=AWS4-HMAtial=AKIAIWNJYAX4CSVEH53A%2F20230914%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20230914T071601Z&X-Amz-Expires=300&X-Amz-Signature=01e0cf54ef76b0c371f46e0a666787922c6379a5473&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=50613991&response-content-disposition=attachment%3B%20filename%3Dharbor-offline-installer-v2.7.1.tgz&response-contenoctet-stream
Resolving objects.githubusercontent.com (objects.githubusercontent.com)... 185.199.108.133, 185.199.111.133, 185.199.110.133, ...
Connecting to objects.githubusercontent.com (objects.githubusercontent.com)|185.199.108.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 754307585 (719M) [application/octet-stream]
Saving to: ‘harbor-offline-installer-v2.7.1.tgz’

100%[=====================================================================================================================================>] 754,307,585  487KB/s   in 67m 4

2023-09-15 00:23:43 (181 KB/s) - ‘harbor-offline-installer-v2.7.1.tgz’ saved [754307585/754307585]

解压下载的文件

[root@localhost harbor]# ls
harbor-offline-installer-v2.7.1.tgz
[root@localhost harbor]# tar -xzvf harbor-offline-installer-v2.7.1.tgz
harbor/harbor.v2.7.1.tar.gz
harbor/prepare
harbor/LICENSE
harbor/install.sh
harbor/common.sh
harbor/harbor.yml.tmpl
[root@localhost harbor]# ls
harbor  harbor-offline-installer-v2.7.1.tgz
2.2.2、进入目录harbor并将文件名harbor.yml.tmpl修改成harbor.yml
[root@localhost harbor]# cd harbor
[root@localhost harbor]# ls
common.sh  harbor.v2.7.1.tar.gz  harbor.yml.tmpl  install.sh  LICENSE  prepare
[root@localhost harbor]# mv harbor.yml.tmpl harbor.yml
[root@localhost harbor]# ls
common.sh  harbor.v2.7.1.tar.gz  harbor.yml  install.sh  LICENSE  prepare

在这里插入图片描述

2.2.3、修改Habor配置文件harbor.yml

将hostname为本机IP地址,同时注释掉https部分(https默认是443端口,但是https我们没有证书,一定注释掉。要不然后面会提示不成功以及docker login登陆时会报错,所以我们只用80端口的http协议即可)

[root@localhost harbor]# vim harbor.yml

在这里插入图片描述

2.2.4、开始安装Habor
[root@localhost harbor]# ls
common.sh  harbor.v2.7.1.tar.gz  harbor.yml  install.sh  LICENSE  prepare
[root@localhost harbor]# ./install.sh

在这里插入图片描述

在这里插入图片描述

2.2.5、在浏览器登陆Habor WEB平台

地址:宿主机的IP
默认用户名:admin,默认密码:Harbor12345可以在habor.cnf自己设置密码;
在这里插入图片描述

2.2.6、创建私有仓库用户并且绑定library仓库

创建用户名docker,并且设置密码
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

绑定library仓库
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.2.7、配置Insecure Registry

在Harbor HTTP Insecure Registry模式时,必须先配置Docker允许使用Insecure Registry。
编辑/etc/docker/daemon.json加入以下内容:"insecure-registries":["192.168.88.191"]

[root@localhost harbor]# vim /etc/docker/daemon.json

注意:前一行后面要加上逗号后再回车才可以。
在这里插入图片描述

2.2.8、重启docker服务和docker-compose工具

重启docker服务

[root@localhost harbor]# systemctl restart docker

在这里插入图片描述
重启docker-compose工具

[root@localhost bin]# docker-compose restart

在这里插入图片描述
注意:重启docker-compose工具,需要进入harbor解压后的harbor目录,我这里是/data/download/harbor/harbor。

2.2.9、使用docker login命令测试登录创建的用户名和密码
[root@localhost harbor]# docker login 192.168.88.191
Username: docker
Password:
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

3、上传镜像到Harbor仓库

3.1、按照提示标记镜像

根据Harbor的提示标记镜像

[root@localhost harbor]# docker tag centos:ssh 192.168.88.191/library/centos-ssh:v1
[root@localhost harbor]#

在这里插入图片描述

3.2、通过docker push将镜像上传至Harbor仓库

[root@localhost harbor]# docker push 192.168.88.191/library/centos-ssh:v1
The push refers to repository [192.168.88.191/library/centos-ssh]
ab9048b44120: Pushed
a2a74060c379: Pushed
5f959363d8c4: Pushed
ef12a7cc7c2e: Pushed
e27f3f93d396: Pushed
20ea85c37c43: Pushed
174f56854903: Pushed
v1: digest: sha256:902aeb6152ddbdad2e44668977227fb56e2d7fc97551c2c3015704c4f58d36d8 size: 1778
[root@localhost harbor]#

在这里插入图片描述

3.3、在harbor仓库中查看上传的镜像

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Docker镜像仓库是用来存储和管理Docker镜像的地方。在Docker中,有两种常见的镜像仓库搭建方式,分别是本地仓库和私有仓库。 本地仓库是指在本地搭建一个Docker镜像仓库,用于存储和管理本地开发的镜像搭建本地仓库的步骤包括:搭建仓库仓库加密和仓库认证。\[1\] 私有仓库是指搭建一个企业内部的私有镜像仓库,用于存储和管理企业项目的镜像。私有仓库搭建方式有多种,其中比较常见的是使用Docker Harbor搭建私有仓库的步骤包括:配置Harbor和添加默认仓库路径。\[1\] 默认情况下,Docker使用Docker Hub作为默认的公共仓库,可以从中获取镜像。但在实际工作中,我们通常不会将企业项目推送到公共仓库进行管理。因此,为了更好地管理镜像Docker提供了搭建本地私有仓库的功能。这样,我们可以在企业内部搭建一个中央仓库来管理镜像。\[2\]\[3\] 总结起来,Docker镜像仓库搭建可以通过搭建本地仓库或者私有仓库来实现。本地仓库适用于存储和管理本地开发的镜像,私有仓库适用于企业内部的镜像管理。 #### 引用[.reference_title] - *1* *2* [Docker镜像仓库搭建](https://blog.csdn.net/qq_37801888/article/details/119077883)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Docker 镜像仓库搭建](https://blog.csdn.net/liangwenmail/article/details/118056478)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值