搜档网
当前位置:搜档网 › Docker基础分享

Docker基础分享

Docker基础分享
Docker基础分享

Docker 分享

一、什么是Docker

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

二、为什么要用Docker

Docker作为一种新兴的虚拟化方式,跟传统的虚拟化方式相比具有启动快、资源利用率高、系统开销小等众多的优势。具体来说在以下几个方面有较大优势:

1)更快速的交付和部署(Build once, Run anywhere)

2)更高效的虚拟化

3)更轻松的迁移和扩展

4)更简单的管理

VM技术和容器技术对比

普通虚拟机将整个操作系统运行在虚拟的硬件平台上,进而提供完整的运行环境供应用程序运行,而Docker则直接在宿主平台上加载运行应用程序.本质上他在底层使用LXC启动一个LinuxContainer,通过cgroup等机制对不同的container内运行的应用程序进行隔离,权限管理和quota分配等

三、Docker安装

官方网站上有各种环境下的安装指南,这里简要介绍下各个系统的安装步骤。

1)Window系统安装

目前只支持Win10 64位,Win7上我们通过Boot2Docker 来安装虚拟机和运行Docker.

Boot2Docker下载地址:https://https://www.sodocs.net/doc/878073800.html,/boot2docker/windows-installer/releases/latest 2)Ubuntu 系统安装

Docker 要求Ubuntu 系统的内核版本高于3.10 ,查看本页面的前提条件来验证你的Ubuntu 版本是否支持Docker。通过uname -r 命令查看你当前的内核版本

步骤如下:

1、获取最新版本的Docker 安装包:wget -qO- https://https://www.sodocs.net/doc/878073800.html,/ | sh

2、启动docker 后台服务:sudo service docker start

3、测试运行hello-world:docker run hello-world

3)CentOS系统安装

Docker 要求CentOS 系统的内核版本高于3.10 ,查看本页面的前提条件来验证你的CentOS 版本是否支持Docker 。

Docker 软件包和依赖包已经包含在默认的CentOS-Extras 软件源里。可以使用yum -y install docker命令安装。

Docker命令结构图

四、镜像

Docker 镜像(Image)就是一个只读的模板,可以基于一个Image快速部署多个相同的容器。镜像相关命令:

docker pull :从仓库获取所需镜像(如果不指定注册服务器仓库地址默认从Docker Hub)

docker images:显示本地已有镜像

docker tag :为本地镜像增加新的标签

docker search :默认搜索Docker Hub 中镜像

docker inspect :查询镜像详细信息

docker rmi :删除镜像;-f 参数强制删除镜像

docker push :将镜像推送到仓库

docker commit:基于已有容器创建镜像。-m提交说明;-a 提交作者信息;用来创建对象容器ID;目标对象仓库名和tag信息

dockerbuild:利用Dockerfile构建镜像。-t 指定要创建目标镜像;. Dockerfile文件所在目录,可以为Dockerfile的绝对路径

dockersave:导出镜像到本地。-o输出到指定文件

dockerload:导入本地镜像库。-i指定导入本地镜像文件

五、容器

简单的说,容器是独立运行的一个或一组应用,以及它们的运行态环境。对应的,虚拟机可以理解为模拟运行的一整套操作系统(提供了运行态环境和其他系统环境)和跑在上面的应用。容器与镜像关系类似于Java中对象与类关系。容器相关命令如下:

docker run:启动容器。-t 选项让Docker分配一个伪终端并绑定到容器的标准输入上;-i 则让容器的标准输入保持打开;-d 让容器以守护进程运行;-P 将容器内部使用的网络端口映射到我们使用的宿主机上;-p 绑定指定端口

docker start :重启已经终止容器

docker stop:终止容器运行

docker ps :查看正在运行容器。-a 查看运行过未删除容器

docker exec :进入以守护进程运行容器后台

docker attach :进入以守护进程运行容器后台;该命令使用时容易造成窗口堵塞,不方便. docker port :查看指定容器某个端口映射到宿主机的端口号

docker rm :删除处于终止状态容器。-f强制删除正在运行容器

六、仓库

仓库(Repository)是集中存放镜像的地方。Docker Hub是Docker官方维护一个仓库。

