docker安装golang

最近玩 docker 比较多,试试安装 golang

操作系统:Linux

第一步

先看一下镜像:

docker images

看一下我们目前的镜像中,是不是有go

如果有,版本不合适等,可以考虑删除,重新安装,也可以不处理,我们再安装一个我们想要的版本即可

如果没有,正好我们继续下载

第二步

下载镜像:

docker pull golang:1.18.9

这里....

唉,我一开始一直使用的是 "go.1.18.9" 就一直给我提示,找不到资源

我一直搞不懂,为啥不行,然后就改为 "golang1.18.9" 就ok了

所以说,有的时候,简写还真不可以。。。

第三步

进一步查看 golang 是不是我们指定安装的版本:

docker inspect golang:1.18.9 | grep -i version
                "GOLANG_VERSION=1.18.9",
        "DockerVersion": "20.10.12",
                "GOLANG_VERSION=1.18.9",

输出上面这段,基本上也就清楚了。"GOLANG_VERSION=1.18.9"

确实是我们指定安装的版本。

如果同学们使用的是:

docker pull golang:latest

这样的,也可以用上面的方法,查看下载的具体版本,一般是最新的。

查看镜像版本的具体文章,可以去看看这篇:

docker镜像latest具体是哪个版本_docker latest 版本_龙枫995的博客-CSDN博客其实docker也有提供镜像具体版本的获取方式。docker 中 image 镜像管理image 中有一个inspect显示一个或多个图像的详细信息那么组合一下,就是这样:https://blog.csdn.net/longfeng995/article/details/128828905?spm=1001.2014.3001.5501

好的,镜像创建成功,我们继续下一步,走走容器

第四步

运行容器

docker run --name localhost-go -itd golang:1.18.9 bash

命令中,各项参数解释:

run在新容器中运行命令
--name为容器分配一个名称。上面我们分配的名称就叫"localhost-go"
-d后台运行容器,并返回容器ID
-i以交互模式运行容器,通常与 -t 同时使用
-t为容器重新分配一个伪输入终端,通常与 -i 同时使用

运行上面的命令,成功的话,会输出 容器ID

我们再用下面这个命令看一下:

docker ps

会发现,容器里已经存在了我们的 "localhost-go"

使用下面这条命令:

docker exec -it localhost-go bash

进入容器后,我们查看一下 golang 的环境变量:

go env

这样 首先是确保,go 是否正常运行的,其次 就是查看一下环境变量,好了解 go 的配置,是否需要修改等。

我们可以修改一些环境变量:

比如:

  • GO111MODULE 是一个开关,通过它可以开启或关闭 go mod 模式
  • GOPROXY  代理,下载一些依赖时可能会遇到翻墙等问题,可以使用阿里云的,别的也可以,比如腾讯云、七牛云等
  • GOPATH  GO的工作目录,也是项目存放目录

如果 GOPATH 的值是 "/go" 我们就不需要修改,否则:

go env -w GOPATH=/go

但一般不需要修改,因为默认是这样的。。

GO111MODULE 有可能是等于一个空字符串的,建议是可以打开。

go env -w GO111MODULE=on

GOPROXY 默认情况下,使用的是 "https://proxy.golang.org,direct" 这个是国外的网站域名哈,所以当我们下载依赖等等的时候,就可能会很慢,甚至还会掉线。

所以,我们需要切换成我们国内的代理:

go env -w GOPROXY=https://mirrors.aliyun.com/goproxy/

我这里使用的就是 阿里云的代理。

最后我们可以再看一下修改是否成功,使用下面的命令查看 go 环境变量:

go env

好的,没有问题了。。。

但是,还缺少一个最重要的东西

那就是挂载!

进阶版

因为我们一般是在本地进行开发,按照以上的模式,容器里是不会存在相关的文件的,所以我们就需要进行挂载,将我们本地的文件等都映射到容器里。

行,推翻重来,我们先删除刚刚创建的

docker stop localhost-go
docker rm localhost-go

以上命令是:先停止容器,再关闭容器

重新创建一个容器:

docker run -itd -p 8081:8080 -v /docker/go/demo:/go --name localhost-go golang:1.18.9

