«

如何构建一个带ssh的rockylinux的docker镜像

时间:2024-12-16 12:24     作者:Anglei     分类: 虚拟化


要构建一个带有SSH服务的Rocky Linux Docker镜像,你可以按照以下步骤进行:

一、准备Dockerfile

首先,你需要创建一个Dockerfile,它定义了构建镜像所需的所有步骤。以下是一个示例Dockerfile,用于构建带有SSH服务的Rocky Linux镜像:

# 使用Rocky Linux作为基础镜像
FROM rockylinux:latest

# 更新系统并安装必要的软件包
RUN yum -y update && yum -y install openssh-server passwd && yum -y install net-tools

# 设置root密码(可选,但出于安全考虑,建议使用更安全的认证方式)
RUN echo 'root:yourpassword' | chpasswd

# 允许root用户通过SSH登录(默认配置可能禁止root登录)
RUN sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config

# 生成ssh-keygen,以免无法正常启动sshd,导致报错
RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N ""
RUN ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N ""
RUN ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key -N ""
RUN chown root:root /etc/ssh/ssh_host_*_key
RUN chmod 600 /etc/ssh/ssh_host_*_key

# 确保SSH服务在容器启动时自动运行
RUN mkdir -p /var/run/sshd
EXPOSE 22
CMD ["/usr/sbin/sshd", "-D"]

请注意,将yourpassword替换为你希望设置的root密码。然而,出于安全考虑,强烈建议使用密钥认证而不是密码认证。

二、构建Docker镜像

在Dockerfile所在的目录下,运行以下命令来构建Docker镜像:

docker build -t rocky-ssh:latest .


这将创建一个名为rocky-ssh的Docker镜像,标签为latest

三、运行Docker容器

使用以下命令来运行新构建的Docker容器,并将容器的22端口映射到主机的某个端口(例如10022), 或者取消映射,只在内网使用:

docker run -d -p 10022:22 --name rocky-ssh-container rocky-ssh:latest
或
docker run -d--name rocky-ssh-container rocky-ssh:latest


这里,-d选项表示以守护进程模式运行容器,--name选项为容器指定了一个名称,-p选项将容器的22端口映射到主机的10022端口。

四、验证SSH服务

首先获取docker镜像的IP地址:

docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' <容器ID或名称>

现在,你应该能够通过SSH连接到运行中的容器。使用以下命令进行连接:

ssh IP -p 10022
或
ssh IP

系统会提示你输入密码,输入你在Dockerfile中设置的root密码即可登录。

如果显示本地登录过这个IP,所存的秘钥信息不一致,则需要先清除一下:

ssh-keygen -f "/root/.ssh/known_hosts" -R "IP地址"

五、注意事项

  1. 安全性:如前所述,出于安全考虑,不建议在Dockerfile中设置root密码。相反,你应该配置密钥认证,并限制允许访问的IP地址范围。
  2. 持久化存储:如果你希望在容器停止后保留数据(例如SSH密钥、用户配置等),你需要使用Docker的卷(volumes)功能来持久化存储这些数据。
  3. 防火墙配置:确保你的主机防火墙允许通过你选择的端口(例如10022)进行SSH连接。

通过上述步骤,你应该能够成功地构建一个带有SSH服务的Rocky Linux Docker镜像,并在其中进行各种操作。

本文完结,相关标签: docker 镜像 SSH

 版权所有:Anglei
 文章标题:如何构建一个带ssh的rockylinux的docker镜像
 除非注明,本站文章如未特殊说明均为 MAXADA社区知识库 原创,且版权所有,请勿用于任何商业用途。

推荐阅读:

看完后感想如何?

路过(0)

雷人(0)

握手(1)

鲜花(2)

鸡蛋(0)
分享到: