Docker构建一个带SSH服务的CentOS镜像

125 次查看 0 条评论

1、编写 Dockerfile 文件构建

以普通权限运行SSH服务,创建 Dockerfile 写入如下内容:

FROM centos:7.5.1804
RUN yum -y install passwd openssl openssh-server iproute \
&& yum clean all \
&& mkdir /var/run/sshd \
&& ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key \
&& ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key \
&& echo "root:123456" | chpasswd
EXPOSE 22
ENTRYPOINT ["/usr/sbin/sshd","-D"]

以特权权限运行SSH服务,特权下启动D-Bus服务,容器中可以使用systemctl管理服务:

FROM centos:7.5.1804
RUN yum -y install passwd openssl openssh-server iproute \
&& yum clean all \
&& mkdir /var/run/sshd \
&& ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key \
&& ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key \
&& systemctl enable sshd.service \
&& echo "root:123456" | chpasswd
EXPOSE 22
ENTRYPOINT ["/usr/sbin/init"]

这里使用 && 将多条命令合并减少镜像层数。

2、执行构建镜像

docker build --rm -t centos-sshd .
docker build --rm -t centos-sshd-privileged .

使用 --rm 参数,在构建完毕后删除中间镜像,注意不要少了那个点。
如果执行成功最后会显示 Successfully built 后接一串哈希的字样。部分截图如下:

69224-6ksgwniebjt.png

查看构建的镜像:

34390-lmiavy8ctl8.png

3、使用构建的镜像运行一个容器

# 普权运行
docker run -d -p 2222:22 centos-sshd
# 特权运行
docker run -d -p 2223:22 --privileged centos-sshd-privileged

该镜像我也Push到了Docker HUb仓库。

36725-ou6pufouu8.png

可以直接Pull后使用(国内Docker Hub可能被墙):

# 普权
docker pull docker.io/k649781645/centos:latest
# 特权
docker pull docker.io/k649781645/centos:privileged

4、测试是否能SSH登录容器

ssh -p 2222 root@Docker-Server-Ip
ssh -p 2223 root@Docker-Server-Ip

36846-fq4agdftomo.png

5、处理中文乱码

这个镜像是不支持文中的,中文都会以乱码显示。参见:中文乱码处理

Linux SSH , CentOS , Docker

暂无评论