gpt4 book ai didi

docker - 这个制作小型 GoLang 容器的 Docker 命令如何工作?

转载 作者:IT王子 更新时间:2023-10-29 02:32:16 33 4
gpt4 key购买 nike

这里是 docker 的新手。我按照说明 here为我的 Go 项目制作一个纤细的容器。虽然我不完全明白它在做什么,希望有人能启发我。

具体来说,生成这个 docker 容器有两个步骤。

  1. docker run --rm -it -v "$GOPATH":/gopath -v "$(pwd)":/app -e "GOPATH=/gopath"-w/app golang:1.8 sh - c 'CGO_ENABLED=0 go build -a --installsuffix cgo --ldflags="-s"-o hello'
  2. docker build -t myDockerImageName .

DockerFile 本身只包含

FROM iron/base
WORKDIR /app
COPY hello /app/
ENTRYPOINT ["./hello"]

我理解(从广义上讲)第一步是编译 go 程序并静态链接 C 依赖项(并在一个未命名的 docker 容器中执行所有这些操作)。第 2 步只是根据 DockerFile 中的说明生成 docker 镜像。

我不明白的是为什么第一个命令以 docker run 开头(为什么它需要在 docker 容器内运行?为什么我们不只是在它之外生成 Go 二进制文件,然后复制进去?)

如果它在 docker 容器内运行,如何将 docker 容器中生成的二进制文件放到我本地机器的文件系统中?(例如,为什么我需要将二进制文件复制回图像中 - 看起来是在 DockerFile 的第 3 行执行?)

最佳答案

您实际上使用了 2 个不同的 docker 容器,每个容器都有不同的图像。第一个容器仅在编译期间出现...它使用图像 golang:1.8。您正在做的是将当前工作目录挂载到该镜像中,并使用镜像中包含的 GO 版本对其进行编译。

第二个命令构建使用 iron/base 图像作为基础的自定义图像。然后将构建的应用程序复制到该镜像中并运行它。

关于docker - 这个制作小型 GoLang 容器的 Docker 命令如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46241146/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com