1、清除所有的容器
[root@docker ~]# docker rm -f `docker ps -qa` #清除所有的容器
2、启动一个基础centos容器
[root@docker ~]# docker run -it --name "c1_sshv1" centos:7 /bin/bash #启动一个centos容器
3、进入容器中查询是否安装ssh,安装所需要的软件包。
[root@db29600b2097 /]# rpm -qa|grep openssh
执行后没有返回值说明没有安装ssh。
4、更改yum源为本地ftp上的yum源。
首先,查看容器中的yum源。
[root@db29600b2097 /]# cd /etc/yum.repos.d/
[root@db29600b2097 yum.repos.d]# ls
CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Sources.repo CentOS-fasttrack.repo
CentOS-CR.repo CentOS-Media.repo CentOS-Vault.repo CentOS-x86_64-kernel.repo
其次,把该目录下的repo文件全部移走到/tmp目录下。
(1)[root@db29600b2097 yum.repos.d]# mv *.repo /tmp/
(2)在/etc/yum.repos.d/目录下执行以下命令生成新的repo源
cat >/etc/yum.repos.d/ftp_7.repo <<EOF
[ftp]
name=ftpbase
baseurl=ftp://172.17.0.1/centos7.9
enable=1
gpgcheck=0
EOF
(3)生成新的yum源,进行yum源优化(注意名词:base源、epo源)
[root@db29600b2097 yum.repos.d]#yum clean all
[root@db29600b2097 yum.repos.d]#yum makecache fast #做一下缓存索引
5、优化完yum源之后,在容器中安装openssh
[root@db29600b2097 yum.repos.d]#yum install -y openssh*
[root@db29600b2097 yum.repos.d]#yum install -y openssh-server
6.1、centos6安装完ssh之后,手工启动ssh。执行如下命令:
[root@db29600b2097 yum.repos.d]#/etc/init.d/sshd start #----->重要:ssh第一次启动时,需要生成秘钥,生成pam验证配置文件
[root@db29600b2097 yum.repos.d]#/etc/init.d/sshd restart #重启sshd服务
[root@db29600b2097 yum.repos.d]#/etc/init.d/sshd stop #停止sshd服务
ssh安装完成之后,如果root没有设置密码是无法连接的,还需要给ssh设置密码:
[root@db29600b2097 yum.repos.d]#/echo "123456" | passwd root --stdin
[root@db29600b2097 yum.repos.d]#ssh 172.17.0.2 #连接到ssh服务器
"hang" 运行sshd,并丢到后台
/usr/sbin/sshd -D
6.2、centos7安装完ssh后,手动启动ssh,执行如下操作
centos7 统一使用systemd管理,没有了init.d的管理模式,sshd没办法初始化管理秘钥对,因此centos7需要手动启动sshd服务如下:
mkdir /var/run/sshd
use 'UseDNS no' >> /etc/ssh/ssh_config
sed -i -e '/pam_loginuid.so/d' /etc/pam.d/sshd
echo 'root:123456' | chpasswd
/usr/bin/ssh-keygen -A
以下步骤与centos6一样。
7、基于容器制作镜像。
[root@df8386465269 /]#docker commit c1_sshv1 qianlong/sshd:v1
8、基于新镜像启动容器实现centos7+sshd的功能
[root@df8386465269 /]#docker run -d -p 2222:22 --name c1 qianlong/sshd:v1 /usr/sbin/sshd -D #容器已启动ssh自动hang在后台,这是启动容器的经典的办法。
练习:
nginx 手工制作镜像
nginx -g "daemon off;"
注:启动时自动挂载可以把挂载命令写入/etc/rc.local中去。
sh /etc/rc.local可以执行rc.local里面的语句。
centos7可以使用systemctl list-unit-files 可以查看启动项服务
https://www.centos.org/download/mirrors/该网址是所有版本镜像的索引。
history 命令可以查看历史输入命令。
ps -aux命令查看系统进程详细信息。