前言
关于docker的小知识点 可看我之前的文章:
Docker零基础从入门到精通(全)
写这个博客的原因是因为
gitlab拉取docker的镜像的时候,由于匿名或者登录账户下,拉取的次数有所限制
而且拉取的时间比较久
以至于在pipeline的时候出现了这个问题
问题如下所示:
已经将镜像仓库网址替换成了xxx(保护隐私)
(以下博客主要讲解怎么解决,关键性的问题已经打码)
Running with gitlab-runner 14.10.1 (xxx)
on xxx
Preparing the "docker" executor
Using Docker executor with image xxx ...
Pulling docker image xxx ...
WARNING: Failed to pull image with policy "always": Error response from daemon: Get https://xxxx: unauthorized: authentication required (manager.go:203:0s)
ERROR: Job failed: failed to pull image "xxx" with specified policies [always]: Error response from daemon: Get https://xxx: unauthorized: authentication required (manager.go:203:0s)
为此需要将镜像发布到内网或者其他云服务器,在对应拉取即可
1. 发布到DockerHub
如何推送远程服务器,需要登陆服务器先获取项目的权限
- 注册一个自已的账号,通过官网
- 在服务器上提交自已的镜像
docker login --help
提交镜像要先登陆成功,通过这个参数
docker login -u 用户名 官网地址
登陆成功之后就可以提交镜像
通过docker push 作者名/镜像名:版本号
,而且提交的时候几乎都是按层次提交
提交的时候最好是使用ti zi ,上传的比较快
拉取下载的时候同理,通过docker pull 作者名/镜像名:版本号
补充一个细节:
给一个容器加上一个tag版本号:
docker tag 容器id 容器仓库名:版本号
2. 发布到阿里云
- 登陆阿里云官网
- 找到容器镜像服务
- 创建命名空间,创建容器镜像,按照具体步骤一步一步执行
3. 补充gitlab上拉取镜像
已经push上去了,在github或者gitlab怎么通过脚本进行拉取
该需求是我在公司遇到的,push镜像到服务器之后,怎么通过gitlab进行拉取
通过书写gitlab的cicd 的yml文件
比上面多了一个步骤:
通过服务器执行 cat ~/.docker/config.json
查看其代码模块:
{
"auths": {
"https://index.docker.io/v1/": {
"auth": "xxxx"
},
"baidu.com": {
"auth": "xxxx"
}
},
"HttpHeaders": {
"User-Agent": "Docker-Client/18.06.3-ce (linux)"
}
}
由于在服务器上登录了,所以只需要获取其auth的参数即可
在gitlab的yml脚本文件上配置如下:
variables:
DOCKER_AUTH_CONFIG: '{"auths": {"官网地址": {"auth": "xx"}}}'
在对应输入拉取网址的镜像即可