Docker image 在Qiang外怎么办?

好风 发表于 2017-09-09T10:08:35.972508Z
引用地址:https://plus.ooclab.com/note/article/1386

比如我们安装 kubernetes 时,gcr.io 上的 image 在 Qiang 外,不能直接使用。

我试过很多方式,目前来看,最简单的方式还是 将需要用到的 image 同步上传到 hub.docker.com

步骤

1. 注册 hub.docker.com 并创建 organization

我的示例中, organization 名称为 omio

2. 在 Qiang 外购买一个VPS

使用我的 Digitalocean 推荐码 http://www.digitalocean.com/?refcode=1b1aa358e678 , 默认账户应该有 10$ 。DG 最小化虚拟机5$/月,适合入门级使用。

安装 docker , 并运行 docker login 完成验证

3. pull & push

创建 trans_image.sh 脚本:

#! /bin/bash

# https://hub.docker.com
# 第一次运行需要执行 `docker login` 验证帐户

# 将指定的 image 转移到 hub.docker.com 上
# 使用 omio 组织名称

# https://hub.docker.com/u/omio/dashboard/
ORG=omio

# gcr.io/google_containers/pause-amd64:3.0 -> $ORG/gcr.io.google_containers.pause-amd64:3.0
function trans() {
    ORIG_NAME=$1
    NEW_NAME=`echo ${ORIG_NAME} | sed 's@/@.@g'`

    docker pull $ORIG_NAME
    docker tag $ORIG_NAME $ORG/$NEW_NAME
    docker push $ORG/$NEW_NAME
}

for var in "$@"
do
    echo "==> $var"
    trans $var
done

pull & push 示例:

bash trans_image.sh gcr.io/google_containers/pause-amd64:3.0

现在任何需要 gcr.io/google_containers/pause-amd64:3.0 的地方使用 omio/gcr.io.google_containers.pause-amd64:3.0 代替即可。