_N_了吧唧的_ 发表于 2015-10-13 11:11:14

Mac OSX 下的Docker安装与sshd安装

  1、docker安装与入门请参看Mac OSX Docker安装
  2、安装后我们进行一些命令的熟悉,然后进入到主题sshd安装及产生的一些问题。
  



#拉取docker image
docker pull docker.cn/docker/ubuntu#这里我们使用的是国内的镜像,国外的比较慢<pre name=&quot;code&quot; class=&quot;plain&quot;>#执行docker images 查看拉取到的镜像



docker@boot2docker:~$ docker images
REPOSITORY                TAG               IMAGE ID            CREATED             VIRTUAL SIZE
tutorial                  latest            e1cf806fdfab      23 minutes ago      286.7 MB
sshd                      latest            d1dfdb7229bd      14 hours ago      287.8 MB
<none>                  <none>            85e8e040f166      14 hours ago      287.8 MB
docker.cn/docker/ubuntu   trusty            b39b81afc8ca      13 days ago         192.7 MB
docker.cn/docker/ubuntu   14.04               b39b81afc8ca      13 days ago         192.7 MB
docker.cn/docker/ubuntu   14.04.1             b39b81afc8ca      13 days ago         192.7 MB
docker.cn/docker/ubuntu   latest            b39b81afc8ca      13 days ago         192.7 MBdocker@boot2docker:~$ docker run -it docker.cn/docker/ubuntu /bin/bash
  root@a9dd8a7d033b:/# apt-get install -y openssh-server                                 
  #到这里更新完毕
#我们安装sshd-server



root@a9dd8a7d033b:/# apt-get install -y openssh-server
Reading package lists... Done
Building dependency tree      
Reading state information... Done
The following extra packages will be installed:
....
Updating certificates in /etc/ssl/certs... 164 added, 0 removed; done.
Running hooks in /etc/ca-certificates/update.d....done.
Processing triggers for ureadahead (0.100.0-16) ...


  
#完成安装
#我们尝试在本地启动一个ssh服务



root@a9dd8a7d033b:/# /etc/init.d/ssh start
* Starting OpenBSD Secure Shell server sshd                        [ OK ]


  
#这里服务启动成功了,我们验证一下



root@a9dd8a7d033b:/# ps -ef | grep sshd
root      3280   10 03:06 ?      00:00:00 /usr/sbin/sshd
root      3284   10 03:07 ?      00:00:00 grep --color=autosshd


  
#通常大家看到成功后就会很自然的想到我要登录进去看看,但是这是登陆不进去的,因为还有一些sshd_config我们还没有更改,会提示以下内容



Permission denied (publickey,password).


  

#首先我们要设置一下密码


root@a9dd8a7d033b:/# passwd
Enter new UNIX password:

#修改之前我们下载一个vim,方便编辑,vi不是很顺手,个人习惯  


root@a9dd8a7d033b:/# apt-get install -y vim

#然后修改sshd_config的配置  



RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile      %h/.ssh/authorized_keys
PasswordAuthentication yes


  
#创建一个用户名为admin的用户,设置密码,这个地方这么做的原因是因为sshd不推荐使用root登录,因为那样是不安全,所以我们还是创建一个用户,更改配置也可以使root可以登录



root@a9dd8a7d033b:/# adduser admin


  

#修改完成后不要忘记重新启动ssh


root@a9dd8a7d033b:/# /etc/init.d/ssh restart
* Restarting OpenBSD Secure Shell server sshd                        [ OK ]


  
#我们使用admin用户登录到ssh



root@a9dd8a7d033b:/# ssh admin@127.0.0.1
admin@127.0.0.1's password:
Welcome to Ubuntu 14.04.1 LTS (GNU/Linux 3.16.7-tinycore64 x86_64)
* Documentation:https://help.ubuntu.com/
Last login: Fri Jan 30 03:32:54 2015 from localhost
To run a command as administrator (user &quot;root&quot;), use &quot;sudo <command>&quot;.
See &quot;man sudo_root&quot; for details.
admin@a9dd8a7d033b:~$


  

