1、写作目的
使用docker进行容器化模拟操作系统,这样就可以模拟多个虚拟机,然后用SSH连接到虚拟机,进行相关的操作
2、参考网址:
- centos内部安装镜像1:https://www.cnblogs.com/jing1617/p/9474545.html
- centos内部安装镜像2:https://blog.csdn.net/qq_38191191/article/details/83781760
- 外部SSH连接:https://www.cnblogs.com/zhengbin/p/6359216.html
- 全流程参考:https://blog.csdn.net/yangym2002/article/details/79000241
3、核心操作
0、以前下载的centos7.1在使用的时候总是有各种问题,今天果断抛弃,重新开始
清除所有的yum相关
yum clean all && yum swap -y fakesystemd systemd
重新下载centos7
docker pull centos7
1、清空所有的yum,重新安装
docker run -itd 9f38484d220f<imageID> /bin/bash
docker attach bbffc6952d90<containerID>
docker run -itd 9f38484d220f /bin/bash
docker attach 8471095cb9a8
2、进入容器内部安装docker
- 安装Docker CE
如果系统已经有Docker,则需要先删除它们:
yum remove docker docker-common docker-selinux docker-engine
- 使用Docker repository
安装yum工具
yum install -y yum-utils device-mapper-persistent-data lvm2
- 添加Docker repo
yum-config-manager
--add-repo
https://download.docker.com/linux/centos/docker-ce.repo
更新yum缓存
yum makecache fast安装Docker-ce
yum install docker-ce -y查看镜像是否安装成功
docker -v
3、在内部容器内安装SSH外部连接工具
安装ifconfig和ssh
yum search ifconfig
yum install net-tools.x86_64 -v看一下IP地址:ifconfig
查看ssh服务
rpm -qa |grep sshd
rpm -qa |grep ssh安装ssh服务
yum install -y openssh-server解决启动sshd报错
ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
ssh-keygen -t rsa -f /etc/ssh/ssh_host_ecdsa_key
ssh-keygen -t rsa -f /etc/ssh/ssh_host_ed25519_key修改 /etc/ssh/sshd_config 配置信息:
vi /etc/ssh/sshd_config
UsePAM yes 改为 UsePAM no
UsePrivilegeSeparation sandbox 改为 UsePrivilegeSeparation no(前面的#不要去掉)然后执行
sed -i "s/#UsePrivilegeSeparation./UsePrivilegeSeparation no/g" /etc/ssh/sshd_config
sed -i "s/UsePAM./UsePAM no/g" /etc/ssh/sshd_config
- 修改完后,重新启动sshd
/usr/sbin/sshd
修改root密码
passwd root然后退出,但不停止容器
Ctrl+P+Q
4、退出容器,然后commit该定制镜像
docker stop <containerID>
5、提交当前容器到镜像
docker commit <容器ID> <NAME/VERSION>
6、启动新容器,并且进行端口映射
docker run -itd -p 50001:22 -d 2a0aa5d6748c<newImgeID> /usr/sbin/sshd -D
docker run -p 700:22 -v /apps/software:/apps/docker/software --name enzoOS -d 2a0aa5d6748c /usr/sbin/sshd -D
【这种方式可以继续使用docker镜像】
docker run -it
-v /var/run/docker.sock:/var/run/docker.sock
-v /usr/bin/docker:/usr/bin/docker
-v /lib64/libltdl.so.7:/lib64/libltdl.so.7
--name enzoOS
-p 1100:22
-d 2a0aa5d6748c /usr/sbin/sshd -D
7、使用XShell连接
宿主机的IP:50001(根据用户自己暴露端口)