草庐IT

docker仓库

84岁带头冲锋 2023-04-03 原文

文章目录

引言:docker的仓库

概念:

仓库(Repository)是集中存放镜像的地方。
一个容易混淆的概念是注册服务器(Registry)。实际上注册服务器是管理仓库的具体服务器,每个服务器上可以有多个仓库,而每个仓库下面有多个镜像。从这方面来说,仓库可以被认为是一个具体的项目或目录。

一、docker私有仓库

有时候使用 Docker Hub 这样的公共仓库可能不方便,用户可以创建一个本地仓库供私人使用。
本节介绍如何使用本地仓库。
docker-registry 是官方提供的工具,可以用于构建私有的镜像仓库。

1.1 安装运行 docker-registry

容器运行

在安装了docker后,可以通过获取官方registry 镜像来运行

[root@docker ~]# mkdir -p /opt/registry 创立挂载点
[root@docker ~]# docker run -d -v /opt/registry:/var/lib/registry -p 5000:5000 --name myregistry registry:2
Unable to find image 'registry:2' locally
2: Pulling from library/registry
Digest: sha256:169211e20e2f2d5d115674681eb79d21a217b296b43374b8e39f97fcf866b375
Status: Downloaded newer image for registry:2
ddbbab873b5ebdd4db2209f1e1f2919fa8a22f5def54e6ef90632128580e1eb3
Registry服务默认会将上传的镜像保存在容器的/var/lib/registry,我们将主机的/opt/registry目录挂载到该目录,即可实现将镜像保存到主机的/opt/registry目录了。

这将使用官方的 registry 镜像来启动本地的私有仓库。 用户可以通过指定参数来配置私有仓库位置。
浏览器访问http://127.0.0.1:5000/v2,出现下面情况说明registry运行正常。

1.2 验证

现在通过push镜像到registry来验证一下。

查看本地镜像:

[root@docker ~]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
centos        7         4dfe6b425987   43 hours ago    204MB
nginx         latest    605c77e624dd   6 months ago    141MB
tomcat        latest    fb5657adc892   6 months ago    680MB
registry      2         b8604a3fe854   8 months ago    26.2MB
registry      latest    b8604a3fe854   8 months ago    26.2MB
hello-world   latest    feb5d9fea6a5   9 months ago    13.3kB
centos        <none>    eeb6ee3f44bd   10 months ago   204MB
您在 /var/spool/mail/root 中有新邮件


要通过docker tag 将该镜像标志为要推送到私有仓库

[root@docker ~]# docker tag centos:7 localhost:5000/centos:7

通过 docker push 命令将 nginx 镜像 push到私有仓库中:

[root@docker ~]# docker push localhost:5000/centos:7 
The push refers to repository [localhost:5000/centos]
174f56854903: Pushed 
7: digest: sha256:7cd98a7e13194c93fe1268e9385230bb6381630d69515f8e18abbf392b976a9b size: 529

访问 http://127.0.0.1:5000/v2/_catalog 查看私有仓库目录,可以看到刚上传的镜像了:

下载私有仓库的镜像,使用如下命令;

docker pull localhost:5000/镜像名:版本号
例如
[root@docker ~]# docker pull localhost:5000/centos:7
7: Pulling from centos
Digest: sha256:7cd98a7e13194c93fe1268e9385230bb6381630d69515f8e18abbf392b976a9b
Status: Image is up to date for localhost:5000/centos:7
localhost:5000/centos:7

二、harbor的搭建

docker 官方提供的私有仓库 registry,用起来虽然简单 ,但在管理的功能上存在不足。 Harbor是一个用于存储和分发Docker镜像的企业级Registry服务器,harbor使用的是官方的docker registry(v2命名是distribution)服务去完成。harbor在docker distribution的基础上增加了一些安全、访问控制、管理的功能以满足企业对于镜像仓库的需求。

2.1 搭建

下载

地址:

[root@docker ~]# wget https://github.com/goharbor/harbor/releases/download/v2.0.1/harbor-offline-installer-v2.0.1.tgz


