Docker创建Centos踩出来的坑

屁话不多说,先来一遍正常的流程

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
....
....

--开始连接吧

如果转载请在开头大字注明出处,谢谢

原文地址:https://www.cnblogs.com/webyyq/p/8893798.html