Docker之创建SSH服务功能的镜像(commit方法)
2016-11-15 21:09
871 查看
基于commit命令的方式
//运行基于Ubuntu:14.04的镜像的容器docker run -it --rm ubuntu:14.04 /bin/bash
//修改一下ubuntu14:04的源我用的是163的源
163源的内容是这
deb http://mirrors.163.com/ubuntu/ trusty main restricted universe multiversedeb http://mirrors.163.com/ubuntu/ trusty-security main restricted universe multiversedeb http://mirrors.163.com/ubuntu/ trusty-updates main restricted universe multiversedeb http://mirrors.163.com/ubuntu/ trusty-proposed main restricted universe multiversedeb http://mirrors.163.com/ubuntu/ trusty-backports main restricted universe multiversedeb-src http://mirrors.163.com/ubuntu/ trusty main restricted universe multiversedeb-src http://mirrors.163.com/ubuntu/ trusty-security main restricted universe multiversedeb-src http://mirrors.163.com/ubuntu/ trusty-updates main restricted universe multiversedeb-src http://mirrors.163.com/ubuntu/ trusty-proposed main restricted universe multiversedeb-src http://mirrors.163.com/ubuntu/ trusty-backports main restricted universe multiverse
可以用这样的命令将上述内容追加到source.list文件中
echo 源内容 >> /etc/apt/source.list
sudo apt-get update//更新安装源
sudo apt-get install openssh-server//安装openssh-server服务
到现在我们还不能使用ssh功能
我们需要在/var/run创建一个sshd的目录
mkdir -p /var/run/sshd
//并以后台的形式打开sshd服务
/var/run/sshd -D &
netstat -natp//查看22号端口是否被监控
Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address S tcp 0 0 0.0.0.0:22 0.0.0.0:* L tcp6 0 0 :::22 :::*
确认sshd服务已经开启
默认情况下pam认证程序会对我们的ssh登录进行限制,修改/etc/pam.d/sshd的配置。
#session required pam_loginuid.so
找到这一行,并在前面如上述加一个#作为注释。
接下来容器的ssh服务开启后,而我们需要远程连接容器的主机A上生成公钥和私钥,并将公钥放到容器中。
一般用
ssh-keygen -t rsa生成公钥和私钥
一路回车后,
cd ~/.ssh
ls//查看目录中的内容
[root@VM_116_112_centos .ssh]# ls id_rsa id_rsa.pub known_hosts
id_rsa.pub中的内容就是你的公钥
上述命令请在你远程登入容器的主机上运行,(其实原理自己想想应该可以明白,你的容器上开启了ssh服务,你远程的主机需要连接容器,那么需要将你远程的主机的公钥加到容器中,才可以以ssh的方式登录容器)
之后进入容器
cd ~
mkdir .ssh
touch .ssh/authorized_keys将远程主机的公钥放入这个新建的文件中。
接下来制作ssh运行脚本。
由于容器运行时一般只能运行一个命令,那么我们将要启动的服务和程序放在一个脚本中,运行这个脚本。
root@1307917db024:~# vi run.sh root@1307917db024:~# chmod u+x run.sh root@1307917db024:~# cat run.sh
#! /bin/bash /usr/sbin/sshd -D
脚本中的命令不能添加&,如果添加了脚本会立马执行完毕,则相应的容器也退出了, -D告诉SSH服务不以守护进程运行,而是和运行终端关联,有了关联终端,容器就不会退出了。
exit退出容器。
最后打包成镜像
docker commit 容器名 ssh:commit
docker images REPOSITORY TAG IMAGE ID CREATED SIZE ssh commit d079b544a6dc 30 seconds ago 293.1 MB
注意一点主机A下必须是root用户,不然会有认证失败。
容器主机
[root@VM_116_112_centos .ssh]# docker run -d -p 2022:22 ssh:commit /root/run.sh 1f780de627866424ade43c7faf041f6f56b73d2bc27bbb25b078201f8afb117b [root@VM_116_112_centos .ssh]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1f780de62786 ssh:commit "/root/run.sh" 8 seconds ago Up 3 seconds 0.0.0.0:2022->22/tcp nostalgic_morse
远程主机
root@ubuntu:~/.ssh# ssh 123.206.33.231 -p 2022 Welcome to Ubuntu 14.04 LTS (GNU/Linux 3.13.0-96-generic x86_64)
* Documentation: https://help.ubuntu.com/[/code]
`
The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.
root@1f780de62786:~# ls
`
PS:https://hub.docker.com/r/tonyxinminghui/ssh/
这是我的dockerhub上的镜像。
相关文章推荐
- 「一」创建一个带 ssh 服务的基础镜像(修订版)--使用「docker commit」创建
- 创建支持SSH服务的Docker镜像的方法
- Docker使用Dockerfile创建支持ssh服务自启动的容器镜像
- 创建支持SSH服务的Docker镜像
- 【Docker江湖】之创建带有SSH服务的镜像
- docker 通过commit方法创建镜像(Tomcat+Java+Scala)
- 详解Docker创建支持ssh服务的容器和镜像
- 「二」创建一个带 ssh 服务的基础镜像(修订版)--使用 Dockerfile 创建
- 基于Dockerfile的方式创建SSH服务镜像。
- Docker使用Dockerfile创建支持ssh服务自启动的容器镜像
- Docker:创建支持ssh服务的镜像!!!
- Docker创建支持ssh服务的容器和镜像
- docker创建支持ssh服务的centos镜像
- Docker-创建支持ssh服务的镜像
- Docker创建支持ssh服务的容器和镜像
- <转>创建支持SSH服务的Docker镜像
- Docker使用Dockerfile创建支持ssh服务自启动的容器镜像
- 通过Dockerfile创建支持SSH服务的CentOS镜像
- 创建支持SSH服务的Docker镜像
- Docker使用Dockerfile创建支持ssh服务自启动的容器镜像