修改harbor.cfg

#hostname 改为本地ip,非 Mac OS系统 可以不指定端口
hostname = 192.168.192.168.161.12:9090
#设置secretkey_path 的路径为 当前目录的data下
secretkey_path = ./data


通过运行 install.sh 构建镜像,并把服务启动起来:

[root@docker harbor]# docker -v
Docker version 20.10.17, build 100c701
[root@docker harbor]# curl -L https://get.daocloud.io/docker/compose/releases/download/1.25.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
[root@docker harbor]# chmod +x /usr/local/bin/docker-compose
[root@docker harbor]# docker-compose --version
docker-compose version 1.25.1, build a82fef07
[root@docker harbor]# ./install.sh 

2.2 使用

访问 http://127.0.0.1:9090/ 如下:

默认 admin 用户的密码为 Harbor12345 ,可以在 harbor.cfg 进行修改。登录后如下:

可以创建项目,创建用户,给项目分配用户等等,操作都很简单

2.3 上传镜像

首先登录私有仓库,可以使用 admin 用户 ,也可以使用我们自己创建的具有上传权限的用户:

docker login -u admin -p Harbor12345 127.0.0.1:9090
要通过docker tag将该镜像标志为要推送到私有仓库,例如:

docker tag nginx:latest 127.0.0.1:9090/library/nginx:latest
上传镜像:

docker push 127.0.0.1:9090/library/nginx:latest
访问 http://127.0.0.1:9090/harbor/projects ,在 library 项目下可以看见刚上传的 nginx镜像了:

