一、下载镜像
镜像我们使用Centos的基础镜像,在镜像的选择方面,选择最新发布的Centos6.9镜像。
Docker官方的Centos镜像教程:https://hub.docker.com/_/centos/
下载镜像命令:
docker pull centos:6.9
下载完毕后我们可以通过
查看现有镜像命令:
docker images
[root@iZ28puvvfl0Z ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/centos 6.9 573de66f263e 7 hours ago 194.7 MB
图中的docker.io/centos 就是我们下载的镜像,tag为版本号,我们下载的版本号为6.9,若为最新的时候显示last.
二、创建容器
1.创建容器我们使用run命令,我们现在创建容器的完毕后并且进入到到容器中。
docker run --name base -i -t 573de66f263e /bin/bash
”573de66f263e“为我们镜像的ID。docker run命令的相关参数我们可以通过
docker run --help
进行查看。
2.创建完毕后我们就已经进入到了容器的Centos中。我们可以通过root@后面的用户来区分时候已经进入到了容器。
[root@iZ28puvvfl0Z /]# docker run --name base -i -t 573de66f263e /bin/bash
[root@0c5aff81ea7a /]#
3.安装openssl server,使用yum进行安装,命令如下
[root@0c5aff81ea7a /]# yum install passwd openssl openssh-server -y
4.执行启动命令,然后我们会发现有2个报错,这两个报错是告诉我们在ssh的目录下加载不了加密.分别为ras和das秘钥
[root@0c5aff81ea7a ssh]# /usr/sbin/sshd -D
Could not load host key: /etc/ssh/ssh_host_rsa_key
Could not load host key: /etc/ssh/ssh_host_dsa_key
5.创建rsa和dsa秘钥
[root@0c5aff81ea7a ssh]# ssh-keygen -q -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key -N ''
[root@0c5aff81ea7a ssh]# ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key -N ''
我们可以进入到/etc/ssh查看我们创建的秘钥
[root@0c5aff81ea7a ssh]# ls
moduli ssh_host_dsa_key ssh_host_dsa_key.pub ssh_host_rsa_key ssh_host_rsa_key.pub sshd_config
6.修改/etc/ssh/sshd_config 配置信息
修改PAM 限制访问为No,PAM通常用于限制某些用户链接,以防止黑客的攻击。
UsePAM yes 改为 UsePAM no
执行修改配置的生效。
[root@0c5aff81ea7a ssh]# sed -i "s/UsePAM.*/UsePAM no/g" /etc/ssh/sshd_config
7.启动SSH
/usr/sbin/sshd -D
8.创建自动启动SSH服务的可执行文件"run.sh",创建在根目录
(1)切换到根目录
[root@0c5aff81ea7a /]# cd /
[root@0c5aff81ea7a /]# ls
bin boot dev etc home lib lib64 lost+found media mnt opt proc root run sbin selinux srv sys tmp usr var
(2)创建run.sh
[root@0c5aff81ea7a /]# touch run.sh
(3)进入到run.sh
[root@0c5aff81ea7a /]# vi run.sh
(4)在run.sh中写入
#!/bin/bash
/usr/sbin/sshd -D
(5)保存退出
9.修改run.sh的权限。
chmod +x run.sh
10.修改登录密码
[root@b5926410fe60 /]# passwd root
11.退出容器
三、创建镜像
1.找出我们创建的docker容器。
[root@iZ28puvvfl0Z ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0c5aff81ea7a 573de66f263e "/bin/bash" 37 minutes ago Up 37 minutes base
2.使用docker Commit 命令进行创建容器.
[root@iZ28puvvfl0Z /]# docker commit base sshd:centos6.9
sha256:d192e88627acd0396623633b949ff182e82f2ab00599155dac32279d48be5c8d
3.查看创建的镜像
[root@iZ28puvvfl0Z /]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
sshd centos6.9 d192e88627ac 15 seconds ago 280.8 MB
docker.io/centos 6.9 573de66f263e 10 hours ago 194.7 MB
4.创建我们自定义的镜像。这里我们使用主机的1002端口映射到容器中的22端口。
[root@iZ28puvvfl0Z /]# docker run -d --name mysql -p 1002:22 d192e88627ac /run.sh
5.查看是否已经启动。
[root@iZ28puvvfl0Z /]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1adba4712b91 d192e88627ac "/run.sh" 3 minutes ago Up 3 minutes 0.0.0.0:1002->22/tcp mysql
6.我们可以使用secureCRT进入到我们创建的容器中。端口为我们映射的1002端口。