如何在Alpine上安装OpenSSH?

102
第一次运行alpine docker容器并尝试安装openssh时,我遇到了以下错误:
ole@T:~$ docker run -it --rm alpine /bin/ash
/ # apk add openssh
WARNING: Ignoring APKINDEX.d3812b7e.tar.gz: No such file or directory
WARNING: Ignoring APKINDEX.bb2c5760.tar.gz: No such file or directory
ERROR: unsatisfiable constraints:
  openssh (missing):
    required by: world[openssh]

如何安装openssh

2
不回答,只是分享:如果你在Docker容器中运行SSHD,那么你做错了!由jpetazzo(https://github.com/jpetazzo/)-- Docker开发者编写。 - Auzias
1
你好 @Auzias - 优秀的文章 - 谢谢。 我正在安装SSH服务器,以便能够同时了解SSH和Alpine更多知识。基本上是一个玩具实验。 - Ole
@Auzias,通过ssh进入容器对于远程调试Python应用程序非常有用。 - Pitt
从您的链接中可以看到:“除非您的容器是SSH服务器,当然。” :) - weberc2
@weberc2 显然是这样!@pitt 我不同意,对于这个需求最好的做法是运行另一个 Docker 容器,其中包含所有调试工具,并执行 docker exec debugging-img --pid=container-to-debug - Auzias
重要的是在 /etc/ssh/sshd_config 中:PermitRootLogin yes - Sandburg
3个回答

139
首先运行apk update
一个完整的示例:
    ole@T:~$ docker run -it --rm alpine /bin/ash
    / # apk update
    fetch http://dl-4.alpinelinux.org/alpine/v3.3/main/x86_64/APKINDEX.tar.gz
    fetch http://dl-4.alpinelinux.org/alpine/v3.3/community/x86_64/APKINDEX.tar.gz
    v3.3.1-97-g109077d [http://dl-4.alpinelinux.org/alpine/v3.3/main]
    v3.3.1-59-g48b0368 [http://dl-4.alpinelinux.org/alpine/v3.3/community]
    OK: 5853 distinct packages available
    / # apk add openssh
    (1/3) Installing openssh-client (7.1_p2-r0)
    (2/3) Installing openssh-sftp-server (7.1_p2-r0)
    (3/3) Installing openssh (7.1_p2-r0)
    Executing busybox-1.24.1-r7.trigger
    OK: 8 MiB in 14 packages

31
或者,可以一次性进行更新、添加和安装:RUN apk add --update openssh - Ates Goral
10
运行命令:apk add --update --no-cache openssh - John Deer

91

虽然答案已经给出,但我会补充一些内容。

在新版本中,如果您想安装某些东西而不缓存本地内容,这样可以保持容器的小巧推荐使用 --no-cache 标志。例如:

apk add --no-cache openssh

这只是一个小收获,它可以避免您在 Dockerfile 结尾处使用常见的 rm -rf /var/cache/apk/* 命令。


1
感谢您使用 --no-cache,这让我仍然可以使用 rm -rf hack。 - Sasha Koss

16

您可以参考的Dockerfile

FROM alpine:3

RUN apk add --update --no-cache openssh

CMD ["ssh"]

--update 不是一个参数。 - Martin Braun

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接