当前位置: 首页 > news >正文

Docker学习记录——构建本地镜像,从Windows向Ubuntu推送

一、在Windows打包Linux版本的go程序

$env:GOOS=linux
$env:GOARCH=amd64
go build -o release/HTTPServices-linux

二、给镜像打标签,推送到远端Ubuntu电脑
本次测试使用的VM的Ubuntu虚拟机,ip172.27.141.98就是Ubuntu虚拟机的ip地址。
1.Dockerfile文件内容
在工程目录下创建Dockerfile文件,没有扩展名。

# 使用空镜像(没有任何文件系统) 推荐使用alpine:latest但是需要联网下载,这里使用空镜像
FROM scratch# 维护者信息(可选)
LABEL maintainer="your-email@example.com"# 将 Go 编译好的二进制文件复制进去
COPY /release/HTTPServices-linux /HTTPServices-linux# 赋予执行权限
#RUN chmod +x /HTTPServices-linux# 声明端口(如 8080)
EXPOSE 8080# 启动命令(必须使用绝对路径)
CMD ["/HTTPServices-linux"]

2.给镜像打标签(设置版本号)

docker tag http-services:v1 172.27.141.98:5000/http-services:v1 .
docker tag <源镜像名> <目标镜像名>
:v1相当于版本号,每次打标签都要更新,等同于更新程序的版本号。

3.推送到远端镜像

docker push 172.27.141.98:5000/http-services:v1

类似git的使用,push/pull操作。

docker push 172.27.141.98:5000/http-services:v1                
The push refers to repository [172.27.141.98:5000/http-services]
Get "https://172.27.141.98:5000/v2/": http: server gave HTTP response to HTTPS client

如果看到如下返回结果,是因为docker默认不支持http,需要修改配置文件,添加白名单。
在daemon.json中添加

"insecure-registries": ["172.27.141.98:5000"]

4.Ubuntu虚拟机拉取操作

docker pull 172.27.141.98:5000/http-services:v1
docker pull 172.17.0.1:5000/http-services:v1
Error response from daemon: Get "https://172.17.0.1:5000/v2/": http: server gave HTTP response to HTTPS client

如果看到如下返回结果,是因为docker默认不支持http,需要修改配置文件,添加白名单。

5.运行镜像

docker run -d -p 8080:8080 --name http-svc 172.27.141.98:5000/http-services:v1
f841b8f3648f3912de9f54e25958e99136a6742193efc71fd6844d8c6d987e23

镜像成功运行后会返回镜像id,类型进程id。

docker run [选项] <镜像名>
-d=detached 模式 —— 让容器在后台运行
-p 8080:8080= 把 宿主机(你的机器)的 8080 端口,映射到 容器内部的 8080 端口
--name http-svc=给容器起一个名字(Name),默认情况下,Docker 会随机生成一个名字(如 f3a1b2c3d4e5),使用 --name 可以自定义名字,方便管理
172.27.141.98:5000/http-services:v1=私有镜像仓库地址/镜像名称

6.停止镜像,查看状态

docker stop http-svc
docker ps

三、遇到的问题
最主要遇到的问题还是docker hub不能访问,官方镜像不能下载,所以本次都是采用的不联网,使用本地镜像的方式,但是要注意docker必须是启动的,如Windows下的Docker Desktop必须是运行态的。
四、碎碎念,说下自己的理解
虽然使用docker运行的叫镜像,但是给我的感觉基本等同于git或svn的仓库。
我的理解是docker提供了一个仓库,在仓库中可以直接运行服务程序,并把这个仓库放到了部署服务器上。所以每次打包发版都可以执行类似git的操作,push后,在部署服务器上执行pull操作,以达到自动化部署和程序版本回退的效果。(我还是觉得自己写个bash或bat脚本也能做到这些功能……)


文章转载自:

http://lOIVD0zw.xnhnL.cn
http://fMpsWgM7.xnhnL.cn
http://7z6rF18P.xnhnL.cn
http://CWLdZuFj.xnhnL.cn
http://PGeYFYVN.xnhnL.cn
http://GT26KyWd.xnhnL.cn
http://9MwM7Q5v.xnhnL.cn
http://MJ1yMXTj.xnhnL.cn
http://ZcVKXpuE.xnhnL.cn
http://H3FCBQRN.xnhnL.cn
http://UICpp6yE.xnhnL.cn
http://dk6HUgcS.xnhnL.cn
http://t0EcTq4X.xnhnL.cn
http://50PphiWy.xnhnL.cn
http://8EFYWsid.xnhnL.cn
http://KMjWUgiA.xnhnL.cn
http://h2toHRcD.xnhnL.cn
http://2CvdT0Fh.xnhnL.cn
http://lVXJYtCS.xnhnL.cn
http://ExYmsmfx.xnhnL.cn
http://5UyYr6W9.xnhnL.cn
http://vYCykH9p.xnhnL.cn
http://7gKEKPEc.xnhnL.cn
http://szOFbRNG.xnhnL.cn
http://MO4sMErY.xnhnL.cn
http://Df8yfMFD.xnhnL.cn
http://0eBZpCYI.xnhnL.cn
http://M4rfvRRk.xnhnL.cn
http://vknEaTmB.xnhnL.cn
http://kzH6LEZo.xnhnL.cn
http://www.dtcms.com/a/387837.html

相关文章:

  • MyBatis分页:PageHelper
  • 基于python BERT的新闻文本分类与用户行为预测的分析与应用
  • MFC实战:OBJ模型加载与3D渲染指南
  • FAQ:珠海网络推广哪家好?GEO优化能带来哪些优势?
  • (论文速读)CLR-GAN: 通过一致的潜在表征和重建提高gan的稳定性和质量
  • MFC_Static
  • TDengine IDMP 基本功能——数据可视化(3. 饼图)
  • Spring基础创建
  • 智能的非数学本质
  • CNB迁移和UI定制
  • 基于OpenTelemetry与Jaeger的分布式追踪原理深度解析与实践指南
  • EasyDSS视频直播RTMP推流技术如何实现多机型的无人机视频统一直播
  • 智能扫地机器人方案开发,基于32位MCU
  • 【STM32 CubeMX + Keil】DAC 输出0~3.3V间任意电压
  • git submodule命令详解
  • HTTP/2.0是什么?
  • 深度学习基础:从线性回归到 Softmax 回归的完整梳理
  • 深度学习之线性回归与 Softmax 回归
  • 线性回归与 Softmax 回归
  • 源雀 Scrm开源:企微防截屏
  • [APItest-Karate] HttpRequestBuilder | HttpClient发送请求
  • 线性回归与 Softmax 回归:从基础模型到深度学习入门
  • 【Leetcode hot 100】105.从前序与中序遍历序列构造二叉树
  • 机器视觉在PCB制造中的检测应用
  • 服务器ssh端口放开,仍然无法登录
  • 【0基础3ds Max】命令面板详解
  • LeetCode 381 - O(1) 时间插入、删除和获取随机元素(允许重复)
  • [新启航]深孔加工尺寸精度检测方法 - 激光频率梳 3D 轮廓测量
  • MySQL 进阶:多表联合查询与数据备份恢复
  • 【LeetCode每日一题】:移除链表元素