由于实训营的伙伴都在问曹大对 Golang
的版本要求问题,所以曹大直接给了一个基于 CentOS
做基础镜像的 Docker
镜像出来。但是编译完之后我发现有些太大了,让我本就贫瘠的磁盘空间不得不删了一部电影才装下它。
DockerHub
上 Golang
的官方镜像目前只有 1.15.X
的版本,而且没有预装 gdb
、dlv
这些上课必须要必备的东西。所以我自己重写了一个基于 Alpine
的上课需要的 Dockerfile
文件
1、Dockerfile 文件如下
# 曹大提供的 Dockerfile
FROM centos
RUN yum install dlv -y \
&& yum install binutils -y \
&& yum install vim -y \
&& yum install gdb -y \
&& yum install git -y \
&& yum install wget -y
RUN wget https://dl.google.com/go/go1.14.12.linux-amd64.tar.gz \
&& tar -C /usr/local -zxvf go1.14.12.linux-amd64.tar.gz \
&& rm /go1.14.12.linux-amd64.tar.gz
ENV PATH /usr/local/go/bin:$PATH
ENV GOPATH /home
ENV GOROOT /usr/local/go
ENV GOPROXY goproxy.cn复制
基于 Alpine
且安装了 gdb
、dlv
的 Docker
镜像构建文件
# Dockerfile 文件
# 基于 alpine 最新版本作基础镜像
FROM alpine:latest
# 作者名称
MAINTAINER limingshuang lms.minsonlee@gmail.com
# 环境变量
env GOPATH /home
env GOROOT /usr/local/go
env GOPROXY goproxy.cn
env PATH $GOROOT/bin:$GOPATH/bin:$PATH
# 构建镜像
# 1. 修改 alpine 镜像源为阿里云镜像源
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories \
# 2. 安装基础软件和依赖
&& apk add --no-cache --virtual .build-deps wget git tar \
&& apk add --no-cache gdb binutils libc6-compat \
# 3. 下载 golang 1.14.12 && 解压
&& wget -O /tmp/go.tar.gz https://dl.google.com/go/go1.14.12.linux-amd64.tar.gz \
&& tar -C /usr/local -zxvf /tmp/go.tar.gz \
# 4. 安装 dlv
&& echo "140.82.112.4 github.com" >> /etc/hosts \
&& echo "185.199.108.154 github.githubassets.com" >> /etc/hosts \
&& echo "199.232.69.194 github.global.ssl.fastly.net" >> /etc/hosts \
&& git clone https://github.com/go-delve/delve /tmp/delve \
&& cd /tmp/delve/cmd/dlv \
&& go build && go install \
# 4. 清理无用安装文件和缓存文件
&& rm -rf /tmp/* \
&& rm -rf $GOPATH/pkg/* \
&& rm -rf /var/cache/apk/* \
&& rm -rf /var/src/* \
&& apk del .build-deps
# 设置工作目录
WORKDIR $GOPATH
STOPSIGNAL SIGQUIT复制
2、使用 Dockerfile 构建镜像
docker build -t golearn .
复制
从构建结果可以看出,通过将基础镜像修改为 alpine 并做了一定的优化,成功将镜像大小缩小了近 500M。
3、启动容器
docker run -d -it -v /data/golearn:/home/src --name golearn golearn-alpine
复制
4、进入容器
docker exec -it golearn sh
复制
5、启动一个已经停止的容器
docker start <containerId or containerName>
复制
5、停止的容器
docker stop <containerId or containerName>
复制
-END -
如果你也喜欢这篇文章,请给我留个关注、在看、转发吧。欢迎你在评论区或给我公众号后台留言与我交流~
文章转载自李明双的身边,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
60分钟部署Oracle 21c RAC
王先生
246次阅读
2025-03-04 16:31:52
玩转DeepSeek系列:使用OCI GPU快速部署推理模型
甲骨文云技术
97次阅读
2025-03-03 09:46:33
EMQX MCP Server:实现 Claude 与 MQTT 交互新可能
EMQX
42次阅读
2025-03-07 10:29:52
docker下mysql升级
在路上
37次阅读
2025-03-02 19:55:18
如何使用 RisingWave 和 PuppyGraph 构建高性能实时图分析框架
RisingWave中文开源社区
29次阅读
2025-03-18 10:49:54
详细到没朋友的 NebulaGraph 桌面版部署指南
NebulaGraph 技术社区
25次阅读
2025-03-07 10:29:53
一键部署 GPU Kind 集群,体验 vLLM 极速推理
Se7en的架构笔记
20次阅读
2025-03-24 09:41:41
NineData 社区版初体验,大超预期
老叶茶馆
16次阅读
2025-03-18 10:45:49
使用Docker五分钟快速安装配置oracle数据库【最新版】【测试成功】
巴韭特锁螺丝
10次阅读
2025-03-10 08:47:21
Docker更新反人类?一款容器管理效率翻倍工具,还自带备份防崩溃
科技小猿
10次阅读
2025-03-10 08:01:15