我对linux和docker概念完全陌生
在Windows计算机中,我在虚拟框中启动centos7
运行docker-compose build时我得到
/bin/sh: /usr/sbin/sshd-keygen: No such file or directory
如何纠正
我试图创建一个远程用户
docker-compose.yml
version: '3'
services:
jenkins:
container_name: jenkins
image: jenkins/jenkins
ports:
- "8080:8080"
volumes:
- "$PWD/jenkins_home:/var/jenkins_home"
networks:
- net
remote_host:
container_name: remote-host
image: remote-host
build:
context: centos7
networks:
- net
networks:
net:
DockerFile
FROM centos
RUN yum -y install openssh-server
RUN useradd remote_user && \
echo "Thevenus987$" | passwd remote_user --stdin && \
mkdir /home/remote_user/.ssh && \
chmod 700 /home/remote_user/.ssh
COPY remote-key.pub /home/remote_user/.ssh/authorized_keys
RUN chown remote_user:remote_user -R /home/remote_user/.ssh && \
chmod 600 /home/remote_user/.ssh/authorized_keys
RUN /usr/sbin/sshd-keygen
CMD /usr/sbin/sshd -D
答案 0 :(得分:1)
答案 1 :(得分:1)
在 Dockerfile 中
Change RUN /usr/sbin/sshd-keygen
// Centos8 不接受此命令
to RUN ssh-keygen -A
// 这有效。
我希望这个解决方案工作正常。
答案 2 :(得分:0)
将基本图像FROM centos
更改为FROM centos:7
,它将起作用
答案 3 :(得分:0)
Dockerfile应该是这样的:
FROM centos:7
RUN yum -y install openssh-server && \
yum install -y passwd && \ #Added
yum install -y initscripts #Added
RUN useradd remote_user && \
echo "1234" | passwd remote_user --stdin && \
mkdir /home/remote_user/.ssh && \
chmod 700 /home/remote_user/.ssh
COPY remote-key.pub /home/remote_user/.ssh/authorized_keys
RUN chown remote_user:remote_user -R /home/remote_user/.ssh/ && \
chmod 600 /home/remote_user/.ssh/authorized_keys
RUN /usr/sbin/sshd-keygen
#CMD /usr/sbin/sshd -D
CMD ["/usr/sbin/sshd", "-D"]
答案 4 :(得分:0)
问题在于您的Dockerfile中的这一行:
RUN /usr/sbin/sshd-keygen
这是当执行此行时得到的结果:/etc/rc.d/init.d/functions:没有这样的文件或目录。 / usr / sbin / sshd-keygen:找不到命令。
此init.d / functions文件对于不同的Linux发行版是不同的。它特定于您正在运行的任何发行版。该文件包含/ etc / init中存储的大多数或所有Shell脚本要使用的功能。 d目录。
要自己尝试,只需从Docker中心拉出CentOS:7映像,并从Dockerfile中测试您的RUN步骤,如下所示:
docker container run -i -t -d --name test centos:7
docker exec -it test bash
cd /etc/rc.d/init.d
ls -a
此目录中没有称为函数的文件。
在CentOS:7 Docker映像中,您只需安装软件包初始化脚本即可安装此脚本,因此请将这些行添加到Dockerfile中:
FROM centos:7
RUN yum install -y initscripts
答案 5 :(得分:0)
只需使用FROM centos:7(而不是使用centos8 基础镜像)
和
yum install -y 初始化脚本
注意:更新的 initscripts 错误修复增强包修复了几个错误,并添加了一项增强功能,现在可用于 Red Hat Enterprise Linux 6/7。
您根本不需要删除或调整以下行
运行 /usr/sbin/sshd-keygen
它会 100% 工作..
要了解有关 initscripts 错误修复增强功能的更多信息: https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/6.5_technical_notes/initscripts
答案 6 :(得分:-1)
1) 在Dockerfile中更改:
RUN /usr/sbin/sshd-keygen
到
RUN /usr/bin/ssh-keygen
2)或尝试
RUN sshd-keygen
如果包含并且存在于$ PATH中的任何位置,它将执行。
答案 7 :(得分:-1)
默认情况下,FROM centos提取最新版本,其中不包含sshd-keygen。
您需要将Dockerfile更改为:
FROM centos:7
...
&& yum install -y initscripts \
&& /usr/sbin/sshd-keygen
CMD ["/usr/sbin/sshd", "-D"]
答案 8 :(得分:-1)
只是centos的变化 来自centos:7
发生此错误的原因是,在docker centos运行centos7和现在运行centos 8之前
答案 9 :(得分:-1)
试试下面的命令而不是 RUN /usr/sbin/sshd-keygen
并且正如其他人指出的那样使用:
FROM centos:7
RUN ssh-keygen -A