暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Docker入门- 为镜像添加SSH服务(CentOS 7)

IT那活儿 2022-11-17
750

点击上方“IT那活儿”公众号,关注后了解更多内容,不管IT什么活儿,干就完了!!!

方式1:基于commit命令创建新镜像

1. 使用ubuntu:latest镜像,创建容器
docker run -ti ubuntu
2. 进入容器之后
## 使用命令apt-get update更新软件源信息:
apt-get update
## 安装和配置SSH:
apt-get install openssh-server
## 创建/var/run/sshd目录,并启动SSH服务:
mkdir -p /var/run/sshd
/usr/sbin/sshd -D &

## 修改SSH安全登录配置,取消pam登录限制:
sed -ri 's/session required pam_loginuid.so/#session required pam_loginuid.so/g' /etc/pam.d/sshd
## 创建/root/.ssh目录,并添加本地或者其他主机的公钥.ssh/id_rsa.pub信息(在本地或其他主机执行ssh-keygen -t rsa命令生成)到/root/.ssh/authorized_keys文件中。
mkdir /root/.ssh
vi /root/.ssh/authorized_keys

## 创建启动SSH服务的脚本runsshd.sh,并添加可执行权限:
vi runsshd.sh
#!/bin/bash
/usr/sbin/sshd -D

## 最后退出容器,exit。
3. 使用docker commit CONTAINER [REPOSITORY[:TAG]] 命令创建新镜像
docker commit d9b410500c53 ubuntu:sshd
4. 使用新镜像ubuntu:sshd,创建容器,并把容器的SSH服务的22端口映射到本地主机的10022端口上
docker run -d -p 10022:22 ubuntu:sshd /runsshd.sh
5. 在本地或者其他主机就可以通过SSH访问10022端口来登录新创建的容器
比如:本地主机IP为192.168.44.81
ssh root@192.168.44.81 -p 10022

可以看到已经登录到新创建的容器,并可以执行命令。

方式2:使用Dockerfile文件创建新镜像

1. 在本地主机创建一个新目录ubuntu_sshd
mkdir ubuntu_sshd
2. 进入ubuntu_sshd目录,并编写runsshd.sh脚本和authorized_keys文件
vi runsshd.sh
#!/bin/bash
/usr/sbin/sshd -D

把本地或者其他主机的公钥.ssh/id_rsa.pub信息(在本地或其他主机执行ssh-keygen -t rsa命令生成)到authorized_keys文件中。
cat ~/.ssh/id_rsa.pub > authorized_keys
3. 编写Dockerfile文件
vi Dockerfile
# 指定基础镜像:
FROM ubuntu:latest
# 作者信息:
MAINTAINER suncc (xxxx@163.com)
# 安装SSH服务:
RUN apt-get update
RUN apt-get install openssh-server -y
RUN mkdir -p /var/run/sshd
RUN mkdir /root/.ssh

# 修改SSH安全登录配置,取消pam登录限制:
RUN sed -ri 's/session required pam_loginuid.so/#session required pam_loginuid.so/g' /etc/pam.d/sshd
# 复制文件到相应位置:
ADD authorized_keys /root/.ssh/.
ADD runsshd.sh /.
RUN chmod 755 /runsshd.sh

# 开放端口:
EXPOSE 22
# 设置启动容器时默认执行的命令:
CMD ["/runsshd.sh"]
4. 使用docker build -t [REPOSITORY[:TAG]] PATH 命令创建新镜像
……
5. 查看创建的新镜像
6. 使用新镜像ubuntu:sshdv2.0,创建容器,并把容器的SSH服务的22端口映射到本地主机的11022端口上
docker run -d -p 11022:22 ubuntu:sshdv2.0
成功创建容器:ff90b9d48413
7. 在本地或者其他主机就可以通过SSH访问11022端口来登录新创建的容器
比如:本地主机IP为192.168.44.81
ssh root@192.168.44.81 -p 11022
可以看到已经登录到新创建的容器,并可以执行命令。
通过上文描述的两种方式可以为镜像添加SSH服务。



本文作者:孙长城(上海新炬王翦团队)

本文来源:“IT那活儿”公众号

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论