命令中,各项参数解释:

run在新容器中运行命令
--name为容器分配一个名称。上面我们分配的名称就叫"localhost-go"
-d后台运行容器,并返回容器ID
-i以交互模式运行容器,通常与 -t 同时使用
-t为容器重新分配一个伪输入终端,通常与 -i 同时用
-v绑定一个卷,英文冒号前面的代表是本地路径,后面的代表是容器内的

运行过后,可以再用 docker ps 查看一下,一般是成功的哈

然后我们去我们本地的 挂载 "/docker/go/demo" 目录下,创建一个文件: main.go

进行编辑:

package main

import (
    "fmt"
)

func main() {
    fmt.Println("Hello,World!")
}

我们再进入容器内部:

docker exec -it localhost-go bash

进入后,默认的路径是 "/go" 一般是如此的

查看这个目录下的文件:

ls

就能看到我们在本地环境下,创建的 main.go 文件,再使用 cat 查看文件内容:

cat main.go

我们再使用 go 来运行该文件:

go run main.go

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/26987.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux之进程间通信——管道

文章目录 前言一、进程间通信1.概念2.目的3.进程间通信分类 二、管道1.管道介绍2.管道分类1.匿名管道pipi创建管道文件,打开读写端fork子进程关闭父进程的读取端,关闭子进程的写入端读写特征管道特征 2.命名管道mkfifo创建管道文件删除管道文件通信 三、…

Blindly Assess Image Quality in the Wild Guided by ASelf-Adaptive Hyper Network

Abstract 真实失真图像的盲图像质量评估(BIQA)一直是一个具有挑战性的问题,因为在野外采集的图像包含各种各样的内容和各种类型的失真。目前绝大多数的BIQA方法都专注于如何预测合成图像的质量,但当应用于真实世界的失真图像时却失败了。为了应对这一挑…

一站式完成车牌识别任务:从模型优化到端侧部署

交通领域的应用智能化不断往纵深发展,其中最为成熟的车牌识别早已融入人们的日常生活之中,在高速公路电子收费系统、停车场等场景中随处可见。一些企业在具体业务中倾向采用开源方案降低研发成本,但现有公开的方案中少有完成端到端的车牌应用…

DMBOK知识梳理for CDGA/CDGP——第三章数据治理

关 注gzh“大数据食铁兽” 回复“知识点”获取《DMBOK知识梳理for CDGA/CDGP》常考知识点(第三章数据治理) 第三章 数据治理 第三章在是CDGA|CDGP考试的重点考核章节之一,知识点比较密集,本章重点为语境关系图及数据治理概念…

给电脑重装系统的时间需要多久才能装好

在进行电脑重装系统时,如果遇到系统安装时间过长的情况,可能会引起用户的困惑和不安。本文将介绍一些常见的原因和解决方法,以帮助您理解并应对系统安装时间过长的情况。 ​工具/原料: 系统版本:Windows 10 专业版 品…

Python数据攻略-Pandas的数据创建与基础特性

大家好,我是Mr数据杨!今天将进入Python的Pandas数据世界,就像三国演义中的英雄们,用聪明才智塑造自己的命运。 记得三国中,周瑜曾利用兵法巧妙策划火烧赤壁,击败曹军。这就像创建一个Pandas DataFrame&…

JavaSE笔记(七)重制版

多线程与反射 前面我们已经讲解了JavaSE的大部分核心内容,最后一章,我们还将继续学习JavaSE中提供的各种高级特性。这些高级特性对于我们之后的学习,会有着举足轻重的作用。 多线程 **注意:**本章节会涉及到 操作系统 相关知识…

宝塔面板搭建网站教程:Linux下使用宝塔一键搭建网站,内网穿透发布公网上线

文章目录 前言1. 环境安装2. 安装cpolar内网穿透3. 内网穿透4. 固定http地址5. 配置二级子域名6. 创建一个测试页面 转载自cpolar内网穿透的文章:使用宝塔面板快速搭建网站,并内网穿透实现公网远程访问 前言 宝塔面板作为简单好用的服务器运维管理面板&…

Spring为什么默认是单例的?

