特别说明
本文用的是linux操作系统,所有环境均为linux环境。
本文是直接进入容器安装配置ssh远程登陆,然后通过配置好的容器生成新的镜像。不是使用Dockerfile的方式,请知晓。
先决条件
物理机安装Docker
物理机可以访问互联网
注册docker hub账号
下载镜像
从docker hub上下载centos镜像。
docker pull centos
不加版本会下载最新的即为centos:latest,下载特定版本自己指定例如 docker pull centos:6。
安装配置
进入容器
运行如下进入容器,之后本章节命令操作在容器的交互窗口运行,而非物理机。
docker run --network host --name test -i -t centos:latest /bin/bash
–network host 直接使用物理机的网络
–name 是给容器起个名叫test,之后生成镜像是要用到
-i 启动互式
-t 进入终端
centos:latest 镜像名
/bin/bash 运行 /bin/bash脚本启动一个bash shell
安装配置openssh-server
在容器交互窗口执行,这部如果报错,应该是物理机网络有问题,请确认你的物理机能够yum 下载。
yum -y install openssh-server
下载后分别执行,交互时直接空格即可
ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key
ssh-keygen -t dsa -f /etc/ssh/ssh_host_ed25519_key
启动sshd无报错即可
/usr/sbin/sshd -D
自己设置个密码
passwd
生成镜像并验证
本章节的命令操作在物理机而非容器交互窗口。
生成ssh镜像
重新开个linux终端,在物理机(注意这条命令是在物理机上执行,不是在容器的交互窗口)上运行如下命令基于容器生成镜像。运行完运行docker images查看是否有新的镜像,确认完可以到上章节容器窗口执行exit退出和容器交互。
docker commit test shihb/centos_ssh:7.5
test为上面我们命名的容器名
shihb/centos_ssh:7.5 新的镜像名,自己取
启动ssh容器
基于新的镜像启动容器,启动完可以docker ps 查看
docker run -d --rm -p 10000:22 shihb/centos_ssh:7.5 /usr/sbin/sshd -D
-d 后台启动
–rm 退出时自动删除容器
shihb/centos_ssh:7.5 自己取的新的镜像名
-p 端口映射 这样我们访问物理机的10000端口就可以访问容器
验证
ssh 到容器,可以在容器中执行命令具体如图,至此容器ssh远程登陆配置完成。
ssh root@wpc6 -p 10000
wpc6 为我的主机名
-p 为映射的端口10000即为容器的22端口