docker 从公共仓库拉取,并上传到私有仓库
有些时候无法联网拉去到网上镜像时候,需要先通过能联网的机器使用docker pull 到本地。然后将镜像打上tag, 再上传到私有仓库。示例,比如我们要下载被墙掉的gcr.io(谷歌镜像仓库)中的镜像https://console.cloud.google.com/gcr/images/istio-release/GLOBAL/pilot?gcrImageListsize=50主要流程...
有些时候无法联网拉去到网上镜像时候,需要先通过能联网的机器使用docker pull 到本地。然后将镜像打上tag, 再上传到私有仓库。
示例,比如我们要下载被墙掉的gcr.io(谷歌镜像仓库)中的镜像https://console.cloud.google.com/gcr/images/istio-release/GLOBAL/pilot?gcrImageListsize=50
主要流程
1.使用一台既能连通私有仓库harbor又能连通外网的主机,并安装上docker。
2.拉去镜像 docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]
方法一:” docker pull 镜像地址:tag”
docker pull gcr.io/istio-release/pilot:1.0.0
方法二 :”docker pull 镜像地址:镜像名称”
docker pull gcr.io/istio-release/pilot@sha256:f3a834841bfa2879900c849b3d8398b584950aa5f61fc1061a03ed6d5a3f5805
如何仅仅是使用”docker pull gcr.io/istio-release/pilot” 默认是拉取tag为latest的镜像包
docker@default:~$ docker pull gcr.io/istio-release/pilot
Using default tag: latest
3.将拉去下来的镜像重新打上tag(gcr.io表示镜像的Docker的Registry地址,10.255.1.25是使用的私有仓库的地址)
docker tag gcr.io/istio-release/pilot:1.0.0 10.255.1.25/istio-release/pilot:1.0.0
可以通过 docker images
命令 查看本docker拥有的镜像
4 push 到私有仓库
client与Registry交互,为了安全,默认将采用https访问, 但我们在搭建私有仓库时并未配置指定任何tls相关的key和crt文件,https访问定然失败。所以直接
docker push 10.255.1.25/istio-release/pilot:1.0.0
是无法将这个镜像push到私有仓库的。需要在docker的配置文件/etc/docker/daemon.json
(没有的话需要新建)中增加 “insecure-registries“参数配置
#启用不安全的注册表
{
"insecure-registries" : ["10.255.1.25"]
}
启用不安全的注册表后,Docker将执行以下步骤: 首先,尝试使用HTTPS。 如果HTTPS可用但证书无效,请忽略有关证书的错误。 如果HTTPS不可用,会回退到HTTP
重新加载配置文件,重启docker服务使配置生效
#systemctl daemon-reload
#systemctl resatrt docker
登录到私有docker
docker login 10.255.1.25
//...输入用户名
//....密码
或则直接如下命令来登录
docker login -u username -p password RegistryIp
登录成功后 再执行push
docker push 10.255.1.25/istio-release/pilot:1.0.0
备注:使用docker tag更改标签带上了镜像仓库地址,原来的gcr.io更改为10.255.1.25,所以在使用镜像时,也要将原来的gcr.io/istio-release/pilot:1.0.0
变为10.255.1.25/istio-release/pilot:1.0.0
不然还是会从gcr.io仓库拉去镜像。
docker save and docker load
Docker 还提供了 docker load 和 docker save 命令,用以将镜像保存为一个 tar 文件,然后传输到另一个位置上,再加载进来。这是在没有 Docker Registry 时的做法,现在已经不推荐,镜像迁移应该直接使用 Docker Registry,无论是直接使用 Docker Hub 还是使用内网私有 Registry 都可以。这种方式可以用来在再无法联网的情况下部署。详细见
docker save and docker load
save and load 批量脚本
更多推荐
所有评论(0)