• Docker -- DockerFile 讲解


    写在开头:实验室给的电脑只能装 20.04 然后跑仿真需要在 18.04 (20.04 的 Gazebo 居然不能支持!要是有人知道如何在 20.04 中使用 Gazebo GPU 欢迎留言;电脑配置是 Nvidia 3060)又是被迫学习一下 Docker

    DockerFile 指令讲解

    DockerFile 指定了 Docker 镜像的制作过程。通常用于自定义镜像。

    FROM

    FROM 指令是指定基本的镜像。这里着重讲解 Multiple FROM 机制。Multiple FROM 机制通常是在一个镜像下编译,将编译结果放在另一个镜像下运行。类似于 develruntime 区别。

    • Example
    # syntax=docker/dockerfile:1
    FROM golang:1.16 AS builder
    WORKDIR /go/src/github.com/alexellis/href-counter/
    RUN go get -d -v golang.org/x/net/html  
    COPY app.go    ./
    RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o app .
    
    FROM alpine:latest  
    RUN apk --no-cache add ca-certificates
    WORKDIR /root/
    COPY --from=builder /go/src/github.com/alexellis/href-counter/app ./
    CMD ["./app"]  
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    每一个 FROM 构成一个新的基础镜像,之后的代码会在基础镜像中运行。第一段中在环境一中编译代码得到结果 app 。第二段通过指令

    COPY --from=builder /go/src/github.com/alexellis/href-counter/app ./

    将第一段中的结果拷贝到当前镜像。其中 --from=builderbuilder 是由第一段中的 FROM golang:1.16 AS builder 决定。二镜像中不会留有其余一镜像的残余。

    COPY

    COPY [--chown=:] ... 
    COPY [--chown=:] ["",... ""]
    
    • 1
    • 2

    两种拷贝方式 – 本地到镜像 与 不同编译阶段的拷贝(上文的 Multi FROM 机制)。

    本地到镜像注意: 需要在 docker build 的目录下

    不同编译之间的拷贝可以看上文的:

    COPY --from=builder /go/src/github.com/alexellis/href-counter/app ./
    
    • 1

    这就是从一个编译阶段拷贝到另一个编译阶段。

  • 相关阅读:
    Solidity智能合约事件(event)
    【CSDN竞赛第五期】编程竞赛体验感受
    怎样选择一套适合自己的跨境商城源码?
    Windows10电脑没有微软商店的解决方法
    .NET应用系统的国际化-多语言词条服务
    CMD命令终端快捷键学习
    3.0 设计模式汇总
    JUC并发编程--------基础篇
    Java实现桥接模式(设计模式 五)
    leetcode4 寻找两个正序数组的中位数
  • 原文地址:https://blog.csdn.net/lib0000/article/details/126774075