简单接口打包镜像&&构建自定义镜像

接口打包流程

一.虚拟机安装go语言环境

1.下载Go安装包&&下载完成后,您需要使用终端(Terminal)来解压安装包。

首先,打开终端,并使用cd命令切换到安装包所在的目录。然后,使用tar命令解压安装包。例如,go1.XX.linux-amd64.tar.gz(其中XX是版本号),则可以使用以下命令解压:

wget https://golang.google.cn/dl/go1.22.6.linux-amd64.tar.gz
sudo tar -C /usr/local -xzf go1.XX.linux-amd64.tar.gz

在这里插入图片描述

2. 配置环境变量

这通常涉及编辑~/.bashrc(针对当前用户)或/etc/profile(针对所有用户)文件,并添加Go的安装路径到PATH环境变量中。
打开终端,输入以下命令编辑~/.bashrc文件:
在这里插入图片描述

在文件末尾添加以下行:
在这里插入图片描述

这里,GOROOT是Go的安装目录,GOPATH是您的Go工作目录(用于存放Go项目和依赖)。
保存并退出编辑器后,运行以下命令使更改生效:
在这里插入图片描述

  1. 验证安装
    最后,通过运行go version命令来验证Go是否已成功安装。如果安装成功,该命令将输出Go的版本号。
    在这里插入图片描述

二、Go项目准备

在这里插入图片描述

package main  
  
import (  
	"fmt"  
	"net/http"  
)  
  
// helloHandler 是一个处理HTTP请求的函数  
func helloHandler(w http.ResponseWriter, r *http.Request) {  
	// 设置响应头  
	w.Header().Set("Content-Type", "text/plain")  
	// 发送响应体  
	fmt.Fprintf(w, "Hello, this is a simple Go HTTP server!")  
}  
  
func main() {  
	// 使用http.HandleFunc函数注册路由和处理器  
	http.HandleFunc("/ping", helloHandler)  
  
	// 监听并启动HTTP服务器  
	fmt.Println("Server is listening on port 8080...")  
	if err := http.ListenAndServe(":8080", nil); err != nil {  
		fmt.Printf("Error starting server: %s\n", err)  
	}  
}

在这里插入图片描述

1.go build http.go进行postman测试

在这里插入图片描述

2.go代码无误,进行打包
在这里插入图片描述

在这里插入图片描述

3.建立文件夹dockerfiles,把http.go和Dockerfile移动到文件夹中,执行

docker build -t [name] .

在这里插入图片描述

4.查看镜像
在这里插入图片描述

5.执行镜像:

docker run -d -p 8080:8080 my-go-app:[tag] tag默认为latest
这里的参数说明如下:
-d:以分离模式(detached mode)运行容器,即容器在后台运行。
-p 8080:8080:将容器的 8080 端口映射到宿主机的 8080 端口。这样,你就可以通过访问宿主机的 8080 端口来访问容器内的服务了。
my-go-app:你的 Docker 镜像名称
ps:给容器起名称:docker run -d --name my-go-app-container -p 8080:8080 my-go-app:[tag]

在这里插入图片描述

6.当你完成测试或不再需要容器时,可以使用以下命令来停止并删除它:
停止容器:docker stop [容器ID或名称]
删除容器:docker rm [容器ID或名称]

7.上传到私人仓库
建立私有仓库:

https://blog.csdn.net/m0_46586460/article/details/141471245?spm=1001.2014.3001.5502

在这里插入图片描述
在这里插入图片描述

8.查看镜像仓库中的已有镜像:
要查看本地 Docker Registry(如使用 Docker Registry v2 的私有仓库)中的所有镜像,你不能直接使用 Docker 命令行工具(如 docker images)来列出私有仓库中的镜像,因为这个命令只列出本地 Docker 守护进程已知的镜像(即已下载或已构建的镜像)。但是,你可以通过访问 Registry 的 HTTP API 或使用专门的工具来查看 Registry 中的镜像。
不用下载其余可视化界面,Registry自带:
1.在浏览器中输入:
http://localhost:5000/v2/_catalog
即可看到传过的两个镜像
在这里插入图片描述

2.使用 Docker Registry API
在这里插入图片描述

这里的 username 和 password 是你登录 Registry 时使用的凭据。
但是,请注意,这个命令只会列出仓库名,而不是具体的镜像标签。要获取特定仓库的所有标签,你需要对每个仓库执行另一个 API 调用,例如:
在这里插入图片描述

【末尾为list】
使用:
在这里插入图片描述

构建自定义镜像:

查看用来提供http服务的使用过的容器:

docker run -d -p 8080:8080 my-go-app 【container_name】 【这里未填,使用生成的name】

在这里插入图片描述

我们选用容器名为blissful_knoalevski的容器进行安装curl命令
使用方法:使用docker exec在运行的容器中安装
使用 docker exec 进入容器并在其中安装了新的软件包(如 curl),这些更改是持久化的,意味着它们会保留在容器的文件系统中。因此,当你退出容器并再次使用 docker exec 或其他方式(如 docker attach,尽管这通常用于标准输入/输出流)重新进入时,你安装的 curl 命令应该仍然存在。

docker exec -it my_container /bin/sh

然而,需要注意的是,这些更改仅影响当前的容器实例。如果你删除了该容器并基于原始镜像创建一个新的容器,那么新容器中将不会包含你在旧容器中安装的 curl 或其他任何更改。
如果你希望保留你的更改并在未来的容器中使用它们,你需要提交容器为新的镜像:
你可以使用 docker commit 命令将你的容器更改保存为一个新的镜像。这样,你就可以基于这个新镜像来创建更多的容器,它们都将包含你安装的 curl 命令。

docker commit <container_id_or_name> <new_image_name>:

如果你正在使用基于 Alpine Linux 的 Docker 容器,并且想要安装 curl,你应该使用 apk 包管理器,因为 Alpine Linux 默认使用 apk 而不是 apt-get

apk add --no-cache curl
在这里插入图片描述

这里,–no-cache 选项告诉 apk 不要使用本地缓存来安装软件包,而是直接从远程仓库下载。这对于确保你安装的是最新版本的软件包很有用,但也会稍微增加安装时间。
提交生成新的镜像

docker commit blissful_kowalevski tcurl:v1.0:

运行新的镜像,
在这里插入图片描述

curl命令已存在,安装完成。
但这种方式并不会知道我的镜像内部,到底装了什么东西,需要试验,于是选择用Dockerfile的方式安装。

在这里插入图片描述

在这里插入图片描述

运行镜像,并测试安装的命令:

ng)

镜像打包tar:
在这里插入图片描述

思考:
使用docker exec方式进入镜像,安装,缺点在于没有方便的文件查看已安装的命令或镜像介绍。而使用Dockerfile可以有效方便查看,但在安装过程中,如果这个文件过长,中间出现安装错误,打包镜像失败,需重新打包,一旦失败,重头来过,在实际中应当灵活运用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值