共计 4418 个字符,预计需要花费 12 分钟才能阅读完成。
这篇文章主要介绍了怎么用 Dockerfile 构建 SSH Server,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让丸趣 TV 小编带着大家一起了解一下。
一. 相关的文件 1. 新建一个目录和一个 Dockerfile
mkdir y109-sshd
vim Dockerfile
2. Dockerfile 的内容如下
# docker sshd
FROM ubuntu:14.04
MAINTAINER y109 y109@qq.com
# 使用 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 restricted
deb-src http://mirrors.163.com/ubuntu/ precise main restricted
deb http://mirrors.163.com/ubuntu/ precise-updates main restricted
deb-src http://mirrors.163.com/ubuntu/ precise-updates main restricted
deb http://mirrors.163.com/ubuntu/ precise universe
deb-src http://mirrors.163.com/ubuntu/ precise universe
deb http://mirrors.163.com/ubuntu/ precise-updates universe
deb-src http://mirrors.163.com/ubuntu/ precise-updates universe
deb http://mirrors.163.com/ubuntu/ precise-security main restricted
deb-src http://mirrors.163.com/ubuntu/ precise-security main restricted
deb http://mirrors.163.com/ubuntu/ precise-security universe
deb-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 kB
Sending build context to Docker daemon
Step 0 : FROM ubuntu:14.04
--- 9cbaf023786c
Step 1 : MAINTAINER y109 y109@qq.com
--- 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 images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
y109/sshd latest 3101a36f0084 22 minutes ago 226.1 MB
none none 23f604e547b8 28 minutes ago 226.1 MB
none none 50647a1fb746 36 minutes ago 226.1 MB
...
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 ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fc37b83d343e 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 -p10922
The 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)? yes
Warning: 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
感谢你能够认真阅读完这篇文章,希望丸趣 TV 小编分享的“怎么用 Dockerfile 构建 SSH Server”这篇文章对大家有帮助,同时也希望大家多多支持丸趣 TV,关注丸趣 TV 行业资讯频道,更多相关知识等着你来学习!