gpt4 book ai didi

docker - docker镜像之间的常用命令

转载 作者:行者123 更新时间:2023-12-02 18:17:50 25 4
gpt4 key购买 nike

我有 4 张图片,它们不共享相同的基本图片:

image1 : FROM openjdk:8  
image2 : FROM mongo:3.6
image3 : FROM ssh
image4 : FROM ubuntu

但在某些时候我必须对所有这些执行相同的命令,例如:

RUN useradd -s /bin/bash -p $(openssl passwd -1 user) -d /home/user -m -G sudo user
USER user
WORKDIR /home/user

RUN mkdir -p /home/user/.ssh/ && \
chmod 0700 /home/user/.ssh && \
touch /home/user/.ssh/authorized_keys && \
chmod 600 /home/user/.ssh/authorized_keys && \
touch /home/user/.ssh/config && \
chmod 600 /home/user/.ssh/config

COPY ssh-keys/ /keys/
RUN cat /keys/id_rsa.pub >> /home/user/.ssh/authorized_keys
RUN cat /keys/config >> /home/user/.ssh/config

并且具有相同的目录结构:

image1  
--->ssh-keys
------>config
------>id_rsa
------>id_rsa.pub
--->Dockerfile

image2
--->ssh-keys
------>config
------>id_rsa
------>id_rsa.pub
--->Dockerfile

image3
--->ssh-keys
------>config
------>id_rsa
------>id_rsa.pub
--->Dockerfile

image4
--->ssh-keys
------>config
------>id_rsa
------>id_rsa.pub
--->Dockerfile

有没有办法消除这种重复?

最佳答案

Scratch 不包含任何东西,最好使用 alpine 作为基础镜像并从可重用部分中删除以下命令

RUN useradd -s /bin/bash -p $(openssl passwd -1 user) -d /home/user -m -G sudo user
USER user

由于这些命令因操作系统(基础镜像)而异,并且在 Alpine 等环境中不起作用

所以我会建议类似的东西

image1  
--->Dockerfile
image2
--->Dockerfile
baseimage
--->ssh-keys
------>config
------>id_rsa
------>id_rsa.pub
--->Dockerfile

设计基础图片

FROM alpine as sshconfig
WORKDIR /home/user

RUN mkdir -p /home/user/.ssh/ && \
chmod 0700 /home/user/.ssh && \
touch /home/user/.ssh/authorized_keys && \
chmod 600 /home/user/.ssh/authorized_keys && \
touch /home/user/.ssh/config && \
chmod 600 /home/user/.ssh/config
COPY ssh-keys/ /keys/
RUN cat /keys/id_rsa.pub >> /home/user/.ssh/authorized_keys
RUN cat /keys/config >> /home/user/.ssh/config

构建这个图像

docker build -t sshconfig .

现在后续的 Docker 镜像将从这个 sshconfig Docker 基础镜像复制。

图片1

FROM ubuntu
# Add user
# change user

# copy ssh-config from base image
COPY --from=sshconfig /home/user/.ssh /home/user/.ssh

#for testing and verify keys
COPY --from=sshconfig /keys/ /keys/
# list keys copies form base image
RUN ls -lstrah /home/user/ /home/user/.ssh /keys/

关于docker - docker镜像之间的常用命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62757385/

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