docker的简单安装

Docker的英文本意是“搬运工”,在程序员的世界里,Docker搬运的是集装箱(Container),集装箱里装的是任意类型的App,开发者通过Docker可以将App变成一种标准化的、可移植的、自管理的组件,可以在任何主流系统中开发、调试和运行。最重要的是,它不依赖于任何语言、框架或系统。

Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机)、bare metal、OpenStack 集群和其他的基础应用平台。

Docker通常用于如下场景:

web应用的自动化打包和发布;
自动化测试和持续集成、发布;
在服务型环境中部署和调整数据库或其他的后台应用;
从头编译或者扩展现有的OpenShift或Cloud Foundry平台来搭建自己的PaaS环境。

Docker系统有两个程序:docker服务端和docker客户端。其中docker服务端是一个服务进程,管理着所有的容器。docker客户端则扮演着docker服务端的远程控制器,可以用来控制docker的服务端进程。大部分情况下,docker服务端和客户端运行在一台机器上。

安装docker环境(rhel7.2)
1) 修改yum源安装docker引擎

vim /etc/yum.repos.d/yum.repo, 加入以下内容:

[dockerrepo]
name=Docker Repository
baseurl=http://yum.dockerproject.org/repo/main/centos/7/
enabled=1
gpgcheck=0

建立在电脑可以连网的基础上。。。。
不过就像我的使用虚拟机,无法连接网络,那么只能下载安装包之后使用本机yum源安装依赖性即可。
过程如下:
[root@server3 ~]# rpm -ivh docker-engine–1.13.1-1.el7.centos.x86_64.rpm
warning: docker-engine-1.13.1-1.el7.centos.x86_64.rpm: Header V4 RSA/SHA512 Signature, key ID 2c52609d: NOKEY
error: Failed dependencies:
libltdl.so.7()(64bit) is needed by docker-engine-1.13.1-1.el7.centos.x86_64
libseccomp.so.2()(64bit) is needed by docker-engine-1.13.1-1.el7.centos.x86_64
selinux-policy-base >= 3.13.1-102 is needed by docker-engine-selinux-1.13.1-1.el7.centos.noarch
selinux-policy-targeted >= 3.13.1-102 is needed by docker-engine-selinux-1.13.1-1.el7.centos.noarch
这时候使用yum安装了libseccomp.x86_64,libtool-ltdl.x86_64,解决了上面两个依赖性,而电脑yum源在安装时不能满足selinux-*的版本要求,无奈不能上网。我就降低了docker的版本为rpm -ivh docker-engine-1.12.6-1.el7.centos.x86_64.rpm docker-engine-selinux-1.12.6-1.el7.centos.noarch.rpm 这个时候就安装成功了。

[root@server3 ~]# rpm -ivh docker-engine-1.12.6-1.el7.centos.x86_64.rpm docker-engine-selinux-1.12.6-1.el7.centos.noarch.rpm
warning: docker-engine-1.12.6-1.el7.centos.x86_64.rpm: Header V4 RSA/SHA512 Signature, key ID 2c52609d: NOKEY
Preparing...                                                            ################################# [100%]
Updating / installing...
   1:docker-engine-selinux-1.12.6-1.el                                  ################################# [ 50%]
setsebool:  SELinux is disabled.
libsepol.permission_copy_callback: Module docker depends on permission audit_read in class capability2, not satisfied (No such file or directory).
libsemanage.semanage_link_sandbox: Link packages failed (No such file or directory).
/usr/sbin/semodule:  Failed!
   2:docker-engine-1.12.6-1.el7.centos                                  ################################# [100%]

2) 开启路由转发功能,否则容器中的无法上网

echo 1 > /proc/sys/net/ipv4/ip_forward

3) 启动Docker服务

 systemctl start docker

 systemctl enable docker   #开机启动

4) 检查是否安装成功

 docker version    #可查看docker版本信息则安装成功。
 [root@server3 ~]# docker version
Client:
 Version:      1.12.6
 API version:  1.24
 Go version:   go1.6.4
 Git commit:   78d1802
 Built:        Tue Jan 10 20:20:01 2017
 OS/Arch:      linux/amd64

Server:
 Version:      1.12.6
 API version:  1.24
 Go version:   go1.6.4
 Git commit:   78d1802
 Built:        Tue Jan 10 20:20:01 2017
 OS/Arch:      linux/amd64

5) docker info #查看Docker 中容器总体状况。

[root@server3 ~]# docker info
Containers: 0
 Running: 0
 Paused: 0
 Stopped: 0
