记录的是 本地编译好了再创建容器镜像的方法 ,这样子生成的镜像文件比较小,方便分发部署

win 平台需要设置golang交叉编译 生成linux可执行文件

CMD下:

Set GOOS="linux"
Set GOARCH="amd64"

PowerShell下:

$env:GOOS="linux"
$env:GOARCH="amd64"

这两个参数吃常用选项:
GOARCH 目标平台(编译后的目标平台)的处理器架构(386、amd64、arm)

GOOS 目标平台(编译后的目标平台)的操作系统(darwin、freebsd、linux、windows)

然后再编译 执行: go build .

此时会生成linux下的可执行文件

下一步,在项目根目录下编写 Dockerfile。

FROM alpine:latestMAINTAINER yesicoo yesicoo@163.comADD GoQRS /usr/local/bin/ENTRYPOINT ["/usr/local/bin/GoQRS"]

第一行:由于我已经编译好了linux上的可执行文件 所以我只需要pull个最小的linux镜像就可以直接运行了 这个镜像很小 只有6MB。

第二行:设置镜像的创作者和邮箱

第三行:将本地文件拷贝至即将创建好的docker容器镜像内 GoQRS为本次项目生成的Linux平台可执行文件 拷贝到 /usr/local/bin 目录下

第四行:配置容器镜像启动时的执行文件

这样,一份简单的文件就写完成,接下来开始创建这个容器镜像:
执行:docker build -t yesicoo/goqrs . (后面这个点不能丢)

yesicoo/goqrs 这个是生成的镜像名称(tag) 可以随便取 要小写

执行过程:

PS C:\Project\Qing\GoQR> docker build -t yesicoo/goqrs .
Sending build context to Docker daemon  17.66MB
Step 1/4 : FROM alpine:latest
latest: Pulling from library/alpine
050382585609: Pull complete
Digest: sha256:6a92cd1fcdc8d8cdec60f33dda4db2cb1fcdcacf3410a8e05b3741f44a9b5998
Status: Downloaded newer image for alpine:latest---> b7b28af77ffe---> Running in 0d7880f26332
Removing intermediate container 0d7880f26332---> 2b333ea3cd0c---> bb6bfec71739---> Running in 7fa33b332550
Removing intermediate container 7fa33b332550
Successfully built b547d669b760
Successfully tagged yesicoo/goqrs:latest
SECURITY WARNING: You are building a Docker image from Windows against a non-Windows Docker host. All files and directories added to build context will have '-rwxr-xr-x' permissions. 

It is recommended to double check and reset permissions for sensitive files and directories.PS C:\Project\Qing\GoQR> docker images

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZEyesicoo/goqrs       latest              b547d669b760        22 seconds ago      23.2MBalpine              latest              b7b28af77ffe        3 hours ago         5.58MB

因为是在win下面生成创建的 所以会有个平台目录权限的提示,这个视情况判断是否重要。

上面的执行过程中还有一个坑!!!

因为我是在win下进行操作的,安装的docker也是官方的win平台的 docker desktop。所以安装后默认生成后的Docker主机是win平台

默认情况下执行Build命令时会提示:

latest: Pulling from library/alpine
no matching manifest for unknown in the manifest list entries

此时需要切换到linux平台:右击小鲸鱼托盘图标 -> 选择 Switch to Linux containers -> 弹出切换框 确认选择 
等待重启执行成功后 再执行命令 就能成功pull alpine镜像 进行创建了 ,也就会有上面的平台目录权限的提示。

接下来 执行创建好的这个镜像

docker run -i -d --name=goqrs -p 8080:8080 yesicoo/goqrs

-- name 是给执行的容器起个名字

-p 是本地端口和容器内执行程序的端口映射

最后的参数是上面创建的时候 输入的tag。出现一串字符串ID 那就启动成功了 可以访问端口进行测试

docker ps -a  查看所有容器 
docker logs -f <name> 查看输出日志

相关知识点文章:

Dockerfile: https://www.cnblogs.com/lighten/p/6900556.html
Golang交叉编译:https://studygolang.com/articles/14376

转载于:https://www.cnblogs.com/yesicoo/p/11174373.html

