zoukankan      html  css  js  c++  java
  • 使用dockerfile创建镜像遇到的问题

    1、在dockerfile里面使用本地镜像

    假设本地有golang:1.16镜像,你想使用,你可能回这么写

    FROM golang:1.16

    但是这样的话,docker会去docker.io拉取golang:1.16而不是使用本地的镜像

    那应该怎么办呢,其实很简单。修改下tag,改成docker.io上的镜像tag,如docker.io/golang:1.16。即前面加上仓库地址,可以是docker.io也可以是个人私有仓库

    这样的话docker就会使用本地的镜像了。所以在dockerfile里面使用镜像要记得加上仓库地址哦

    2、调试busybox、distroless等镜像

    busybox和distroless是linux的阉割版,不包含bash的。所以

    docker run -ti xxx /bin/bash是不管用的。那怎么办呢

    如果用distroless可以通过debug标签,下载debug版本的

    然后使用/busybox/sh 就可以了

    distroless镜像很小,但是里面有/busybox这个目录下有常用的一些命令,可以通过如/busybox/sh -c "mkdir xxx"来执行创建目录的操作。

    busybox类似。不多说

    3、使用distroless镜像来运行golang应用

    单单使用distroless镜像是无法完成golang程序的编译的,我们需要借助下其他镜像。如官方提供的golang

    FROM xxx/golang:1.16 as builder
    COPY XXX/ XXX/
    拷贝其他文件
    RUN GOOS=linux等其他环境信息 go build -a -o xxx main.go
    FROM xxx/distroless:nonroot
    COPY --from=builder 从上面将编译好的二进制文件拷贝过来
    ENTRYPOINT [./xxx]

    这样做之后会发现编好的镜像很小。而且不用担心有什么linux的漏洞,因为distroless镜像阉割了很多功能,所以更安全。

    其他之后遇到补充

  • 相关阅读:
    【BZOJ 4151 The Cave】
    【POJ 3080 Blue Jeans】
    【ZBH选讲·树变环】
    【ZBH选讲·拍照】
    【ZBH选讲·模数和】
    【CF Edu 28 C. Four Segments】
    【CF Edu 28 A. Curriculum Vitae】
    【CF Edu 28 B. Math Show】
    【CF Round 439 E. The Untended Antiquity】
    【CF Round 439 C. The Intriguing Obsession】
  • 原文地址:https://www.cnblogs.com/lgh344902118/p/15235803.html
Copyright © 2011-2022 走看看