首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何使用dockerfile将ping命令添加到我的荚中?

如何使用dockerfile将ping命令添加到我的荚中?
EN

Stack Overflow用户
提问于 2022-07-03 11:46:02
回答 1查看 869关注 0票数 0

这是我的Dockerfile

代码语言:javascript
代码运行次数:0
运行
复制
# Build the manager binary
FROM golang:1.17 as builder

WORKDIR /workspace

# Copy the Go Modules manifests
COPY go.mod go.mod
COPY go.sum go.sum

# cache deps before building and copying source so that we don't need to re-download as much
# and so that source changes don't invalidate our downloaded layer
RUN go mod download

# Copy the go source
COPY main.go main.go
COPY api/ api/
COPY controllers/ controllers/
COPY opt/ opt/
RUN ls -altr /workspace
RUN chmod 775 /workspace/opt

# Build
RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -a -o manager main.go

FROM alpine as alpine
RUN apk add --no-cache bash

FROM scratch

COPY --from=alpine /lib/ld-musl-x86_64.so.1 /lib/ld-musl-x86_64.so.1
COPY --from=alpine /bin/ping ./ping

FROM registry.access.redhat.com/ubi8/ubi-minimal:latest
WORKDIR /
COPY --from=builder /workspace/manager .
COPY --from=builder /workspace/opt ./opt

RUN chgrp 0 /manager \
    && chmod g=u /manager

RUN chgrp 0 /opt \
    && chmod g=u /opt

ENTRYPOINT ["/manager","./ping"]

在构建图像之后,我使用

代码语言:javascript
代码运行次数:0
运行
复制
kubectl exec -it pod/controller-manager-deploy-5748468c5f-f4xrk -n cdg -- /bin/bash

登录到吊舱后,如果我运行ping命令

代码语言:javascript
代码运行次数:0
运行
复制
[root@controller-manager-deploy-5748468c5f-f4xrk /]# ping
bash: ping: command not found

我收到了这条错误消息。

在这个容器中的/usr/bin文件夹中,我只能看到这些包

代码语言:javascript
代码运行次数:0
运行
复制
[root@controller-manager-deploy-5748468c5f-f4xrk bin]# ls
'['           comm            db_verify        gapplication           gpgv2       md5sum               pwd           shred      tsort
 alias        command         dd               gawk                   grep        microdnf             read          shuf       tty
 arch         coreutils       df               gdbus                  groups      mkdir                readlink      sleep      type
 awk          cp              dir              gencat                 gsettings   mkfifo               realpath      sort       tzselect
 b2sum        csplit          dircolors        getconf                hash        mknod                rm            sotruss    ulimit
 base32       curl            dirmngr          getent                 head        mktemp               rmdir         split      umask
 base64       cut             dirmngr-client   getopts                hostid      modulemd-validator   rpm           sprof      unalias
 basename     date            dirname          gio                    iconv       mv                   rpm2archive   stat       uname
 bash         db_archive      du               gio-querymodules-64    id          nice                 rpm2cpio      stdbuf     unexpand
 bashbug      db_checkpoint   echo             glib-compile-schemas   info        nl                   rpmdb         stty       uniq
 bashbug-64   db_deadlock     egrep            gpg                    install     nohup                rpmkeys       sum        unlink
 bg           db_dump         env              gpg-agent              jobs        nproc                rpmquery      sync       update-ca-trust
 brotli       db_dump185      expand           gpg-connect-agent      join        numfmt               rpmverify     tac        users
 ca-legacy    db_hotbackup    expr             gpg-error              ld.so       od                   runcon        tail       vdir
 cat          db_load         factor           gpg-wks-server         ldd         p11-kit              sed           tee        wait
 catchsegv    db_log_verify   false            gpg-zip                link        paste                seq           test       watchgnupg
 cd           db_printlog     fc               gpg2                   ln          pathchk              sh            timeout    wc
 chcon        db_recover      fg               gpgconf                locale      pldd                 sha1sum       touch      who
 chgrp        db_replicate    fgrep            gpgme-json             localedef   pr                   sha224sum     tr         whoami
 chmod        db_stat         fmt              gpgparsemail           logname     printenv             sha256sum     true       xmlcatalog
 chown        db_tuner        fold             gpgsplit               ls          printf               sha384sum     truncate   xmllint
 cksum        db_upgrade      g13              gpgv                   makedb      ptx                  sha512sum     trust      yes

这里找不到ping命令。我必须在我的dockerfile中使用哪些命令来添加ping、openssl、uuidgen、jq、hostname、ip,以便我可以在吊舱内使用它?任何帮助都是非常感谢的。提前感谢!

EN

回答 1

Stack Overflow用户

发布于 2022-08-09 07:19:39

这基本上可以安装您想安装的任何包,您可以简单地在基本阶段或最后阶段添加运行选项,对于基于Debian/Ubuntu的映像,如下所示:

代码语言:javascript
代码运行次数:0
运行
复制
FROM base AS final
WORKDIR /
COPY --from=builder /workspace/manager .
COPY --from=builder /workspace/opt ./opt
######################
# Installing ping
RUN apt-get update
RUN apt-get install -y iputils-ping # <- change this according to your image
######################
RUN chgrp 0 /manager \    
    && chmod g=u /manager

RUN chgrp 0 /opt \
    && chmod g=u /opt

ENTRYPOINT ["/manager","./ping"]

根据linuxshelltips提示的这篇文章,以下是安装ping的方法:

代码语言:javascript
代码运行次数:0
运行
复制
$ sudo apt install iputils-ping    [On Debian, Ubuntu and Mint]
$ sudo yum install iputils         [On RHEL/CentOS/Fedora and Rocky Linux/AlmaLinux]
$ sudo emerge -a net-misc/iputils  [On Gentoo Linux]
$ sudo pacman -S iputils           [On Arch Linux]
$ sudo zypper install iputils      [On OpenSUSE]   

我不知道RedHat UBI映像是基于哪个发行版的,但我猜是RHEL吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72846222

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档