Golang Web应用 创建docker镜像笔记(win 平台)相关推荐

  1. golang云原生之docker镜像

    随着云计算和容器化技术的发展,越来越多的应用程序开始采用云原生架构.在这种架构中,容器成为了最常见的应用程序部署方式,而Docker则是最流行的容器技术之一.Golang作为一种快速.高效和可靠的编程 ...

  2. 使用IDEA创建Docker镜像,Docker容器,并发布项目

    文章目录 回顾 Docker相关文件及目录 目录结构 与Docker相关的部分源码 编辑IDEA项目配置文件 拉取镜像 配置Docker镜像与容器 启动并访问项目 启动项目 访问项目 注意问题 文件类 ...

  3. docker 仓库镜像 替换_自己动手创建 Docker 镜像并分享到镜像仓库,容器引擎的用途越来越广泛!...

    ↑ 点击上面 "时代Java"关注我们,关注新技术,学习新知识! 前面在公众号里讲过Docker安装和基本用法和概念,新来的小伙伴可以先去学习一下: docker yum快速安装和 ...

  4. 动手创建docker镜像

    动手制作docker镜像 一.docker镜像的分层 二.docker镜像的创建 (一).docker镜像 (二).docker镜像的创建方法 三.基于已有镜像创建 四.基于本地模板创建 五.基于Do ...

  5. 通过Dockerfile创建docker镜像

    创建镜像三种方法 Docker镜像创建方法有三种,分别为基于已有镜像创建.基于本地模板创建以及基于Dockerfile创建. 通过Dockerfile创建镜像 这里主要记录下基于Dockerfile创 ...

  6. Liunx下创建Docker镜像

    docker安装 见 https://blog.csdn.net/chijiansong/article/details/122324750?spm=1001.2014.3001.5501 其他doc ...

  7. Docker镜像的多平台架构支持

    2019独角兽企业重金招聘Python工程师标准>>> Docker 官方镜像现在支持多平台架构 Docker Engine在2017年取得了很大的进展,社区版和企业版进行分开,支持 ...

  8. 创建docker镜像的两种方式

    文章目录 前言 第一种方式: 通过docker commit 创建镜像 通过Dockerfile构建 前言 通过docker run -it centos:7 运行的容器之中是没有vim的 这里我们创 ...

  9. .Net Core创建Docker镜像

    1..Net Core项目[Lails.Server.Demo]发布到目录下Lails.Server.Demo\bin\Release\netcoreapp2.1\publish 2.上面目录下新建文 ...

  10. Dockerfile创建自定义Docker镜像以及CMD与ENTRYPOINT指令的比较

    1.概述 创建Docker镜像的方式有三种 docker commit命令:由容器生成镜像: Dockerfile文件+docker build命令: 从本地文件系统导入:OpenVZ的模板. 关于这 ...

最新文章

  1. 走向.NET架构设计—第三章—分层设计,初涉架构
  2. Chrome用户请尽快更新:谷歌发现两个严重的零日漏洞
  3. 使用Amoeba实现MySQL读写分离详细步骤(推荐的方式)
  4. python中split_python中split()和split(' ')的区别
  5. Visual Studio 2015上安装Entity Framework Power Tools
  6. python3 tkinter
  7. [Nodejs原理] 核心库Libuv入门(Hello World篇)
  8. Lab1--关于安装JUnit的简要描述
  9. 码农の带娃绝技:TensorFlow+传感器,200美元自制猜拳手套
  10. 06 SQL执行计划
  11. 数据结构算法题整理2
  12. 软件开发版本号命名规则
  13. 基于Java Web的图书管理系统
  14. 快狐未能连接服务器,航海王强者之路好友福袋开启详细介绍_快狐快狐视频app...
  15. Pcb课程设计2(GD32E230核心板)
  16. 中医是如何辩证出脾胃湿热的?
  17. 清理桌面状态下鼠标右键“打开好桌道壁纸”选项
  18. win11安装后黑屏怎么解决
  19. java异常类关键字_Java中的异常处理关键字是什么?
  20. 数据嗨客 | 第1期

热门文章

  1. C#等同于正则表达式的写法
  2. JavaScript-遍历数组
  3. 【离散数学2】代数系统趣题
  4. HTML中的select只读
  5. 通过HTTP协议发送远程消息
  6. hibernateTemplate.find或hibernateTemplate.save()执行操作没有反应,但是有sql语句
  7. 【笔记】Yale博弈论第一课
  8. C++(多态实现原理)函数重写,重载,重定义
  9. $.ajax的回调function中的this与 element-ui的this.$alert冲突问题解决
  10. python支持向量机回归_Python机器学习之支持向量机——非线性SVC