#可以看到我们正确登录,但是这才刚刚开始,因为本文的重点在下面,这时我们肯定不满足于这样的登录方式,一个root下登录ssh,这显然没有人这么玩,真正的是启动一个sshd服务,然后我们通过外部登录到这台服务器进行操作。
#我们退出到docker



root@a9dd8a7d033b:/# exit
exit
docker@boot2docker:~$


  

#现在我们需要将我们刚才的操作进行保存



docker@boot2docker:~$ docker ps -l
CONTAINER ID      IMAGE                           COMMAND             CREATED             STATUS                        PORTS               NAMES
a9dd8a7d033b      docker.cn/docker/ubuntu:14.04   &quot;/bin/bash&quot;         45 minutes ago      Exited (0) About a minute ago
docker@boot2docker:~$ docker commit a9dd8a7d033b tutorial
e1cf806fdfab6af52b8c4a17d8ef8bca9505333a2134b27b2dbd48b952270f7a


  

#我们已经把刚才的镜像进行了保存


docker@boot2docker:~$ docker images
REPOSITORY                TAG               IMAGE ID            CREATED             VIRTUAL SIZE
tutorial                  latest            e1cf806fdfab      33 seconds ago      286.7 MB
sshd                      latest            d1dfdb7229bd      14 hours ago      287.8 MB
<none>                  <none>            85e8e040f166      14 hours ago      287.8 MB
docker.cn/docker/ubuntu   14.04               b39b81afc8ca      13 days ago         192.7 MB
docker.cn/docker/ubuntu   14.04.1             b39b81afc8ca      13 days ago         192.7 MB
docker.cn/docker/ubuntu   latest            b39b81afc8ca      13 days ago         192.7 MB
docker.cn/docker/ubuntu   trusty            b39b81afc8ca      13 days ago         192.7 MB


  
#通过上面我们可以明显看到一个名为tutorial的镜像
#我们执行这个镜像,通过一个守护进程的方式



docker@boot2docker:~$ docker run -d -p 22 tutorial /usr/sbin/sshd -D
aa6ab07a0618d79b075049b7556d1c299017e7fca356c275aa1a61c08354ec50


  
#查看绑定的端口号



docker@boot2docker:~$ docker port aa6ab07a0618d79b075049b7556d1c299017e7fca356c275aa1a61c08354ec50
22/tcp -> 0.0.0.0:49161


  

#通过ssh登录到这台服务器



docker@boot2docker:~$ ssh admin@127.0.0.1 -p 49161
The authenticity of host ':49161 (:49161)' can't be established.
ECDSA key fingerprint is 15:42:48:f6:b4:dc:68:73:fa:5e:da:94:11:56:25:a9.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ':49161' (ECDSA) to the list of known hosts.
admin@127.0.0.1's password:
Welcome to Ubuntu 14.04.1 LTS (GNU/Linux 3.16.7-tinycore64 x86_64)
* Documentation:https://help.ubuntu.com/
Last login: Fri Jan 30 03:37:56 2015 from localhost
To run a command as administrator (user &quot;root&quot;), use &quot;sudo <command>&quot;.
See &quot;man sudo_root&quot; for details.
admin@aa6ab07a0618:~$


  
  #登录成功了,这里我们可以看到容器的22端口其实做了一个网络地址转换至docker下的49161端口,所以我们在登录的时候就要使用49161,同时这也引出了一个拓扑结构图来阐述这一过程






PS:我在学习的过程中犯了一个概念性的错误,就是我错误的认为mac terminal 和 docker 在同一个层级上,我就通过terminal直接ssh到container,这当然是无法连接成功的,所以请大家注意这个问题,至于怎么才能连接我会在下一篇文章说明这个事情。




版权声明:本文为博主原创文章,未经博主允许不得转载。
页: [1]
查看完整版本: Mac OSX 下的Docker安装与sshd安装