docker定制镜像并上传

最近发现个有趣的东西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

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注