有关docker仓库的更多相关文章

  1. Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting - 2

    1.错误信息:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:requestcanceledwhilewaitingforconnection(Client.Timeoutexceededwhileawaitingheaders)或者:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:TLShandshaketimeout2.报错原因:docker使用的镜像网址默认为国外,下载容易超时,需要修改成国内镜像地址(首先阿里

  2. ruby-on-rails - 私有(private) gem 没有安装在 docker 中 - 2

    我正在尝试使用docker运行一个Rails应用程序。通过github的sshurl安装的gem很少,如下所示:Gemfilegem'swagger-docs',:git=>'git@github.com:xyz/swagger-docs.git',:branch=>'my_branch'我在docker中添加了keys,它能够克隆所需的repo并从git安装gem。DockerfileRUNmkdir-p/root/.sshCOPY./id_rsa/root/.ssh/id_rsaRUNchmod700/root/.ssh/id_rsaRUNssh-keygen-f/root/.ss

  3. ruby-on-rails - 将 Heroku 环境变量传输到 Docker 实例 - 2

    我在Heroku上构建了一个必须在Docker容器内运行的RoR应用程序。为此,我使用officialDockerfile.因为它在Heroku中很常见,所以我需要一些附加组件才能使这个应用程序完全运行。在生产中,变量DATABASE_URL在我的应用程序中可用。但是,如果我尝试其他一些使用环境变量(在我的例子中是Mailtrap)的加载项,变量不会在运行时复制到实例中。所以我的问题很简单:如何让docker实例在Heroku上执行时知道环境变量?您可能会问,我已经知道我们可以在docker-compose.yml中指定一个environment指令。我想避免这种情况,以便能够通过项目

  4. ruby - 更新 gem 时 Docker 包安装缓存问题 - 2

    我在开发和生产中都使用docker,真正困扰我的一件事是docker缓存的简单性。我的ruby​​应用程序需要bundleinstall来安装依赖项,因此我从以下Dockerfile开始:添加GemfileGemfile添加Gemfile.lockGemfile.lock运行bundleinstall--path/root/bundle所有依赖项都被缓存,并且在我添加新gem之前效果很好。即使我添加的gem只有0.5MB,从头开始安装所有应用程序gem仍然需要10-15分钟。由于依赖项文件夹的大小(大约300MB),然后再花10分钟来部署它。我在node_modules和npm上遇到了

  5. 【详解】Docker安装Elasticsearch7.16.1集群 - 2

    开门见山|拉取镜像dockerpullelasticsearch:7.16.1|配置存放的目录#存放配置文件的文件夹mkdir-p/opt/docker/elasticsearch/node-1/config#存放数据的文件夹mkdir-p/opt/docker/elasticsearch/node-1/data#存放运行日志的文件夹mkdir-p/opt/docker/elasticsearch/node-1/log#存放IK分词插件的文件夹mkdir-p/opt/docker/elasticsearch/node-1/plugins若你使用了moba,直接右键新建即可如上图所示依次类推创建

  6. 转转测试环境docker化实践 - 2

        测试环境对于任何一个软件公司来讲,都是核心基础组件之一。转转的测试环境伴随着转转的发展也从单一的几套环境发展成现在的任意的docker动态环境+docker稳定环境环境体系。期间环境系统不断的演进,去适应转转集群扩张、新业务的扩展,走了一些弯路,但最终我们将系统升级到了我们认为的终极方案。下面我们介绍一下转转环境的演进和最终的解决方案。1测试环境演进1.1单体环境    转转在2017年成立之初,5台64G内存的机器,搭建5个完整的测试环境。就满足了转转的日常所需。一台分给开发,几台分给测试。通过沟通协调就能解决多分支并行开发下冲突问题。1.2动态环境+稳定环境    随着微服务化的进

  7. 大数据之Hadoop数据仓库Hive - 2

    目录:一、简介二、HQL的执行流程三、索引四、索引案例五、Hive常用DDL操作六、Hive常用DML操作七、查询结果插入到表八、更新和删除操作九、查询结果写出到文件系统十、HiveCLI和Beeline命令行的基本使用十一、Hive配置一、简介Hive是一个构建在Hadoop之上的数据仓库,它可以将结构化的数据文件映射成表,并提供类SQL查询功能,用于查询的SQL语句会被转化为MapReduce作业,然后提交到Hadoop上运行。特点:简单、容易上手(提供了类似sql的查询语言hql),使得精通sql但是不了解Java编程的人也能很好地进行大数据分析;灵活性高,可以自定义用户函数(UDF)和

  8. git submodule update --init --recursive 父子仓库 - 2

    .gitmodules:记录子模块信息在父项目新建submodule添加:gitsubmoduleadd 子模块仓库地址  子模块在父模块目录下的存储路径。注意:路径不能以/结尾(会造成修改不生效)、不能是现有工程已有的目录(不能順利Clone)删除:首先删除.gitmodules文件下的对应子模块信息,然后 gitrm–cached 克隆下来的项目有submodule拉取submodule: gitsubmoduleupdate--init--recursive更新submodulegitsubmoduleupdate--remote或者在submodule打开gitbash,然后用gitp

  9. Docker启动故障问题 no such file or directory解决方法 - 2

    1.现象服务重启后,通过dockerstart方式无法启动实例,报出错误:Errorresponsefromdaemon:errorcreatingoverlaymountto/var/lib/docker/overlay2/xxx/merged:nosuchfileordirectorydockersave导出镜像也报出2.网上各种尝试摸索无效果修改daemon.json中的storage-driver为overlay,重启无效果。禁用selinux,临时或永久方式都无效果。修改/etc/docker/daemon.json中的storage-driver为overlay2,无效果。修改/l

  10. Docker+HomeAssistant+HACS+设备接入教程 - 2

    homeassistant久仰大名,据说可以一统各大物联网平台的设备,家里各平台的设备都有一点,控制起来很不方便,于是乎我也来尝尝~homeassistant官网https://www.home-assistant.io/HACShttps://github.com/hacs/integration准备1.Linux系统(Window)其实也类似2.安装好dockerdocker安装homeassistant官方有几个版本可供选择,安装方式可以:直接刷HA的系统,也可以用Docker安装,还可以直接安装在物理机上,具体区别如下:我采用的是Docker进行安装,也就是Container,从上图也

随机推荐