镜像制作和上传下载

社区DockerDevOps

0.开篇词

  之前在rocky8 linux服务器上部署了harbor,今天就来尝试一下制作镜像,并试一下镜像的上传下载。

1.准备工作

在制作镜像并测试镜像的上传下载之前,需要以下准备工作:
(1)rocky8 Linux服务器;
(2)正常运行的docker服务;
(3)正常运行的harbor服务;
(4)编译好的golang文件。

2.准备golang编译文件

先来写一个简单的go web服务,代码付下:

package main

import (
   "fmt"
   "log"
   "net/http"
)

func sayHello(w http.ResponseWriter, r *http.Request) {
   fmt.Fprintln(w, "Hello the cruel world")
}

func main() {
   http.HandleFunc("/", sayHello)

   log.Fatalln(http.ListenAndServe(":8090", nil))
}

这个服务就是请求服务器的8090端口,响应一个字符串,我们将其命名为hello.go。

picture.image 可以看到编译后的文件为可执行文件hello。

3.制作镜像

3.1 编写dockerfile文件

我们知道想要制作本地镜像,需要一个dockerfile文件,这里我们就编写一个简单的dockerfile文件,内容如下:

FROM docker.1panel.live/library/golang:1.16.6-alpine3.14

ADD . /app

WORKDIR /app

CMD ["/app/hello"]

后面会专门出文章说明如何编写一个dockerfile文件,这里就不做详细说明了。

3.2 制作镜像

基于Dockerfile文件就可以创建镜像了,命令如下:

docker build -t hello:v1 .

注意:最后面有一个“.”,这个表示Dockerfile在当前路径下面。

picture.image 有以上输出,说明镜像制作完成,镜像名称是hello,tag是v1。

docker images |grep hello

picture.image OK,到这里我们的镜像就制作完成了。

4.上传镜像

4.1 登录镜像仓库

在登录harbor仓库之前,我们需要修改一下docker配置文件,添加以下内容:

cat /etc/docker/daemon.json

picture.image "insecure-registries":["192.168.xxx.xxx:80"]
该配置项的含义是可信任的镜像仓库。
修改好配置之后记得重启docker,命令如下:

systemctl restart docker

之前我们已经部署好了harbor,在上传镜像之前需要登录,命令如下:

docker login harbor_host:80

picture.image 输入正确的用户名和密码,会显示登录成功。

4.2 上传镜像

我们先看下我们之前创建的镜像,命令如下:

docker images |grep hello

picture.image 在harbor上创建一个images项目,用来管理我们上传的镜像:

picture.image

picture.image (1)重新给镜像打标签:

docker tag hello:v1 192.168.xxx.xxx:80/images/hello:v1

(2)上传镜像到harbor:

docker push 192.168.xxx.xxx:80/images/hello:v1

picture.image 上传成功会显示镜像的版本和hash值。
最后,我们到harbor上检查下镜像是否上传成功:

picture.image

picture.image 可以对比一下两个镜像的hash值,可以看到前面8位是一样的。

0
0
0
0
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论