在 Alpine Docker 容器上安装 OpenSSH

Posted

技术标签:

【中文标题】在 Alpine Docker 容器上安装 OpenSSH【英文标题】:Installing OpenSSH on the Alpine Docker Container 【发布时间】:2016-06-11 22:14:45 【问题描述】:

第一次运行 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应该如何安装?

【问题讨论】:

不回答,只分享:If you run SSHD in your Docker containers, you're doing it wrong! by jpetazzo -- docker dev. 你好@Auzias - 优秀的文章 - 谢谢。我正在安装 SSH 服务器,以便能够同时了解有关 SSH 和 Alpine 的更多信息。基本上是一个玩具实验。 @Auzias,ssh'ing 到容器对于远程调试 python 应用程序很有用。 @Auzias 来自您的链接:Unless your container is an SSH server, of course. :) @weberc2 显然! @pitt 我不同意,这种需要的最佳实践是使用所有调试工具运行另一个 docker 并执行 docker exec debugging-img --pid=container-to-debug 【参考方案1】:

首先运行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

【讨论】:

或者,一次性完成更新和添加:RUN apk add --update openssh 运行 apk 添加 --update --no-cache openssh【参考方案2】:

因为已经给出了答案,但我会补充一些东西。

在新版本中,如果你想安装一些东西而不在本地缓存东西,建议你保持容器小,包括--no-cache标志。示例:

apk add --no-cache openssh

这是一个小收获,它可以防止您在 Dockerfile 的末尾使用常见的 rm -rf /var/cache/apk/*

【讨论】:

感谢 --no-cache 我还在使用 rm -rf hack【参考方案3】:

Dockerfile 供您参考

FROM alpine:3

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

CMD ["ssh"]

【讨论】:

以上是关于在 Alpine Docker 容器上安装 OpenSSH的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Docker 中的 Alpine 上运行 Apache 2?

在 alpine docker 容器上运行 selenium 测试时出错

Go 编译的二进制文件不会在 Ubuntu 主机上的 alpine docker 容器中运行

docker --Docker微容器Alpine Linux

基于alpine java的docker容器查看堆栈信息

在 alpine docker 容器中安装 psycopg2