极速手机网

Docker的简介及与SSH连接

大家好,近期小编发现网络上很多关于Docker的介绍,下面是小编整理出来的Docker的一些入门基础知识。
简介

什么是Docker

Docker 是一个开源项目,诞生于 2013 年初,开始是 dotCloud 公司内部的一个业余项目。它根据 Google 公司推出的 Go 言语完结。 项目后来加入了 Linux 基金会,遵从了 Apache 2.0 协议,项目代码在 GitHub 上进行维护。

Docker 自开源后遭到广泛的关注和评论,以至于 dotCloud 公司后来都改名为 Docker Inc。RedHat现已在其 RHEL6.5 中集中支撑 Docker;Google 也在其 PaaS 产品中广泛运用。

Docker 项目的方针是完结轻量级的操作体系虚拟化解决方案。 Docker 的基础是 Linux 容器(LXC)等技能。

在 LXC 的基础上 Docker 进行了进一步的封装,让用户不需要去关心容器的办理,使得操作更为简便。用户操作 Docker 的容器就像操作一个快速轻量级的虚拟机相同简略。

下面的图片比较了 Docker 和传统虚拟化方法的不同之处,可见容器是在操作体系层面上完结虚拟化,直接复用本地主机的操作体系,而传统方法则是在硬件层面完结。

为什么要用Docker

作为一种新式的虚拟化方法,Docker 跟传统的虚拟化方法比较具有很多的优势。

首先,Docker 容器的发动能够在秒级完结,这比较传统的虚拟机方法要快得多。 其次,Docker 对体系资源的运用率很高,一台主机上能够同时运转数千个 Docker 容器。

容器除了运转其间运用外,根本不耗费额定的体系资源,使得运用的功能很高,同时体系的开支尽量小。传统虚拟机方法运转 10 个不同的运用就要起 10 个虚拟机,而Docker 只需要发动 10 个阻隔的运用即可。

具体说来,Docker 在如下几个方面具有较大的优势。

更快速的交付和布置

对开发和运维(devop)人员来说,最期望的就是一次创立或装备,能够在恣意当地正常运转。

开发者能够运用一个规范的镜像来构建一套开发容器,开发完结之后,运维人员能够直接运用这个容器来布置代码。 Docker 能够快速创立容器,快速迭代运用程序,并让整个进程全程可见,使团队中的其他成员更容易理解运用程序是如何创立和工作的。 Docker 容器很轻很快!容器的发动时刻是秒级的,很多地节省开发、测试、布置的时刻。

更高效的虚拟化

Docker 容器的运转不需要额定的 hypervisor 支撑,它是内核级的虚拟化,因此能够完结更高的功能和效率。

更轻松的迁移和扩展

Docker 容器简直能够在恣意的平台上运转,包含物理机、虚拟机、公有云、私有云、个人电脑、服务器等。 这种兼容功能够让用户把一个运用程序从一个平台直接迁移到别的一个。

更简略的办理

运用 Docker,只需要小小的修正,就能够替代以往很多的更新工作。一切的修正都以增量的方法被分发和更新,然后完结主动化而且高效的办理。

对比传统虚拟机总结

图:Docker的简介及与SSH连接

Docker的简介及与SSH连接图1

装置Docker

本来打算在CentOS6上装置Docker,最终因为CentOS6上自带的kernel版别太低导致Docker发动失败而放弃(kernel升级太繁琐)。

图:Docker的简介及与SSH连接

Docker的简介及与SSH连接图2

下面运用CentOS7装置Docker,本人采用虚拟机的方法来装置,装置好的虚拟机必须保证能访问外网。

CentOS7 体系 CentOS-Extras 库中已带 Docker,能够直接装置:

$ sudo yum install docker

装置之后发动 Docker 服务,并让它随体系发动主动加载:

$ sudo service docker start$ sudo chkconfig docker on

获取镜像

能够运用 docker pull 指令来从库房获取所需要的镜像。

