博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
基于alpine用dockerfile创建的ssh镜像
阅读量:6466 次
发布时间:2019-06-23

本文共 4595 字,大约阅读时间需要 15 分钟。

1、下载alpine镜像

[root@docker43 ~]# docker pull alpineUsing default tag: latestTrying to pull repository docker.io/library/alpine ... latest: Pulling from docker.io/library/alpine4fe2ade4980c: Pull complete Digest: sha256:621c2f39f8133acb8e64023a94dbdf0d5ca81896102b9e57c0dc184cadaf5528Status: Downloaded newer image for docker.io/alpine:latest[root@docker43 ~]# docker imagesREPOSITORY          TAG                 IMAGE ID            CREATED             SIZEdocker.io/alpine    latest              196d12cf6ab1        3 weeks ago         4.41 MB

2、编写dockerfile

2.1.创建一个工作目录

[root@docker43 ~]# cd /opt/[root@docker43 opt]# mkdir alpine_ssh && cd alpine_ssh && touch Dockerfile[root@docker43 alpine_ssh]# ll总用量 4-rw-r--r-- 1 root root 654 10月  3 23:21 Dockerfile

2.2.编写Dockerfile

# 指定创建的基础镜像FROM alpine# 作者描述信息MAINTAINER alpine_sshd (zhujingzhi@123.com)# 替换阿里云的源RUN echo "http://mirrors.aliyun.com/alpine/latest-stable/main/" > /etc/apk/repositoriesRUN echo "http://mirrors.aliyun.com/alpine/latest-stable/community/" >> /etc/apk/repositories# 同步时间# 更新源、安装openssh 并修改配置文件和生成key 并且同步时间RUN apk update && \    apk add --no-cache openssh-server tzdata && \    cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \    sed -i "s/#PermitRootLogin.*/PermitRootLogin yes/g" /etc/ssh/sshd_config && \    ssh-keygen -t rsa -P "" -f /etc/ssh/ssh_host_rsa_key && \    ssh-keygen -t ecdsa -P "" -f /etc/ssh/ssh_host_ecdsa_key && \    ssh-keygen -t ed25519 -P "" -f /etc/ssh/ssh_host_ed25519_key && \    echo "root:admin" | chpasswd# 开放22端口EXPOSE 22# 执行ssh启动命令CMD ["/usr/sbin/sshd", "-D"]

2.3.创建镜像

# 在dockerfile所在的目录下[root@docker43 alpine_ssh]# pwd/opt/alpine_ssh[root@docker43 alpine_ssh]# docker build -t alpine:sshd .

3、创建容器测试

  创建容器

[root@docker43 alpine_ssh]# docker run -itd -p 10022:22 --name alpine_ssh_v1 alpine:sshd[root@docker43 alpine_ssh]# docker ps CONTAINER ID        IMAGE               COMMAND               CREATED             STATUS              PORTS                   NAMESb353f5f3b703        alpine:sshd         "/usr/sbin/sshd -D"   17 minutes ago      Up 17 minutes       0.0.0.0:10022->22/tcp   alpine_ssh_v1

  测试

[root@docker43 alpine_ssh]# ssh root@127.0.0.1 -p10022root@127.0.0.1's password: Welcome to Alpine!The Alpine Wiki contains a large amount of how-to guides and generalinformation about administrating Alpine systems.See 
.You can setup the system with the command: setup-alpineYou may change this message by editing /etc/motd.b353f5f3b703:~#

4、问题总结

  这些都是我在手动测试的时候遇见的,已经在写Dockerfile的时候加进去了处理方法

1. apk add --no-cache openssh-server   # 安装openssh的问题/ # apk add --no-cache openssh-serverfetch http://dl-cdn.alpinelinux.org/alpine/v3.8/main/x86_64/APKINDEX.tar.gzfetch http://dl-cdn.alpinelinux.org/alpine/v3.8/community/x86_64/APKINDEX.tar.gz(1/3) Installing openssh-keygen (7.7_p1-r2)ERROR: openssh-keygen-7.7_p1-r2: package mentioned in index not found (try 'apk update')(2/3) Installing openssh-server-common (7.7_p1-r2)(3/3) Installing openssh-server (7.7_p1-r2)ERROR: openssh-server-7.7_p1-r2: package mentioned in index not found (try 'apk update')2 errors; 4 MiB in 14 packages原因是:提示源没有这个openssh的包解决方式:在dockerfile中改为国内的源http://mirrors.aliyun.com/alpine/latest-stable/main/http://mirrors.aliyun.com/alpine/latest-stable/community/创建容器文件修改[root@docker43 ~]# docker run -it alpine/ # vi /etc/apk/repositories http://mirrors.aliyun.com/alpine/latest-stable/main/http://mirrors.aliyun.com/alpine/latest-stable/community/                                                    #http://dl-cdn.alpinelinux.org/alpine/v3.8/main     #http://dl-cdn.alpinelinux.org/alpine/v3.8/community# 注释或者删除原来的默认源,添加阿里云的源,然后执行apk update,在进行安装就OK了2、ssh 启动问题/ # /etc/init.d/sshd start/bin/sh: /etc/init.d/sshd: not found这样的方式不能启动,需要安装一个alpine的管理工具apk add --no-cache openrc/ # /etc/init.d/sshd start * WARNING: sshd is already starting 所以使用 /usr/sbin/sshd -D 方式启动。但是又出现如下错误 / # /usr/sbin/sshd -DCould not load host key: /etc/ssh/ssh_host_rsa_keyCould not load host key: /etc/ssh/ssh_host_ecdsa_keyCould not load host key: /etc/ssh/ssh_host_ed25519_keysshd: no hostkeys available -- exiting.解决方式:ssh-keygen -t rsa -P "" -f /etc/ssh/ssh_host_rsa_keyssh-keygen -t ecdsa -P "" -f /etc/ssh/ssh_host_ecdsa_keyssh-keygen -t ed25519 -P "" -f /etc/ssh/ssh_host_ed25519_key再次启动/ # /usr/sbin/sshd -D启动成功3、创建容器后的网络问题[root@docker43 opt]# docker run -it alpineWARNING: IPv4 forwarding is disabled. Networking will not work.解决方式:[root@docker43 ~]# vim /etc/sysctl.confnet.ipv4.ip_forward=1    # 添加这一行[root@docker43 ~]# docker run -it alpine/ #

  

 

转载于:https://www.cnblogs.com/zhujingzhi/p/9740423.html

你可能感兴趣的文章
Callable和Future
查看>>
installshield12如何改变默认安装目录
查看>>
少用数字来作为参数标识含义
查看>>
ScrollView中嵌套ListView
查看>>
JAVA虚拟机05--面试必问之JVM原理
查看>>
Algs4-2.3.1如何切分数组
查看>>
uva 10815 - Andy's First Dictionary(快排、字符串)
查看>>
观察者模式
查看>>
Oracle 11g网格控制器安装指南
查看>>
RackTables安装及应用指南
查看>>
希捷Backup Plus 共享世界的随身信使
查看>>
北京地铁全线支持NFC,移动支付的新机遇?
查看>>
HttpURLConnection和HttpClient
查看>>
Objective-C语法之动态类型(isKindOfClass, isMemberOfClass,id)等
查看>>
localdb下载地址
查看>>
java string,需要进行首字母大写改写
查看>>
java 类和对象
查看>>
【Swift】UILabel 设置内边距
查看>>
Swift - 使用set,get确保索引加减在正常的范围内
查看>>
编码与乱码(05)---GBK与UTF-8之间的转换--转载
查看>>