编写Dokerfile创建支持ssh连接的镜像

1. 编写Dockerfile

基于基础镜像编写Dockerfile:

# 使用基础镜像
FROM redhat-python-java:v0.1

# 安装 epel-release 和更新系统
RUN yum update -y

ENTRYPOINT ["/bin/bash"]

# 设置 JAVA_HOME 和将 Java 添加到 PATH
ENV JAVA_HOME /opt/jdk1.8.0_381
ENV PATH $PATH:$JAVA_HOME/bin

# 安装 SSH 服务器
RUN yum install -y openssh-server

# 设置登录用户名和密码
RUN useradd -m -d /home/username -s /bin/bash username && \
    echo "username:password" | chpasswd

# 启动 SSH 服务
CMD ["/usr/sbin/sshd", "-D"]

ADD ./conf/ /conf/

RUN pip install -r /conf/requirements.txt

# 启动SSH服务
RUN systemctl enable sshd

# 暴露SSH端口
EXPOSE 22

# 启动命令
CMD ["/usr/sbin/init"]

2. 创建镜像

docker build --no-cache -t images_name:V1.0 .

3. 创建容器

docker run -it -p 8022:22 -d --name container_name --privileged=true images_name:V1.0 /usr/sbin/init

4. 添加用户

进入容器:

docker exec -it container_name bash

修改配置文件:

vi /etc/ssh/sshd_config

找到以下行并确保其没有注释(去掉前面的#符号):

PermitRootLogin yes
PasswordAuthentication yes

然后在文件末尾添加以下行,以允许普通用户使用SSH登录:

AllowUsers username

ESC输入:wq保存并关闭文件。
重启SSH服务:

systemctl restart sshd

5. 设置java环境变量

不在镜像中添加环境变量的话,也可在临时容器中设置:

vi /etc/environment

添加以下内容

JAVA_HOME=/opt/jdk1.8.0_381
PATH=$PATH:$JAVA_HOME/bin

6. 设置用户权限

打开 sudoers 文件进行编辑:

visudo

在 sudoers 文件中,找到以下行(通常在文件的末尾):

## Allow root to run any commands anywhere
root    ALL=(ALL)       ALL

允许用户 NMC_ECOMS 执行 sudo 命令:

NMC_ECOMS  ALL=(ALL) ALL
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值