下面的比如将从 Docker Hub 库房下载一个Centos6而且装置了jdk7的镜像:

$ docker pull tcbenkhard/centos6-jdk7

图:Docker的简介及与SSH连接

Docker的简介及与SSH连接图3

列出本地镜像

运用 docker images 显现本地已有的镜像。

$ docker images

图:Docker的简介及与SSH连接

Docker的简介及与SSH连接图4

发动容器

发动容器有两种方法,一种是根据镜像新建一个容器并发动,别的一个是将在停止状态(stopped)的容器重新发动。

因为 Docker 的容器实在太轻量级了,很多时分用户都是随时删去和新创立容器。
下面的指令则发动一个 bash 终端,答应用户进行交互。

$ docker run -t -i docker.io/tcbenkhard/centos6-jdk7 /bin/bash[root@ffe81683c404 /]#

图:Docker的简介及与SSH连接

Docker的简介及与SSH连接图5

其间,-t 选项让Docker分配一个伪终端(pseudo-tty)并绑定到容器的规范输入上,-i 则让容器的规范输入保持翻开。

当运用 docker run 来创立容器时,Docker 在后台运转的规范操作包含:
(1)检查本地是否存在指定的镜像,不存在就从公有库房下载
(2)运用镜像创立并发动一个容器
(3)分配一个文件体系,并在只读的镜像层外面挂载一层可读写层
(4)从宿主主机装备的网桥接口中桥接一个虚拟接口到容器中去
(5)从地址池装备一个 ip 地址给容器
(6)履行用户指定的运用程序
(7)履行完毕后容器被停止

能够运用下面指令来检查CentOS版别信息:

$ cat /etc/redhat-release

修正root暗码

运用passwd暗码来修正暗码(如提示没有这个指令行运用yum install passwd装置):

$ passwd xxx暗码 xxx确认暗码123

装置Openssh

运用下面指令装置ssh server/ssh client:

$ sudo yum -y install openssh-server$ sudo yum -y install openssh-clients

修正SSH装备文件以下选项,去掉#注释,将四个选项启用:

$ vi /etc/ssh/sshd_configRSAAuthentication yes #启用 RSA 认证PubkeyAuthentication yes #启用公钥私钥配对认证方法AuthorizedKeysFile .ssh/authorized_keys #公钥文件路径(和上面生成的文件同)PermitRootLogin yes #root能运用ssh登录123456

图:Docker的简介及与SSH连接

Docker的简介及与SSH连接图6

重启ssh服务,并设置开机发动:

$ service sshd restart$ chkconfig sshd on

退出容器并保存更改

运用exit指令或许ctrl+C来退出当时运转的容器:

[root@ffe81683c404 /]# exit

注意:上面ffe81683c404是容器的ID,退出后用于保存的唯一ID。

当完毕后,咱们运用 exit 来退出,现在咱们的容器现已被咱们改变了,运用 docker commit 指令来提交更新后的副本。

$ sudo docker commit -m 'install openssh' -a 'Docker Newbee' ffe81683c404 centos6-jdk7:ssh4f177bd27a9ff0f6dc2a830403925b5360bfe0b93d476f7fc3231110e7f71b1c12

其间,-m 来指定提交的说明信息,跟咱们运用的版别操控工具相同;-a 能够指定更新的用户信息;之后是用来创立镜像的容器的ID;最终指定方针镜像的库房名和 tag 信息。创立成功后会返回这个镜像的 ID 信息。

提交后docker中就会多出一个centos6-jdk7:ssh的一个镜像。

图:Docker的简介及与SSH连接

Docker的简介及与SSH连接图7

发动新的容器并打通22端口

将新的镜像发动,并将docker服务器的50001端口映射到容器的22端口上:

$ docker run -d -p 50001:22 centos6-jdk7:ssh /usr/sbin/sshd -D

ssh衔接容器:

图:Docker的简介及与SSH连接

Docker的简介及与SSH连接图8

至此SSH衔接docker容器成功完结。

相关文章

大家都在找