博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Dockerfile分享之SSH Server
阅读量:5140 次
发布时间:2019-06-13

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

版权声明:本文由姚俊刚原创文章,转载请注明出处: 

文章原文链接:

来源:腾云阁 

 

Docker 官方网站上给出的示例里面有个 用 Dockerfile 构建 SSH Server 的例子, 我在腾讯云的主机上实验了一下, 中间添加了一些优化, 把实验过程记录如下, 希望对大家有帮助.

一. 相关的文件

1. 新建一个目录和一个 Dockerfile

mkdir y109-sshdvim Dockerfile

2. Dockerfile 的内容如下

# docker sshdFROM ubuntu:14.04MAINTAINER y109
# 使用 163.com 的源COPY sources.list.163.txt /etc/apt/sources.list RUN apt-get -y update # 设置 root 密码 RUN echo 'root:bMg5kesfdsfesx9gD' | chpasswd # 安装 openssh-server RUN apt-get -y install openssh-server RUN mkdir /var/run/sshd # SSH login fix. Otherwise user is kicked off after login RUN sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd # # ENV NOTVISIBLE "in users profile" RUN echo "export VISIBLE=now" >> /etc/profile # 添加公钥(如果没有公钥可以省略) RUN mkdir /root/.ssh RUN echo 'ssh-rsa YOU_PUB_KEY' > /root/authorized_keys # 容器启动后运行的程序 CMD ["/usr/sbin/sshd", "-D"] # 打开 22 端口 EXPOSE 22

sources.list.163.txt 的内容如下

deb http://mirrors.163.com/ubuntu/ precise main restricteddeb-src http://mirrors.163.com/ubuntu/ precise main restricteddeb http://mirrors.163.com/ubuntu/ precise-updates main restricteddeb-src http://mirrors.163.com/ubuntu/ precise-updates main restricteddeb http://mirrors.163.com/ubuntu/ precise universedeb-src http://mirrors.163.com/ubuntu/ precise universedeb http://mirrors.163.com/ubuntu/ precise-updates universedeb-src http://mirrors.163.com/ubuntu/ precise-updates universedeb http://mirrors.163.com/ubuntu/ precise-security main restricteddeb-src http://mirrors.163.com/ubuntu/ precise-security main restricteddeb http://mirrors.163.com/ubuntu/ precise-security universedeb-src http://mirrors.163.com/ubuntu/ precise-security universe

二.构建 Image

使用 docker build 来生成镜像

-t 参数是给这个镜像的 TAG

sudo docker build -t 'y109/sshd' ./Sending build context to Docker daemon 4.608 kBSending build context to Docker daemonStep 0 : FROM ubuntu:14.04 ---> 9cbaf023786c Step 1 : MAINTAINER y109
---> Using cache ---> 2256ab1cc931 Step 2 : COPY sources.list.163.txt /etc/apt/sources.list ---> Using cache ---> 65536ca26964 Step 3 : RUN apt-get -y update ---> Using cache ---> 60639e42f098 Step 4 : RUN echo 'root:pass123456' | chpasswd ---> Using cache ---> 8644dd20854f Step 5 : RUN apt-get -y install openssh-server ---> Using cache ---> 98039327bca7 Step 6 : RUN mkdir /var/run/sshd ---> Using cache ---> 9bd3b3fc7828 Step 7 : RUN sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd ---> Using cache ---> d748cb9428a0 Step 8 : RUN echo "export VISIBLE=now" >> /etc/profile ---> Using cache ---> e975cd819243 Step 9 : RUN mkdir /root/.ssh ---> Using cache ---> e561acc07675 Step 10 : RUN echo 'ssh-rsa YOU_PUBLIC_KEY' ---> Using cache ---> 8f6882a72037 Step 11 : CMD ["/usr/sbin/sshd", "-D"] ---> Using cache ---> 48cbd2c4aa70 Step 12 : EXPOSE 22 ---> Using cache ---> 3101a36f0084 Successfully built 3101a36f0084

使用 docker images 命令查看镜像, 确认镜像构建成功了

sudo docker imagesREPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZEy109/sshd           latest              3101a36f0084        22 minutes ago      226.1 MB
23f604e547b8 28 minutes ago 226.1 MB
50647a1fb746 36 minutes ago 226.1 MB y ...

y109/sshd就是我们刚才构建的镜像

三.创建 Container

使用 docker run 来用镜像创建一个 Container

-d : Detached mode, 使 Container 在 background 模式运行-p : 把 22 端口映射到主机的网卡上, 格式: ip:hostPort:containerPort | ip::containerPort | hostPort:containerPort–name : 给 Container 指定一个名字, 一旦指定了名称这个名称就和这个 Container 绑定了, 可以用 docker ps -a 列出来

sudo docker run -d -p 10922:22 --name y109-sshd y109/sshd

我用的外网端口是 10922, 可以根据需要修改, 下一步需要确认 Container 是否正常执行了

sudo docker psCONTAINER ID        IMAGE               COMMAND               CREATED             STATUS              PORTS                   NAMESfc37b83d343e        y109/sshd:latest    "/usr/sbin/sshd -D"   9 seconds ago       Up 9 seconds        0.0.0.0:10922->22/tcp y109-sshd

看来执行成功了, 连接试试看看

ssh root@localhost -p10922The authenticity of host '[localhost]:10922 ([127.0.0.1]:10922)' can't be established.ECDSA key fingerprint is 4d:48:5c:61:54:d6:8f:62:70:a2:0e:ab:b7:1a:cb:f7.Are you sure you want to continue connecting (yes/no)? yesWarning: Permanently added '[localhost]:10922' (ECDSA) to the list of known hosts. The programs included with the Ubuntu system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. root@80f07ad418fe:~#

已经成功连接进入 Container 了

四.关闭 Container

sudo docker stop fc3 fc3 是 Container Id fc37b83d343e 的缩写, 只要能够唯一标识这个 Container 就可以了。或者sudo docker stop y109-sshd

五.运行 Container

sudo docker start y109-sshd

 

 

转载于:https://www.cnblogs.com/purpleraintear/p/6024321.html

你可能感兴趣的文章
Postman-----如何导入和导出
查看>>
【Linux】ping命令详解
查看>>
8、RDD持久化
查看>>
第二次团队冲刺--2
查看>>
[转载]加密算法库Crypto——nodejs中间件系列
查看>>
使用Xshell密钥认证机制远程登录Linux
查看>>
【模板】最小生成树
查看>>
java面试题
查看>>
pair的例子
查看>>
uva 387 A Puzzling Problem (回溯)
查看>>
Oracle中包的创建
查看>>
django高级应用(分页功能)
查看>>
【转】Linux之printf命令
查看>>
关于PHP会话:session和cookie
查看>>
C#double转化成字符串 保留小数位数, 不以科学计数法的形式出现。
查看>>
利用IP地址查询接口来查询IP归属地
查看>>
构造者模式
查看>>
Hbuild在线云ios打包失败,提示BuildConfigure Failed 31013 App Store 图标 未找到 解决方法...
查看>>
找到树中指定id的所有父节点
查看>>
jQuery on(),live(),trigger()
查看>>