当前位置: 首页 > 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.dtcms.com/a/367533.html

相关文章:

  • springboot配置多数据源(mysql、hive)
  • 机器学习如何精准预测高值
  • 【单片机day03】
  • More Effective C++ 条款28:智能指针
  • 洛谷 P3384 【模板】重链剖分/树链剖分-提高+/省选-
  • Websocket链接如何配置nginx转发规则?
  • Linux网络服务——基础设置
  • bd09转2gs84坐标算法
  • Python可视化93阅兵武器进化
  • 适应新环境:Trae编辑器下的IDEA快捷键定制
  • AgentThink:一种在自动驾驶视觉语言模型中用于工具增强链式思维推理的统一框架
  • 2025年数学建模国赛B题超详细解题思路
  • CSDN 与 掘金 高效学习指南
  • Web基础、HTTP/HTTPS协议与Nginx详解
  • 深度学习篇---MNIST:手写数字数据集
  • 【算法速成课2 | 题单】背包问题
  • RAG学习
  • Netty从0到1系列之Buffer【上】
  • Flutter之riverpod状态管理Widget UI详解
  • 投标委托测试如何选择第三方检测机构?
  • 记录SSL部署,链路不完整问题
  • Unity Standard Shader 解析(五)之ShadowCaster
  • go 初始化组件最佳实践
  • 2025数学建模国赛高教社杯A题思路代码文章助攻
  • deveco 出现hvigor版本与系统版本不匹配
  • (自用)Linux 常用命令自查文档
  • QT6 配置 Copilot插件
  • 以StarRocks为例讲解MPP架构和列式存储
  • Kafka 学习教程:从基础概念到实践操作
  • 香港云主机常见使用问题汇总