Docker学习记录

一、简要说明

今天学一下docker,之前安装完后怎么都跑不通,今天突然开窍了,想着是因为使用Docker Hub要使用外网,所以找了一个本地创建镜像的方案。

docker安装滤过,直接问AI就行了。
二、测试环境

使用的VM创建Ubuntu虚拟机做的测试。

没啥技术含量,都是问的AI复制粘贴的,这里就是做个记录,方便之后翻看。

以下是涉及到的操作命令

先安装go

bash 复制代码
# 更新包列表
sudo apt update

# 安装Go
sudo apt install golang-go -y

# 验证安装
go version

创建go程序

bash 复制代码
# 回到项目目录
cd local-docker-test

# 创建Go源文件
cat > main.go << 'EOF'
package main

import (
    "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

编译为静态二进制文件

bash 复制代码
# 编译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:输出文件名

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

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

创建Dockerfile

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

构建和运行镜像

bash 复制代码
# 构建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吧,还是要自己创建镜像库使用和维护的。

可能是过于小白,看不到太远的场景需求吧,后续再打脸完善。

相关推荐
w6100104662 分钟前
CKA-2026-Ingress
云原生·容器·kubernetes·cka
sensen_kiss20 分钟前
CAN302 Technologies for E-Commerce 电子商务技术 Pt.6 市场营销与SEO(搜索引擎优化)
android·学习·搜索引擎
我的xiaodoujiao22 分钟前
API 接口自动化测试详细图文教程学习系列9--Requests模块
python·学习·测试工具·pytest
乐园游梦记24 分钟前
机器学习:监督学习与无监督学习由浅入深全解析
人工智能·深度学习·学习·机器学习
bloglin9999928 分钟前
docker logs 如何一直监听日志输出
运维·docker·容器
woai336430 分钟前
JVM学习-基础篇-常见引用
jvm·学习
世人万千丶36 分钟前
Flutter 框架跨平台鸿蒙开发 - 家庭健康档案云应用
学习·flutter·华为·开源·harmonyos·鸿蒙
東雪木44 分钟前
Java学习——泛型基础:泛型的核心作用、泛型类 / 方法 / 接口的定义
java·学习·java面试
東雪木1 小时前
Java学习——内部类(成员内部类、静态内部类、局部内部类、匿名内部类)的用法与底层实现
java·开发语言·学习·java面试
AI_零食1 小时前
二十四节气物候现象速览卡片:鸿蒙Flutter框架 实现的传统文化应用
学习·flutter·华为·开源·harmonyos·鸿蒙