Mac OSX 下的Docker安装与sshd安装
1、docker安装与入门请参看Mac OSX Docker安装2、安装后我们进行一些命令的熟悉,然后进入到主题sshd安装及产生的一些问题。
#拉取docker image
docker pull docker.cn/docker/ubuntu#这里我们使用的是国内的镜像,国外的比较慢<pre name="code" class="plain">#执行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 "root"), use "sudo <command>".
See "man sudo_root" 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 "/bin/bash" 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 "root"), use "sudo <command>".
See "man sudo_root" for details.
admin@aa6ab07a0618:~$
#登录成功了,这里我们可以看到容器的22端口其实做了一个网络地址转换至docker下的49161端口,所以我们在登录的时候就要使用49161,同时这也引出了一个拓扑结构图来阐述这一过程
PS:我在学习的过程中犯了一个概念性的错误,就是我错误的认为mac terminal 和 docker 在同一个层级上,我就通过terminal直接ssh到container,这当然是无法连接成功的,所以请大家注意这个问题,至于怎么才能连接我会在下一篇文章说明这个事情。
版权声明:本文为博主原创文章,未经博主允许不得转载。
页:
[1]