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

Docker学习记录

一、简要说明
今天学一下docker,之前安装完后怎么都跑不通,今天突然开窍了,想着是因为使用Docker Hub要使用外网,所以找了一个本地创建镜像的方案。
docker安装滤过,直接问AI就行了。
二、测试环境
使用的VM创建Ubuntu虚拟机做的测试。
没啥技术含量,都是问的AI复制粘贴的,这里就是做个记录,方便之后翻看。
以下是涉及到的操作命令
先安装go

# 更新包列表
sudo apt update# 安装Go
sudo apt install golang-go -y# 验证安装
go version

创建go程序

# 回到项目目录
cd local-docker-test# 创建Go源文件
cat > main.go << 'EOF'
package mainimport ("fmt""os""io/ioutil"
)func main() {// 读取文件内容content, err := ioutil.ReadFile("/message.txt")if err != nil {fmt.Printf("读取文件错误: %v\n", err)os.Exit(1)}// 输出文件内容fmt.Print(string(content))
}
EOF

编译为静态二进制文件

# 编译Go程序(静态链接,不依赖外部库)
GOOS=linux GOARCH=amd64 go build -o message-reader -ldflags="-s -w" main.go# 查看生成的文件
ls -la message-reader
file message-reader

编译参数说明:
GOOS=linux:目标系统为Linux
GOARCH=amd64:目标架构为x86_64
-ldflags=“-s -w”:去除调试信息,减小文件大小
-o message-reader:输出文件名

创建消息文件,返回的内容

# 创建消息文件
echo "恭喜!你成功运行了完全本地的Docker容器!" > message.txt
echo "这是一个不依赖Docker Hub的本地镜像。" >> message.txt
echo "构建时间: $(date)" >> message.txt
echo "使用Go静态二进制文件,无需系统工具!" >> message.txt

创建Dockerfile

# 创建Dockerfile
cat > Dockerfile << 'EOF'
FROM scratch
COPY message.txt /
COPY message-reader /
CMD ["/message-reader"]
EOF

构建和运行镜像

# 构建Docker镜像
docker build -t my-local-hello .# 查看镜像信息
docker images my-local-hello# 运行容器
docker run my-local-hello

如果没问题,应该会返回消息文件message.txt中的内容
到这里docker就跑通了,具体和项目的实际应用关联,后续再研究。

三、疑问点
我了解到的docker感觉就是类似git的一个东西,方便直接把本地编写的后端代码,自动化部署到目标服务器上,同时带了版本回退的功能。
如果只是这些功能,感觉自己写个自动化脚本要比用docker方便多了啊,这docker又要安装,又要配环境,而且公司自己项目的程序,也不推荐直接使用远端的Docker Hub吧,还是要自己创建镜像库使用和维护的。
可能是过于小白,看不到太远的场景需求吧,后续再打脸完善。

http://www.xdnf.cn/news/1450459.html

相关文章:

  • 记一次 Nuxt 3 + pnpm Monorepo 中的依赖地狱:`@unhead/vue` 引发的致命错误
  • 封边机高级设置密码解锁指南:技术解析与安全操作建议
  • k8s基础(未完待续)
  • doubletrouble: 1靶场渗透
  • ubuntu-24.04.3-live-server连接不上xhell
  • 当数据库宕机时,PostgreSQL 高可用在背后做了什么?
  • 探索 PostgreSQL 和 MySQL 之间的主要差异和相似之处,找到满足您项目需求的最佳数据库解决方案。
  • jQuery的$.Ajax方法分析
  • 低代码高效搭建应用,轻松应对多场景需求
  • 低代码选型避坑指南:告别封闭与绑定,星图云开发者平台定义开放灵活新标准
  • 3D 房地产地图 Web 应用
  • 从0到1搭建某铝箔智慧工厂网络:5G与WiFi 6助力智能制造
  • 渐变背景色和渐变字体颜色的实现方法
  • GPT-5冷酷操盘,游戏狼人杀一战封神!七大LLM狂飙演技,人类玩家看完沉默
  • 学习日记-SpringMVC-day49-9.4
  • 卫星通信+地面网络融合 Sivers半导体毫米波技术打通智慧交通最后一公里
  • DevOps平台选型指南:破解研发效率瓶颈,适配金融/政务/国产化场景的5大关键指标
  • E-E-A-T与现代SEO:赢得搜索引擎信任的完整策略
  • 高效办公新选择:艾克斯音频转文本工具——免费本地化AI识别神器
  • 第15章 Jenkins最佳实践
  • GitHub每日最火火火项目(9.4)
  • 在树莓派集群上部署 Distributed Llama (Qwen 3 14B) 详细指南
  • “乾坤大挪移”:耐达讯自动化RS485转Profinet解锁HMI新乾坤
  • 当Python遇见高德:基于PyQt与JS API构建桌面三维地形图应用实战
  • leetcode算法刷题的第二十六天
  • 软考中级习题与解答——第二章_程序语言与语言处理程序(2)
  • 用Logseq与cpolar:构建开源笔记的分布式协作系统
  • openEuler2403安装部署Kafka
  • 【图像处理基石】图像在频域处理和增强时,如何避免频谱混叠?
  • 机电装置:从基础原理到前沿应用的全方位解析