目录 一、五种作用域 二、单例bean与原型bean的区别 三、单例Bean的优势与劣势 一、五种作用域 1.singleton: singleton是Spring Bean的默认作用域,也就是单例模式。在整个应用程序中,只会创建一个实例,Bean的所有请求都会共享这个实例。 …

简单上手!快速将另一个报表的页面添加到 FastReport .NET!

FastReport 是功能齐全的报表控件,可以帮助开发者可以快速并高效地为.NET,VCL,COM,ActiveX应用程序添加报表支持,由于其独特的编程原则,现在已经成为了Delphi平台最优秀的报表控件,支持将编程开…

人车网租赁软件开发|人车网租赁系统|租赁系统源码功能

经过租赁小程序不只可以使物品得到充沛的运用,还能减少一些资源的浪费,租赁行业这两年因为互联网技术的完善,发展也在不断进步,租赁系统定制开发功能也在不断完善,那么企业想要开发租赁小程序的时分需求留意哪些方面呢…

长尾词挖掘,长尾词的优化方法有哪些

我们都知道,长尾词能给我们带来较高的流量和转化率,且优化难度低,成本低。今天就来分享长尾词的优化方法。 首先需要挖掘长尾词,挖掘长尾词的方法以下3种比较实用: 1、使用长尾词挖掘工具 可以通过第三方工…

小波和小波变换(应试)

零基础小白共计花费2小时38分04秒完成对小波的“平地起高楼”学习。 记录所有学习过程。 一、大致浏览PPT 这个阶段跳着看,太难的跳过 1.总结知识点 共四个部分 1.小波介绍 2.小波变换 小波变换的定义连续小波变换的定义离散小波变换小波重构 3.哈尔小波变换 …

【C++初阶】初识模板

👦个人主页:Weraphael ✍🏻作者简介:目前学习C和算法 ✈️专栏:C航路 🐋 希望大家多多支持,咱一起进步!😁 如果文章对你有帮助的话 欢迎 评论💬 点赞&#x1…

地理空间数据云管理-四维轻云1.3.2-版本更新内容

很多用户想要在不上传数据的情况下查看案例数据,我们在四维轻云1.3.2版本中为新用户新增了示例项目。此外,此次更新还新增了标绘数据模式和场景定时保存提醒功能,优化了插件启动流程以及移动和旋转变化轴。 1、新增示例项目 示例项目中包含…

Ubuntu 登录提示信息`Message of The Day`(MOTD)定制与开关

一、效果 登录Ubuntu的时候,在控制台可能会弹出一系列提示消息,有欢迎消息、系统信息、更新信息等等: 这些提示消息被称为Message of The Day,简称MOTD。 Ubuntu与其它Linux版本不太一样,它引入了MOTD 的概念。 这些…

健康管理系统开发笔记

健康管理系统 项目介绍功能架构项目结构maven项目搭建 项目介绍 健康管理系统是一款应用于健康管理机构的业务系统,实现健康管理机构工作内容 可视化、会员管理专业化、健康评估数字化、健康干预流程化、知识库集成化,从而提 高健康管理师的工作效率&a…

Intradeco通过适用于Excel的Liquid UI自动执行SAP MM并节省80%的处理时间

背景 Intradeco为服装制造提供整体方法,涵盖所有阶段:从构思阶段到最终产品分销。它已发展成为一家全球垂直制造公司,客户遍布美国、墨西哥和加拿大。 挑战 提高运营效率 原因:人员必须浏览多个 SAP 事务才能为新材料创建采购订单…

面向对象——权限修饰符、匿名内部类

package关键字 为什么要有包? 将字节码(.class)进行分类存放 包其实就是文件夹 包的定义及注意事项 定义包的格式 package 包名 多级包用.分割,如package com.heima里面的.就是分隔符 定义包的注意事项 package语句必须是程序的第…

Dockerfile详解

Dockerfile是什么 Dockerfile就是一个纯文本,里面记录了一系列的构建指令,如选择基础镜像、拷贝文件、运行脚本等等,RUN, COPY, ADD指令都会生成一个 Layer,而 Docker 顺序执行这个文件里的所有步骤,最后就会创建出一…