注册服务器(Registry)与仓库(Repository)区别:注册服务器可以存放多个仓库,而每个仓库可以N个镜像。例:https://www.sodocs.net/doc/878073800.html,/https://www.sodocs.net/doc/878073800.html,:注册服务器地址;ubuntu:仓库名。仓库相关命令如下:

docker login :输入用户名/密码,登录Docker Hub仓库

docker search :查找官方仓库中的镜像

七、Dockerfile

Dockerfile 由一行行命令语句组成,并且支持以# 开头的注释行。一般分为四部分:基础镜像信息、维护者信息、镜像操作指令和容器启动时执行指令。用于构建自定义镜像。

例:利用Dockerfile文件创建自己镜像搭建tomcat8 + jdk8 环境

1)创建Dockerfile文件,下载jdk与tomcat放在Dockerfile同一目录。文件内容如下:

2)创建镜像:

3)进入容器:

启动tomcat 通过宿主机的18080端口可以访问到tomcat页面

通过push可以将自定义镜像推送自己Docker Hub 仓库

八、数据管理

在容器中管理数据主要有两种方式:数据卷; 数据卷容器

1)数据卷

数据卷设计为了解决什么问题呢??

数据卷是一个可供一个或多个容器使用特殊目录,特点如下:

●数据卷可以在容器之间共享和重用

●对数据卷的修改会立马生效

●对数据卷的更新,不会影响镜像

●卷会一直存在,直到没有容器使用

创建一个web容器,宿主机会随机生成目录作为数据卷挂载到容器的/test 目录

创建一个web1容器,挂载一个主机目录作为数据卷到容器/data目录

通过ro参数可以限定挂载卷内容只读,默认具有读写权限

2)数据卷容器

数据卷容器,其实就是一个正常的容器,专门用来提供数据卷供其它容器挂载的.如果你想要容器之间数据共享,或者从非持久化容器中使用一些持久化数据,最好创建一个指定名称的数据卷容器,然后用它来挂载数据。

先创建一个名为dbdata数据卷容器,在其它容器中使用–volumes-form 来挂载dbdata容器中数据卷。一个数据卷容器可以同时被多个容器挂载。

注:如果删除了挂载的容器(包括dbdata、db1 和db2),数据卷并不会被自动删除。如果要删除一个数据卷,必须在删除最后一个还挂载着它的容器时使用docker rm -v 命令来指定同时删除关联的容器。

3)备份、恢复、迁移数据卷

可以利用数据卷对其中的数据进行进行备份、恢复和迁移。

备份:首先使用--volumes-from 标记来创建一个加载dbdata 容器卷的容器,并从本地主机挂载当前到容器的/backup 目录。容器启动后,使用了tar 命令来将dbdata 卷备份当前目录的backup.tar。

恢复:如果要恢复数据到一个容器,首先创建一个带有数据卷的容器dbdata2。然后创建另一个容器,挂载dbdata2 的容器,并使用untar 解压备份文件到挂载的容器卷中。

九、高级网络配置

当Docker 启动时,会自动在主机上创建一个docker0 虚拟网桥,实际上是Linux 的一个bridge,可以理解为一个软件交换机。它会在挂载到它的网口之间进行转发。同时,Docker 随机分配一个本地未占用的私有网段中的一个地址给docker0 接口。比如典型的172.17.42.1 ,掩码为255.255.0.0 。此后启动的容器内的网口也会自动分配一个同一网段(172.17.0.0/16 )的地址。当创建一个Docker 容器的时候,同时会创建了一对veth pair 接口(当数据包发送到一个接口时,另外一个接口也可以收到相同的数据包)。这对接口一

端在容器内,即eth0 ;另一端在本地并被挂载到docker0 网桥,名称以veth 开头(例如vethAQI2QT )。通过这种方式,主机可以跟容器通信,容器之间也可以相互通信。Docker 就创建了在主机和所有容器之间一个虚拟共享网络。

十、附录:有用的资源

Docker 主站点:https://www.docker.io

Docker官方文档:https://https://www.sodocs.net/doc/878073800.html,/

Docker Hub:https://https://www.sodocs.net/doc/878073800.html,/

