屁话不多说,先来一遍正常的流程
1、下载centos镜像
# docker pull centos
2、运行容器,修改镜像
2、1 运行
# docker run -itd --name centos7 imageID /bin/bash
2、2 安装必要功能
--进入centos容器 # docker exec -it centos7 /bin/bash --没有ifconfig、ssh、vim、tree、wget等等,需要分别安装 --安装ifconfig # yum search ifconfig # yum install net-tools.x86_64 --安装ssh服务器 # yum list openssh # yum install -y openssh-server --安装ssh客户端(非必须,有需求就装) # yum install -y openssh-clients --安装wget # yum install -y wget --换源 # wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo # yum makecache
--开启sshd服务
# systemctl start sshd
--这里会报错,坑就在这里,别急接着往下看
3、保存修改,打包发布或者备份
--退出centos容器 # exit --保存修改 # docker commit centos7 new_image_centos7:v1.0 --查看是否保存成功 # docker images --保存修改后的镜像到本地文件系统 # docker save imageID > /home/centos7_update.jar --删除之前无用的容器和镜像 # docker stop centos7 # docker rm $(docker ps -aq) # docker rmi imageID_1 imageID_2
4、重新加载备份文件到docker,并且运行
--加载镜像备份文件 # docker load < /home/xxx.jar --这时候可以查看镜像是否加载 # docker iamges --运行镜像 # docker run -itd -p 8080:22 --name centos7 imageID /bin/bash
--这也是个坑,留心
5、本地用ssh软件访问(我用SecureCRT)
然后结果就亮了:远程禁止你ssh连接
原因:猜测ssh服务没起来,进去一看果然(ps -ef | grep ssh 结果没有开启)
1、尝试开启sshd服务:
--开启服务不用service,改为systemctl了 --以前用 service sshd start # systemctl start sshd 结果:Failed to get D-Bus connection: Operation not permitted
经过百度搜索,发现:这是兼容性问题
2、解决
--运行镜像步骤改变 # docker run -itd -p 8080:22 --name centos7 imageID /usr/sbin/init --这不用/bin/bash --进入centos7容器,开启服务就可以了 # docker exec -it centos7 /bin/bash # systemctl start sshd --查看是否启动 # ps -ef | grep ssh
3、结尾
--重新连接让输入用户名密码,但是有问题---》没密码 --所以在容器中要设置root密码 # passwd root .... .... --开始连接吧