最近发现个有趣的东西docker(很早以前知道这个,只是当时觉得这个麻烦,最近觉得这个好玩),发现hub.docker.com里别人上传的centos不好用sshd,所以闲着无聊打算自己弄一个上传,一下资料全抄袭自自互联网
1.先下载centos镜像
docker pull centos
2.启动容器并进行配置
启动容器,
docker run -it -d --name test centos
命令注释:
-it : 进行交互式操作
-d : 等同于 -d=true,容器将会在后台运行,不然执行一次命令后,退出后,便是exit状态了。
--name : 容器启动后的名字,默认不指定,将会随机产生一个名字。或者使用 -name="containers_name"
centos:使用的镜像名称
进入容器,安装ssh server,以及配置开机启动
docker exec -it test /bin/bash
注:命令最后参数 /bin/bash: 指进入容器时执行的命令(command)
yum install openssh-server net-tools -y
创建 /var/run/sshd/目录,要不然sshd服务启动会报错
mkdir /var/run/sshd/
创建公私密钥,输入命令后,直接按两次enter键确认就行了
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 ed25519 -f /etc/ssh/ssh_host_ed25519_key
编辑sshd的配置文件/etc/ssh/sshd_config,将其中的UsePAM yes改为UsePAM no
sed -i "s/UsePAM.*/UsePAM no/g" /etc/ssh/sshd_config
创建sshd 启动脚本/etc/auto.sh
#!/bin/bash
/usr/sbin/sshd -D
chmod +x /etc/auto.sh
修改容器内root的密码
passwd
3.配置完成后,进行打包成新的镜像
docker commit test centos_sshd:v1.0
命令注释:commit: 提交一个具有新配置的容器成为镜像,后面跟容器的name 或者容器Id ,最后是生成新镜像的名字
更新:这条命令更方便以后启动,如下:
docker commit --change='CMD ["/etc/auto.sh"]' -c "EXPOSE 22" test centos_sshd:v1.0
命令注释: --change : 将后期使用此镜像运行容器时的命令参数、开放的容器端口提前设置好。
4.去hub.docker.com注册个账号
5.给镜像打标签
修改标签:
docker tag IMAGEID(镜像id) REPOSITORY:TAG(仓库:标签)
(注:上面是给镜像修改tag,下面是给镜像打上标签之后才能对镜像进行push)
给镜像打tag 标签:
docker tag <existing-image> <hub-user>/<repo-name>[:<tag>]
#tag不指定默认为latest
hub-user是docker hub的账户名
repo-name就是仓库名称
给镜像打上标签之后才能push
6.push镜像
登录docker hub账号
docker login
docker push <hub-user>/<repo-name>:<tag>
Push成功之后,可登录到dockerhub网站,查看一下刚才创建的仓库名称
或者,使用docker search命令查找。
ps:
懒人可以使用我的
docker pull jeffreys125/centos_sshd
账号密码都是root
还有一个是加了lamp的
docker pull jeffreys125/centos_sshd_lamp
sshd账号密码root
mysql账号root密码jeffreys