docker创建带有ssh的centos镜像

一、拉取镜像

docker pull centos

二、生成容器

docker run -itd --name=centos_ssh --privileged=true centos /usr/sbin/init

1、其中–name指定容器名称
2、–privileged=true 给容器访问Linux内核特权,后面要使用systemctl,不加–privileged=true后面将无法执行systemctl命令。

三、进入容器

docker exec -it centos_ssh bash

四、在容器内配置

1、安装passwd和ssh-server

yum update -y && yum install passwd -y &&yum install openssh-server -y

2、修改密码

passwd

之后会让你输入密码两次,记住密码即可

3、编辑配置文件

该操作是为配置公钥连接做准备,若不需要公钥连接,可以忽略这一步
请移步到SSH公钥登录

4、开启ssh并设置开机自启动

systemctl restart sshd
systemctl enable sshd

五、将容器打包成镜像

docker commit -m "centos with ssh" -a "root" centos_ssh centos_ssh:latest

-m 来指定提交的说明信息
-a 可以指定更新的用户信息
第一个centos_ssh是容器名称
第二个centos_ssh是要生成的镜像名称,latest是版本号,默认是latest

使用

docker images

就能够看到刚生成的镜像了,生成镜像后可以将刚才的用于创建镜像的容器停止并删除,以节约资源。
docker创建带有ssh的centos镜像_第1张图片

六、通过生成的镜像创建容器

docker run -d -p 2222:22 centos_ssh /usr/sbin/sshd -D

-p是指定端口号,格式为主机端口号:容器端口号,即将容器相应端口号映射到主机相应端口号

七、连接

1、密码连接

ssh root@localhost -p 2222

2222为你刚才指定的主机端口号

2、公钥连接

主机中使用命令

ssh-keygen -t rsa

生成公钥,然后将公钥复制后粘贴在容器中的~/.ssh/authorized_keys中,可以参考SSH公钥登录
配置完成后使用

ssh root@localhost -p 2222

即可连接,且不需要再输入密码

八、使用Dockerfile构建镜像

dockerfile内容如下:

#生成的新镜像以centos镜像为基础
FROM centos
#升级系统
RUN yum -y update
#安装openssh-server
RUN yum -y install openssh-server
#修改/etc/ssh/sshd_config
RUN sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_config

# 生成sshkey
RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key

#变更root密码
RUN echo "root:你要修改成的密码"|chpasswd
#开放窗口的22端口
EXPOSE 22
#运行脚本,启动sshd服务
CMD    ["/usr/sbin/sshd", "-D"]

然后使用

docker build -t centos_ssh .

构建镜像即可。构建镜像后可以通过

docker images

查看构建好的镜像,然后就可以通过构建好的镜像创建容器并进行连接了。

你可能感兴趣的:(笔记,工具,linux,容器,docker,centos,ssh)