Dockerfile 从入门到实践:https://https://www.sodocs.net/doc/878073800.html,/book/yeasy/docker_practice/details Docker 中文社区:https://www.sodocs.net/doc/878073800.html,/

Docker 资料集粹:https://www.sodocs.net/doc/878073800.html,/BeDocker/

Docker容器技术与微服务解决方案

Docker容器技术与微服务解决方案

目录 一、前言 (3) 二、容器技术简介 (3) 三、Docker 简介 (4) 四、Docker 的组成 (6) 五、Docker 的实现 (8) 六、Docker 的生态圈 (15) 七、总结 (16)

一、前言 Docker 是最近在云计算领域出现的新技术。目前,Docker 和以其为代表的容器技术的热度已经改过了之前的OpenStack。Docker 以及其所代表的容器技术的流行,即使因为软件技术的进步,更是由于其符合云计算对软件领域所带来新思想。在如今的互联网和企业应用开发领域,微服务和DevOps 是两个思想颇为深入人心。而Docker 技术的出现和其对整个容器技术及其生态圈发展的促进,解决了这个微服务和DevOps 这两个思想实践中的很多难题,使得前面两种思想大规模地实现成为了可能。所以,我们有必要地深入了解一下Docker 这个技术,看看它会对云计算时代的软件开发产生什么样的影响。 本文将介绍如下内容 1.什么是容器技术 2.什么是Docker 3.Docker 是如何实现的 4.为什么要使用Docker 至于Docker 的用法,不在这里做介绍。Docker 的入门使用,可以前往Docker 官网。各种高级用法、技巧、经验,可以前往技术网站CSDN、InfoQ 和CoreOS、Centurylink Labs 等这些使用Docker 的云计算厂商的网站。 二、容器技术简介 容器技术有时会被称为轻量化虚拟技术。但不同于基于Hypervisor 的传统虚拟化技术,容器技术并不会虚拟硬件。容器本身和容器内的进程都是运行在宿主Linux 系统的内核之

《Docker技术集群与应用》课程测试试卷-2

《Docker技术集群与应用》课程测试试卷说明:本试卷由选择题和简答题两部分组成,满分100分。 一、选择题 说明:共30题,每题2分,共计60分。 针对以下题目,请选择最符合题目要求的答案。针对每一道题目,所有答案都选对,则该题得分,所选答案错误或不能选出所有答案,则该题不得分。 1.下列关于Docker核心概念的说法错误的是()。 A.Docker镜像是创建容器的基础,是Docker容器的只读模板 B.Docker容器可以看作是一个简易版的Linux环境,用来运行和隔离应用 C.Docker仓库是集中保存镜像的地方,可使用push命令上传自己的镜像 D.Docker容器是从镜像创建的运行实例,容器创建后容器之间可以相互可见 2.下列()属于安装Docker时所需要的依赖软件包。 A.yum-utils B. device-mapper-devel C. lvm2 D. python-docker 3.对于Docker镜像的描述错误的是()。 A.镜像文件是由若干层组成,是实现增量保存和更新的基础 B.用户从私有仓库下载镜像时,需要在仓库名称前指定完整的注册服务器地址 C.可以通过命令docker info 0b8d572d1c7d(镜像ID)查看镜像详细信息

D.可以使用docker tag命令为本地镜像添加新的标签 4.本地有一镜像httpd:new,其ID为2d1935fb3ka0,下列可成功删除该镜像的命令是 ()。 A.docker rm httpd:new B.docker rmi httpd:new C.docker rm 2d1935fb3ka0 D.docker image rm 2d1935fb3ka0 5.Docker镜像命令docker images执行后,结果内不包括的列是()。 A.C REATED B.T IME C.S IZE D.TAG 6.下列关于Docker容器说法正确的是()。 A.通过Dockerfile构建的镜像,由这些镜像启动的容器内应用都是在后台运行的 B.可以通过命令docker exec –it 容器ID /bin/bash 来进入容器内部 C.可以使用docker rm 容器ID 命令来删除一个正在运行中的容器 D.Docker的默认存储目录在/var/lib/docker 7.下列()命令执行后可以查看镜像ID为0b8d572d1c7d的详细信息。

相关主题