文档:
https://blog.csdn.net/gmaaa123/article/details/134164838
https://blog.csdn.net/wangooo/article/details/133127774
https://blog.csdn.net/wangooo/article/details/109148640
https://blog.csdn.net/lejustdoit/article/details/130275792
https://zhuanlan.zhihu.com/p/667075764
https://cloud.tencent.com/developer/article/2133294
编辑 Dockerfile:
vim Dockerfile
内容如下:
1FROM openjdk:8-jdk-alpine
2
3 # 软件源修改为国内清华镜像站
4RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apk/repositories
5
6# 解决时差8小时问题
7ENV TZ=Asia/Shanghai
8RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
9
10# 解决字体问题
11RUN apk add --update ttf-dejavu fontconfig && rm -rf /var/cache/apk/*
构建镜像
1docker build -f Dockerfile -t openjdk:8-jdk-alpine-timezone-font .
注意:
-t 后面是镜像的名字和标签
最后面有一个点,表示Dockerfile所在目录
发布镜像到 Docker Hub
登录到 Docker Hub 账号:
1[zhangcong@master test]$ docker login
然后根据提示输入正确的用户名和密码完成登录过程。
为镜像添加标签。
每个镜像都应该被分配一个唯一的标签,这样才能区分不同版本或者不同功能的镜像。
使用 docker tag 命令为镜像添加标签:
docker tag <image_id> username/repository:tag
其中 <image_id> 是原始镜像的 ID,username 是你的 Docker Hub 用户名,repository 是仓库名称,tag 则是自定义的标签名称。
例如:
1[zhangcong@master test]$ docker tag e9125e1053ec conggege325/public-repository:8-jdk-alpine-timezone-font
通过运行 docker push 命令将镜像上传到 Docker Hub:
docker push username/repository:tag
例如:
1[zhangcong@master test]$ docker push conggege325/public-repository:8-jdk-alpine-timezone-font
等待上传过程完成,此时镜像就会被存储在 Docker Hub 服务器上了。
阿里云Docker仓库的常用操作
1. 登录阿里云Docker Registry
1$ docker login --username=iweiyi10@163.com registry.cn-hangzhou.aliyuncs.com
用于登录的用户名为阿里云账号全名,密码为开通服务时设置的密码。
您可以在访问凭证页面修改凭证密码。
2. 从Registry中拉取镜像
$ docker pull registry.cn-hangzhou.aliyuncs.com/conggege325/pri-repository:[镜像版本号]
3. 将镜像推送到Registry
$ docker login –username=iweiyi10@163.com registry.cn-hangzhou.aliyuncs.com
$ docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/conggege325/pri-repository:[镜像版本号]
$ docker push registry.cn-hangzhou.aliyuncs.com/conggege325/pri-repository:[镜像版本号]
请根据实际镜像信息替换示例中的[ImageId]和[镜像版本号]参数。
导入导出镜像
首先使用 docker images 查看本机镜像,找到他的镜像id
导入/导出方式有两种方式,两种方式不可以混用,否则虽然导入不提示错误,但是启动容器时会提示失败,存在导入的镜像环境变量丢失等问题
方法一(推荐)
使用 save 命令,通过镜像id导出镜像到宿主机:
docker save -o [镜像文件名] [REPOSITORY]:[TAG]
例如:
1$ docker save -o 8-jdk-alpine-timezone-font.tar openjdk:8-jdk-alpine-timezone-font
然后将导出的镜像文件上传到网络不好的主机上,执行 load 命令进行镜像导入:
docker load < [镜像文件名]
例如:
1$ docker load < 8-jdk-alpine-timezone-font.tar
方法二
我们还可以使用 export 和 import 命令,进行导入/导出操作,导出命令如下:
1$ docker export eb516548c180 > coredns.tar
eb516548c180表示容器id
我们将上述 coredns.tar 镜像在另一个网络不好的节点进行导入,命令如下(二者选其一即可):
1$ docker import /usr/local/coredns.tar
2$ cat coredns.tar | docker import - k8s.gcr.io/coredns:1.3.1(镜像名自己定义)
docker导出本地镜像,然后导入到k8s
1删除docker中旧的镜像(如果有的话):
2docker rmi registry.cn-hangzhou.aliyuncs.com/conggege325/pri-repository:demo
3
4在docker中构建镜像:
5docker build -f Dockerfile -t registry.cn-hangzhou.aliyuncs.com/conggege325/pri-repository:demo .
6
7从docker中导出:
8docker save -o demo.tar registry.cn-hangzhou.aliyuncs.com/conggege325/pri-repository:demo
9
10删除k8s中旧的镜像(如果有的话):
11sudo crictl rmi registry.cn-hangzhou.aliyuncs.com/conggege325/pri-repository:demo
12
13导入到k8s中:
14sudo ctr -n k8s.io image import demo.tar registry.cn-hangzhou.aliyuncs.com/conggege325/pri-repository:demo
评论