00docker安装和简介
Docker是用于开发、装载和运行应用的开放平台。Docker项目的目标是实现轻量的操作系统级虚拟化解决方案,它提供了一种在容器中安全隔离地运行应用程序的方式。可以在宿主机上运行多个容器。
Docker的基础是Linux容器(LXC)等技术。在 LXC 的基础上 Docker 进行了进一步的封装,让用户不需要去关心容器的管理,使得操作更为简便。用户操作Docker的容器就像操作一个快速轻量级的虚拟机一样简单。
一:Docker架构
Docker使用客户端-服务器架构。Docker client与Docker daemon进行交互,向其发送命令,由Docker daemon执行构建、运行容器等任务。
Docker client和Docker daemon可以运行在同一台主机上,也可以连接远端的Docker daemon。Docker client和Docker daemon之间通过socker或者RESTful API进行通信。架构如下:
用户通过Docker client与Docker daemon交互。当执行docker XXX命令时,相当于启动了一个client,该client将消息发送给daemon,由daemon执行具体的任务。
Docker中有三个基本概念:镜像(Image)、容器(Container)、仓库(Repository)。理解了这三个概念,就理解了 Docker 的整个生命周期。
1:镜像
Docker镜像是一个只读的模板,是一个静态的概念。例如:一个镜像可以包含一个完整的ubuntu操作系统环境,里面安装了Apache或用户需要的其它应用程序。
使用镜像来创建 Docker容器。Docker利用容器来运行应用程序。
2:容器
容器是从镜像创建的运行实例,是一个动态的概念。它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。
可以把容器看做是一个简易版的 Linux 环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序。
3:仓库
仓库是集中存放镜像文件的场所。有时候会把仓库和仓库注册服务器(Registry)混为一谈,并不严格区分。实际上,仓库注册服务器上往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签(tag)。
仓库分为公开仓库(Public)和私有仓库(Private)两种形式。
最大的公开仓库是 Docker Hub,存放了数量庞大的镜像供用户下载。用户也可以在本地网络内创建一个私有仓库。
Docker中的镜像是一个只读的模板,每个镜像都是由一系列的层组成。Docker使用统一文件系统(union file systems)来将这些层整合成独立的镜像。统一文件系统使得多个文件系统上的文件和目录,透明的叠加在一起,形成一个完整的文件系统。
Docker如此轻量级的原因就是因为分层的概念。当改变一个Docker镜像时,比如升级一个应用到新的版本,则只是构建了一个新的层,因此无需构建或替换整个镜像,只需要增加新的层就可以了。
容器中包含了操作系统环境、用户文件以及元数据。容器从镜像中创建,镜像是只读的,当运行容器时,Docker向镜像的顶部添加了一个可读写的层,从而可以运行应用程序了。
当执行下面的命令时:
$ docker run -i -t ubuntu /bin/bash
首先可执行程序docker启动一个Docker客户端,选项run用于启动一个新的容器。Docker客户端通知Docker daemon执行以下过程来运行容器:
1:使用ubuntu作为构建容器的镜像;
2:当容器加载后,在容器中执行/bin/bash命令,启动一个BASH shell。
Docker daemon具体的执行步骤是:
1:检查镜像是否存在。首先检查本地是否具有ubuntu镜像,如果不存在,则从Docker Hub上查找并下载。如果本地已经有ubuntu镜像了,则使用它构建容器;
2:创建新容器;
3:分配一个文件系统,并mount一个可读写的层。容器就在该文件系统上构建,并在镜像上添加了一个可读写的新层。
4:分配一个网络接口。创建网络接口用于与宿主机通信。
5:分配一个IP地址。从池中寻找一个可用的IP地址并分配给网络接口。
6:运行指定的应用程序;
7:捕获应用程序的输出。连接并且记录标准输入、标准输出以及标准错误输出。
二:安装
运行docker,内核需要至少是3.10以上。
1:使用curl安装
$ curl -fsSL https://get.docker.com/ | sh
2:使用yum安装
$ yum update
$ tee /etc/yum.repos.d/docker.repo <<EOF
[dockerrepo]
name=Docker Repository
baseurl=https://yum.dockerproject.org/repo/main/centos/7
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg
EOF $ yum install docker-engine
$ service docker start
验证docker是否安装成功
$ docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
535020c3e8ad: Pull complete
af340544ed62: Pull complete
Digest: sha256:a68868bfe696c00866942e8f5ca39e3e31b79c1e50feaee4ce5e28df2f051d5c
Status: Downloaded newer image for hello-world:latest Hello from Docker.
This message shows that your installation appears to be working correctly. To generate this message, Docker took the following steps:
1. The Docker Engine CLI client contacted the Docker Engine daemon.
2. The Docker Engine daemon pulled the "hello-world" image from the Docker Hub.
3. The Docker Engine daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker Engine daemon streamed that output to the Docker Engine CLI client, which sent it
to your terminal. To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash Share images, automate workflows, and more with a free Docker Hub account:
https://hub.docker.com For more examples and ideas, visit:
https://docs.docker.com/userguide/
三:问题
1:运行容器时,下载image失败,需要设置代理:
$ mkdir /etc/systemd/system/docker.service.d
$ tee /etc/systemd/system/docker.service.d/http-proxy.conf << EOF
> [Service]
> Environment="HTTP_PROXY=http://192.168.20.22:1888" "NO_PROXY=localhost,127.0.0.1"
> EOF $ systemctl daemon-reload
$ systemctl restart docker
参考:https://docs.docker.com/engine/admin/systemd/#http-proxy
2:启动docker失败:
Error starting daemon: Error initializing network controller: Error creating default \"bridge\" network: Failed to setup IP tables, cannot acquire Interface address: Interface docker0 has no IPv4 addresses"
原因:可能是之前安装docker未卸载干净
解决:删除docker0网桥:
$ ifconfig docker0 down
$ brctl delbr docker0
https://docs.docker.com/engine/understanding-docker/
https://docs.docker.com/engine/installation/linux/rhel/
00docker安装和简介的更多相关文章
- InfluxDB学习之InfluxDB的安装和简介
最近用到了 InfluxDB,在此记录下学习过程,同时也希望能够帮助到其他学习的同学. 本文主要介绍InfluxDB的功能特点以及influxDB的安装过程.更多InfluxDB详细教程请看:Infl ...
- 第二百九十一节,RabbitMQ多设备消息队列-安装与简介
RabbitMQ多设备消息队列-安装与简介 RabbitMQ简介 解释RabbitMQ,就不得不提到AMQP(Advanced Message Queuing Protocol)协议. AMQP协议是 ...
- (转)阿里 RocketMQ 安装与简介
原文:阿里 RocketMQ 安装与简介 一.简介 官方简介: l RocketMQ是一款分布式.队列模型的消息中间件,具有以下特点: l 能够保证严格的消息顺序 l 提供丰富的消息拉取模式 l ...
- 尚硅谷Docker---docker安装及简介
尚硅谷Docker---docker安装及简介 一.总结 一句话总结: docker就相当于是一个极微型的linux系统,独立 1.使用Docker的步骤? 1).安装Docker 2).去Docke ...
- 1.Cobaltstrike 安装与简介
1.Cobaltstrike 安装与简介 一.简介 Cobalt Strike是一款美国Red Team开发的渗透测试神器,常被业界人内称为CS.自去年起, Cobaltstrike升级到3.0版本, ...
- Spark学习(一) -- Spark安装及简介
标签(空格分隔): Spark 学习中的知识点:函数式编程.泛型编程.面向对象.并行编程. 任何工具的产生都会涉及这几个问题: 现实问题是什么? 理论模型的提出. 工程实现. 思考: 数据规模达到一台 ...
- 阿里 RocketMQ 安装与简介
一.简介 官方简介: l RocketMQ是一款分布式.队列模型的消息中间件,具有以下特点: l 能够保证严格的消息顺序 l 提供丰富的消息拉取模式 l 高效的订阅者水平扩展能力 l 实时的 ...
- flume1.5.2安装与简介
关于flume的简介看参考:http://www.aboutyun.com/thread-7415-1-1.html 其实一张图就简单明了了 简单安装: 1.下载解压 ... 2.配置JDK,flum ...
- LR实战之Discuz开源论坛——安装及简介
想了很久,也许是因为这段时间特别闲,从毕业到现在,我的测试职业生涯也近两年了,发现自己越来越喜欢测试领域,也越来越偏向测试开发了,作为一名专业的测试人员,不得不要学习性能测试,而使用LoadRunne ...
随机推荐
- bzoj 2935 [Poi1999]原始生物——欧拉回路思路!
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2935 有向图用最小的路径(==总点数最少)覆盖所有边. 完了完了我居然连1999年的题都做不 ...
- Thinkphp 数据库配置参数
mysql配置 'DB_USER' => array( 'DB_TYPE' => 'mysql', 'DB_HOST' => '127.0.0.1', 'DB_NAME' => ...
- zeroclipboard复制插件兼容IE8
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- Idea代理设置与Java程序的代理设置
最近在学习WebService的过程中,为了弄清楚发送和接收的包的数据结构,使用Fiddler抓取包的数据.开始先配置了Idea的代理设置,但执行Java代码发送请求时,依然无法在Fiddler中抓取 ...
- LintCode 链表倒数第n个节点
找到单链表倒数第n个节点,保证链表中节点的最少数量为n. 样例 给出链表 3->2->1->5->null和n = 2,返回倒数第二个节点的值1. 分析:设两个指针 p1和p2 ...
- Struts_客户列表练习
1.导包 2.配置文件struts.xml 3.创建CustomerAction 4.修改menu.jsp和List.jsp 5.配置web.xml
- TYVJ4239 [NOIP2015提高组DayT3]斗地主
P2668 斗地主 题目描述 牛牛最近迷上了一种叫斗地主的扑克游戏.斗地主是一种使用黑桃.红心.梅花.方片的A到K加上大小王的共54张牌来进行的扑克牌游戏.在斗地主中, 牌的大小关系根据牌的数码表示如 ...
- 洛谷P1855 榨取kkksc03 [2017年4月计划 动态规划 09]
P1855 榨取kkksc03 题目描述 洛谷的运营组决定,如果一名oier向他的教练推荐洛谷,并能够成功的使用(成功使用的定义是:该团队有20个或以上的成员,上传10道以上的私有题目,布置过一次作业 ...
- CSS制作的32种图形效果[梯形|三角|椭圆|平行四边形|菱形|四分之一圆|旗帜]
转载链接:http://www.w3cplus.com/css/css-simple-shapes-cheat-sheet 前面在<纯CSS制作的图形效果>一文中介绍了十六种CSS画各种不 ...
- 避免闲置云资源浪费 | 阿里云轻量级分布式应用服务 SAE 邀您公测
您是否遇到过: 资源利用率低,多数服务器CPU平均利用率在10%以下,用户需为大量闲置资源买单. 感知 IaaS 购买和集群运维,人员技能要求高,运维效率低. 想拥抱 Kubernetes.微服务架构 ...