首页 帮助中心 常见问题 使用Dockerfile创建支持SSH服务的镜像的步骤
使用Dockerfile创建支持SSH服务的镜像的步骤
时间 : 2024-09-09 09:36:02 编辑 : 华纳云 阅读量 : 78

想通过Dockerfile来创建一个可以支持SSH服务的镜像一般步骤含哪些?先创建工作目录:

# mkdir sshd_ubuntu  

 

# ls  

在其中继续创建Dockerfile和run.sh文件:

# cd sshd_ubuntu/  

 

# touch Dockerfile run.sh  

 

# ls  

再编写run.sh脚本和authorized_keys文件

# vi run.sh  

 

写入内容

#! /bin/bash

 

/usr/sbin/sshd –D

在宿主机中生成SSH密钥对,并创建authorized_keys。

# ssh-keygen –t rsa

生成公钥/私钥rsa密钥对。

输入要保存密钥的文件(/root/.ssh/id rsa):

id rsa

[rootalocalhost sshd ubuntu]# ssh-keyqen -t rsa

输入密码(如果没有密码,请填空):idrsa

 

再次输入相同密码:idrsa

# cat ~/sshd_ubuntu/id_rsa.pub >authorized_keys

# ls

[root@localhost sshd ubuntul# ls

 

authorized keys

Dockerfile id rsa id rsa.pub run.sh

然后就可以开始编写Dockerfile。

#设置继承镜像

FROM ubuntu

#提供一些作者的信息

MAINTAINER from www.dockerpool.com by Aiden

#下面开始运行命令,此处更改Ubuntu的源为国内163的源

RUN echo "deb http://mirrors.163.com/ubuntu/ trusty main restricted universe multiverse" > /etc/apt/sources.list

RUN echo "deb http://mirrors.163.com/ubuntu/ trusty-security main restricted universe multiverse" >> /etc/apt/sources.list

RUN echo "deb http://mirrors.163.com/ubuntu/ trusty-updates main restricted universe multiverse" >> /etc/apt/sources.list

RUN echo "deb http://mirrors.163.com/ubuntu/ trusty-proposed main restricted universe multiverse" >> /etc/apt/sources.list

RUN echo "deb http://mirrors.163.com/ubuntu/ trusty-backports main restricted universe multiverse" >> /etc/apt/sources.list

RUN apt-get update

#安装ssh服务

RUN apt-get install -y openssh-server

RUN mkdir -p /var/run/sshd

RUN mkdir -p /root/.ssh

#取消pam限制

RUN sed -ri 's/session required pam_loginuid.so/#session required pam_loginuid.so/g' /etc/pam.d/sshd

#复制配置文件到相应位置,并赋予脚本可执行权限

ADD authorized_keys /root/.ssh/authorized_keys

ADD run.sh /run.sh

RUN chmod 755 /run.sh

#开放端口

EXPOSE 22

#设置自启动命令

CMD ["/run.sh"]

创建镜像,要注意在最后一个“.”表示使用当前目录中的Dockerfile

# docker build –t ssh:dockerfile .

Step 16/17 : EXPOSE 22

 

--> Running in 8127c0773eb6

Removing intermediate container 8127c0773eb6

--> 43deeebb36b0

Step 17/17 : CMD ["/run.sh"]

---> Running in 71a583b3lea4

Removing intermediate container 71a583b31ea4

---> 18d5664af464

Successfully built 18d5664af464

Successfully tagged sshd:dockerfile

命令执行完,可以看到Successfully built xxx表示镜像创建成功。在本地查看镜像sshd:dockerfile镜像已存在:

#docker images

测试镜像和运行内存,使用刚才创建sshd:dockerfile镜像来运行一个容器。直接启动镜像,映射容器的22端口到本地10122端口。

# docker run –d –p 10122:22 sshd:dockerfile

 

# docker ps

在宿主机新打开一个终端,连接到新建的容器

# ssh 192.168.56.33 –p 10122

这样就可以创建好镜像了如需帮助,请联系华纳云

华纳云 推荐文章
Linux快速部署DHCP服务器详细步骤 Linux使用pushd和popd高效切换目录 Windows上使用C#访问Ubuntu上Redis数据库 如何使用Bash补全功能简化linux和Docker命令行 如何使用SSHFS挂载远程目录 Linux中使用dd完成低级数据复制 Linux中显示和管理IP地址设置 如何在Ubuntu上安装Deepin桌面环境 Ubuntu 16.04.1上搭建Redis分布式集群并使用C#操作 Opera进入Ubuntu其他GNU/Linux发行版snap生态应用
客服咨询
7*24小时技术支持
技术支持
渠道支持