Images: 0
Server Version: 1.12.6
Storage Driver: devicemapper
 Pool Name: docker-253:0-68326981-pool
 Pool Blocksize: 65.54 kB
 Base Device Size: 10.74 GB
 Backing Filesystem: xfs
 Data file: /dev/loop0
 Metadata file: /dev/loop1
 Data Space Used: 11.8 MB
 Data Space Total: 107.4 GB
 Data Space Available: 17.56 GB
 Metadata Space Used: 581.6 kB
 Metadata Space Total: 2.147 GB
 Metadata Space Available: 2.147 GB
 Thin Pool Minimum Free Space: 10.74 GB
 Udev Sync Supported: true
 Deferred Removal Enabled: false
 Deferred Deletion Enabled: false
 Deferred Deleted Device Count: 0
 Data loop file: /var/lib/docker/devicemapper/devicemapper/data
 WARNING: Usage of loopback devices is strongly discouraged for production use. Use `--storage-opt dm.thinpooldev` to specify a custom block storage device.
 Metadata loop file: /var/lib/docker/devicemapper/devicemapper/metadata
 Library Version: 1.02.107-RHEL7 (2015-10-14)
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: host bridge overlay null
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Security Options: seccomp
Kernel Version: 3.10.0-327.el7.x86_64
Operating System: Red Hat Enterprise Linux Server 7.2 (Maipo)
OSType: linux
Architecture: x86_64
CPUs: 1
Total Memory: 993.1 MiB
Name: server3
ID: 4K4S:EPX4:ZQ4Y:XHD7:5GAW:ETCN:QWUE:SISI:A3KF:NPAX:QFP3:PQJ3
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
Registry: https://index.docker.io/v1/
Insecure Registries:
 127.0.0.0/8

以下内容来源网络,方便理解:

  1. Docker概述:
    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。 容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app)。几乎没有性能开销,可以很容易地在机器和数据中心中运行。最重要的是,他们不依赖于任何语言、框架或包装系统。
    Docker 是 dotCloud 公司开源的一个基于 LXC 的高级容器引擎,源代码托管在 Github 上, 基于 Go 语言并遵从 Apache2.0 协议开源。
    Docker 让开发者可以打包他们的应用以及依赖包到一个可移植的 container 中,然后发布到任何流行的linux机器上。

    Image 和 Container 的关系:image 可以理解为一个系统镜像,Container 是 Image 在运行时的一个状态。如果拿虚拟机作一个比喻的话,Image 就是关机状态下的磁盘文件,Container 就是虚拟机运行时的磁盘文件,包括内存数据。
    dockerhub:dockerhub 是 docker 官方的镜像存储站点,其中提供了很多常用的镜像供用户下载,如ubuntu, centos 等系统镜像。通过 dockerhub 用户也可以发布自己的 docker 镜像,为此用户需要注册一个账号,在网站上创建一个 docker 仓库。

  2. Docker 核心技术
    1) Namespace — 实现 Container 的进程、网络、消息、文件系统和主机名的隔离。
    2) Cgroup — 实现对资源的配额和度量。Cgrout 的配额,就像 vmware 虚拟机中的配置参数:可以指定 cpu 个数,内存大小等。

  3. Docker特性
    文件系统隔离:每个进程容器运行在一个完全独立的根文件系统里。
    资源隔离:系统资源,像 CPU 和内存等可以分配到不同的容器中,使用 cgroup。
    网络隔离:每个进程容器运行在自己的网络空间,虚拟接口和 IP 地址。
    日志记录:Docker 将会收集和记录每个进程容器的标准流(stdout/stderr/stdin),用于实时检索或批量检索。
    变更管理:容器文件系统的变更可以提交到新的镜像中,并可重复使用以创建更多的容器。无需使用模板 或手动配置。
    交互式 shell:Docker 可以分配一个虚拟终端并关联到任何容器的标准输入上,例如运行一个一次性交互

  4. Docker优缺点:

    优点:
    1) 一些优势和 VM 一样,但不是所有都一样。比 VM 小,比 VM 快,Docker 容器的尺寸减小相比整个虚拟机大大简化了分布到云和从云分发时间和开销。 Docker 启动一个容器实例时间很短,一两秒就可以启动一个实例。
    2) 对于在笔记本电脑,数据中心的虚拟机,以及任何的云上,运行相同的没有变化的应用程序,IT 的发布速度更快。Docker 是一个开放的平台,构建,发布和运行分布式应用程序。Docker 使应用程序能够快速从组件组装和避免开发和生产环境之间的摩擦。
    3) 您可以在部署在公司局域网或云或虚拟机上使用它。
    4) 开发人员并不关心具体哪个 Linux 操作系统使用 Docker,开发人员可以根据所有依赖关系构建相应的软件,针对他们所选择的操作系统。然后,在部署时一切是完全一样的,因为一切都在 DockerImage 的容器在其上运行。开发人员负责并且能够确保所有的相关性得到满足。
    5) Google,微软,亚马逊,IBM 等都支持 Docker。
    缺点:
    1) Docker 支持 Unix/Linux 操作系统,Windows 或 Mac需要借助于Boot2Docker。
    2)Docker 用于应用程序时是最有用的,但并不包含数据。日志,跟踪和数据库等通常应放在 Docker 容器外。

猜你喜欢

转载自blog.csdn.net/deep_aely/article/details/77097065