使用 Docker 镜像构建 GO 语言环境

我当前使用的系统环境是 CentOS7 ,安装 Docker 使用的命令是 yum install docker*。至于其它系统,可以到百度查找其对应的安装方式。

目前来说,直接访问 Docker 官网的 DockerHub 会比较慢, 不过幸好现在国内出现了一些 DockerHub 的加速网站。 下面使用 ustc 加速器。

修改文件 /etc/docker/daemon.json,将其内容修改为

配置完成后,重启 Docker 服务:systemctl restart docker

这样就可以使用 https://docker.mirrors.ustc.edu.cn 加速器了。

现在就可以下载 golang 的 Docker 镜像了。

在命令行执行命令 docker search golang 就可以查询 golang 镜像的信息了。

可以看到,在查询结果中排名第一的,STARS 数量最多, 并且 OFFICIAL 选项下面是 OK ,说明是官方的,所以理论上应该是更可信的。 所以我们就选择使用第一个了。

执行命令 docker pull docker.io/golang 来下载 golang 的官方镜像吧。

下载好了之后,查看一下镜像的信息 docker images golang

执行命令 docker run -it –rm golang bash ,测试一下刚刚下载的 golang 镜像

可以看到,最新的是 1.9.2 版本的。

查看进到容器后的默认目录

看来是在 /go 目录下面。

不过因为我们在创建容器的时候加了 –rm 参数,所以当我们执行 exit 命令退出容器的时候,这个临时容器会被删除。

那我们如何使用这个 golang 的镜像来工作呢?

首先,如果我们把文件直接写在 Docker 容器里面的话,那么数据是无法持久化的。 即使可以使用 docker cp 命令这样的方式把我们的文件复制到容器内部, 或者把文件从容器中复制出来,但是在操作的时候仍会有很多不方便的地方。

而且,在 golang 的镜像中进行 build 操作的时候,程序依赖的第三方包, 会被下载到容器的 /go 目录下面。如果每次容器都删除, 或者每次创建新的容器的时候,都需要从网络上拉取一次第三方包。 如果网速快的话还好,否则时间浪费的有点儿严重。

所以,我们要把主机的目录映射到容器中,这样就可以把文件进行持久化了。

我们可以使用 docker 命令的 -v 参数,把主机的目录映射到容器中。 不过只使用 -v 参数的话,在容器内部操作目录会有权限限制, 所以还需要增加 –privileged 参数给容器放权。

我们可以在容器的目录 /go 和目录 /code 里面创建一些文件, 然后返回主机查看。

使用上面的方法,每次创建了容器,都会把主机上指定的目录映射到容器中,修改的数据也会反映到主机上。

开启容器

Original: https://www.cnblogs.com/fengbohello/p/8259904.html
Author: fengbohello
Title: 使用 Docker 镜像构建 GO 语言环境

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/534571/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球