Docker中怎么构建SSH镜像
本篇内容主要讲解“Docker中怎么构建SSH镜像”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Docker中怎么构建SSH镜像”吧!
[root@test01~]#yuminstalldocker[root@test01~]#systemctlenabledocker[root@test01~]#systemctlstartdocker下载本地镜像
使用docker run命令时,Docker会自动的先查找本地的镜像,如果没有找到,会继续向docker hub上查找并下载。我习惯先下载下来docker pull centos 默认本系统版本的最新版,如果指定版本,加上冒号和版本号
[root@test01~]#dockerpullcentos:7.4.1708[root@test01~]#dockerimagesREPOSITORYTAGIMAGEIDCREATEDSIZEdocker.io/centos7.4.17083afd47092a0e3monthsago196.6MB创建交互型容器
[root@test01~]#dockerrun-it--name="ssh_server"centos:7.4.1708/bin/bash[root@ffe61e183a6c/]#安装必要的服务
通过yum安装,检查yum源配置是否正确,centos7的默认和主机的一样
yuminstallopenssh-server安装ssh服务程序yuminstallnet-tools安装网络工具,用来查看端口,可不安装[root@ffe61e183a6c/]#yuminstallopenssh-servernet-tools
配置sshserver服务
使用ssh-keygen生成必要的密钥
[root@ffe61e183a6c/]#ssh-keygen-trsa-f/etc/ssh/ssh_host_rsa_key[root@ffe61e183a6c/]#ssh-keygen-tecdsa-f/etc/ssh/ssh_host_ecdsa_key[root@ffe61e183a6c/]#ssh-keygen-ted25519-f/etc/ssh/ssh_host_ed25519_key
启动ssh服务器,并查看是否启动成功
/usr/sbin/sshd-D&
此处的-D参数用于告诉SSH服务不以守护进程运行,而是和运行终端关联,有了运行终端,容器就不会退出
[root@ffe61e183a6c/]#/usr/sbin/sshd-D&[1]82[root@ffe61e183a6c/]#netstat-tunplaActiveInternetconnections(serversandestablished)ProtoRecv-QSend-QLocalAddressForeignAddressStatePID/Programnametcp000.0.0.0:220.0.0.0:*LISTEN82/sshdtcp600:::22:::*LISTEN82/sshd[root@ffe61e183a6c/]#pkillsshd编写SSH运行脚本
至此,我们可以证实ssh服务启动没有问题,接下来我们编写启动脚本,用于启动容器的时候运行,因为容器启动时只能运行一个命令,一般这个命令用来启动脚本
[root@ffe61e183a6c~]#catrun.sh#!/bin/bash/usr/sbin/sshd-D[root@ffe61e183a6c~]#chmod775run.sh提交生成的镜像
使用docker commit将刚才的容器提交为一个新的镜像
[root@ffe61e183a6c~]#exitexit[root@test01~]#[root@test01~]#dockerps-aCONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTSNAMESffe61e183a6ccentos:7.4.1708"/bin/bash"19minutesagoExited(0)8secondsagossh_server[root@test01~]#dockercommitffe61e183a6cssh:commitsha256:be55c135e6141481aff3218b7a269b27d8f0faa295ed244849bf8ccf7ad1c7b1[root@test01~]#dockerimagesREPOSITORYTAGIMAGEIDCREATEDSIZEsshcommitbe55c135e61411secondsago296.5MBdocker.io/centos7.4.17083afd47092a0e3monthsago196.6MB启动镜像
[root@test01~]#dockerrun-d-p2022:22ssh:commit/root/run.sh6d5628a2a336bc302fa45baf6e6a1d5ade2f6dd42a4697553c6e3dda1a0a3226[root@test01~]#dockerpsCONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTSNAMES6d5628a2a336ssh:commit"/root/run.sh"8secondsagoUp6seconds0.0.0.0:2022->22/tcpprickly_bell补漏
刚才忘记给docker镜像设置密码了,这次需要给设置一下密码
[root@test01~]#dockerps-aCONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTSNAMES6d5628a2a336ssh:commit"/root/run.sh"6minutesagoExited(137)4minutesagoprickly_bellffe61e183a6ccentos:7.4.1708"/bin/bash"29minutesagoExited(0)9minutesagossh_server[root@test01~]#dockerrun-itssh:commit/bin/bash[root@0204e7257a24/]#passwdrootChangingpasswordforuserroot.Newpassword:Retypenewpassword:passwd:allauthenticationtokensupdatedsuccessfully.[root@0204e7257a24/]#exitexit[root@test01~]#dockerps-aCONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTSNAMES0204e7257a24ssh:commit"/bin/bash"29secondsagoExited(0)4secondsagotrusting_borg6d5628a2a336ssh:commit"/root/run.sh"9minutesagoExited(137)7minutesagoprickly_bellffe61e183a6ccentos:7.4.1708"/bin/bash"32minutesagoExited(0)12minutesagossh_server[root@test01~]#dockercommit0204e7257a24ssh02:commitsha256:b92a3cde4c9162cf12ac9cf61a61ce0332d3755b7708e4037c4df09b4e794177再次启动需改后的镜像
[root@test01~]#dockerrun-d-p2022:22ssh02:commit/root/run.sh357ed4074c5d7f1ec1fe0df6af9c9a3162c70fa5624f7742bf59f309d9842247验证是否成功
[root@test01~]#sshroot@192.168.1.60-p2022root@192.168.1.60'spassword:[root@357ed4074c5d~]#exit[root@test01~]#dockerstop357ed4074c5d基于Dockerfile方式创建准备文件
创建一个存放生成镜像相关文件的目录
该目录下需要创建2个文件:Dockerfile、run.sh。Dockerfile用于构建镜像,run.sh是启动SSH服务的脚本
mkdirssh_dockerfile&&cdssh_dockerfile编写Dockerfile、run.sh
[root@test01ssh_dockerfile]#catDockerfile#使用的基础镜像FROMcentos:7.4.1708#添加作者信息MAINTAINERliuxin842887233@qq.com#安装SSH服务RUNyuminstall-yopenssh-server#添加必要的密钥RUNssh-keygen-trsa-f/etc/ssh/ssh_host_rsa_keyRUNssh-keygen-tecdsa-f/etc/ssh/ssh_host_ecdsa_keyRUNssh-keygen-ted25519-f/etc/ssh/ssh_host_ed25519_key#添加启动文件ADDrun.sh/root/run.shRUNchmod775/root/run.sh#导出端口EXPOSE22#设置默认启动命令CMD["/root/run.sh"][root@test01ssh_dockerfile]#catrun.sh#!/bin/bash/usr/sbin/sshd-D创建镜像
[root@test01ssh_dockerfile]#dockerbuild./SendingbuildcontexttoDockerdaemon3.072kBStep1:FROMcentos:7.4.1708--->3afd47092a0eStep2:MAINTAINERliuxin842887233@qq.com--->Usingcache--->bd64810df0bcStep3:RUNyuminstall-yopenssh-server--->Usingcache--->5dc6301a0304Step4:RUNssh-keygen-trsa-f/etc/ssh/ssh_host_rsa_key--->Usingcache--->0ce92e5baa9fStep5:RUNssh-keygen-tecdsa-f/etc/ssh/ssh_host_ecdsa_key--->Usingcache--->fcb2bcf78ea0Step6:RUNssh-keygen-ted25519-f/etc/ssh/ssh_host_ed25519_key--->Usingcache--->7eae01e47ee2Step7:ADDrun.sh/root/run.sh--->4d07a723ffcfRemovingintermediatecontainer0b137a9274beStep8:RUNchmod775/root/run.sh--->Runningin1d5a9524da86--->324868eb5780Removingintermediatecontainer1d5a9524da86Step9:EXPOSE22--->Runninginada62bb87978--->a0b3df156e21Removingintermediatecontainerada62bb87978Step10:CMD/root/run.sh--->Runningin4f5031577ff4--->8679c00088efRemovingintermediatecontainer4f5031577ff4Successfullybuilt8679c00088ef[root@test01ssh_dockerfile]#dockerimagesREPOSITORYTAGIMAGEIDCREATEDSIZE8679c00088efAboutaminuteago295.9MBssh02commitb92a3cde4c9155minutesago296.5MBsshcommitbe55c135e614Aboutanhourago296.5MBdocker.io/centos7.4.17083afd47092a0e3monthsago196.6MB运行镜像
[root@test01ssh_dockerfile]#dockerrun-d-p2022:228679c00088efe73a441afc8df35f42a30974c8697278fe6d35c1ac711d13ec817e74ffbf4008[root@test01ssh_dockerfile]#dockerpsCONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTSNAMESe73a441afc8d8679c00088ef"/root/run.sh"14secondsagoUp12seconds0.0.0.0:2022->22/tcpfervent_yonath
到此,相信大家对“Docker中怎么构建SSH镜像”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。