题目:Docker的安装和使用
实验环境:ubuntu16.04,虚拟机的网络模式设为NAT模式,IP地址通过虚拟 DHCP 服务器自动分配。
实验内容和要求:安装Docker并进行相关实验,熟悉Docker的相关操作。实验包括Docker的安装、镜像和容器的使用、容器的连接、容器间的通信和Nginx的使用。
实验原理和机制:
Docker是一种构建在LXC之上,基于进程容器的轻量级虚拟化解决方案,实现了应用程序级别的资源隔离。通过Docker技术,开发者把应用以及依赖包封装到一个镜像中,可以发布到Linux或Windows机器上。
Docker镜像就像停止运行的容器,镜像由多个层组成,每层叠加之后,从外部看来就如一个独立的对象。镜像内部是一个精简的操作系统(OS),同时还包含应用运行所必须的文件和依赖包。Docker镜像存储在镜像仓库服务(Image Registry)当中。Docker客户端的镜像仓库服务是可配置的,默认使用Docker Hub。镜像仓库服务包含多个镜像仓库(Image Repository)。同样,一个镜像仓库中可以包含多个镜像。
容器是镜像的运行时实例。正如从虚拟机模板上启动VM一样,用户也同样可以从单个镜像上启动一个或多个容器。虚拟机和容器最大的区别是容器更快并且更轻量级——与虚拟机运行在完整的操作系统之上相比,容器会共享其所在主机的操作系统/内核。容器中可以运行一些网络应用,要让外部也可以访问这些应用,可以通过-P或-p参数来指定端口映射。
容器之间可通过IP、Docker DNS Server或joined容器三种方式通信。两个容器要能通信,必须要有属于同一个网络的网卡。满足这个条件后,容器就可以通过IP交互了。具体做法是在容器创建时指定相应的网络,或者将现有容器加入到指定网络。通过IP访问容器虽然满足了通信的需求,但还是不够灵活。因为我们在部署应用之前可能无法确定IP,部署之后再指定要访问的IP会比较麻烦。对于这个问题,可以通过docker自带的 DNS 服务解决。从 Docker 1.10 版本开始,docker daemon实现了一个内嵌的DNS server,使容器可以直接通过“容器名”通信。但使用 docker DNS 有个限制:只能在user-defined网络中使用。也就是说,默认的bridge网络是无法使用DNS的。joined容器可以使两个或多个容器共享一个网络栈,共享网卡和配置信息,joined容器之间可以通过127.0.0.1直接通信。
Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,其特点是占有内存少,并发能力强。
实验步骤:
实验1、Docker安装
1.查看linux内核的版本。

2.用清华大学的源替换原来的源。
3.更新ubuntu16.04的源。

4.安装docker。


5.查看docker版本。

6.启动docker服务,查看 docker 服务状态。
8.测试运行docker Hello World。
9.停止 docker 服务。

二、Docker使用
1.镜像使用
(1)列出镜像列表。

(2)拉取镜像(在本地主机上使用一个不存在的镜像前预先下载它)。

(3)搜索镜像。

实验2.docker 容器的使用
(1)查看docker客户端的所有命令使用方法。

(2)了解Docker运行时的命令使用方法。

(3)列出后台运行的容器列表。

(4)通过ubuntu14.04镜像创建一个容器,但不启动它。

(5)运行容器,运行成功后在容器中可以使用ubuntu14.04。(-i:以交互模式运行容器,通常与-t同时使用,表示开启了input功能。-t:为容器重新分配一个伪输入终端,通常与-i同时使用,表示开启了连接容器里的终端。ll:查看容器内所有文件。)

(6)在docker容器中运行一个Python Flask应用来运行一个web应用。
a.拉取镜像

b.运行容器(-d:让容器在后台运行,-P:将容器内部使用的网络端口映射到我们使用的主机上)

c.查看正在运行的容器

d.由图可知Docker开放了5000端口映射到主机端口32768 上,可以通过浏览器访问web应用

e.查看web应用程序日志(-f:让docker logs像使用tail -f一样来输出容器内部的标准输出)

f.停止web应用容器

g.移除web应用容器(容器必须是停止状态)

3.容器连接
(1)创建一个python应用的容器。

(2)将容器内部端口绑定到指定的主机端口(-P:容器内部端口随机映射到主机端口)。

(3)查看后台正在运行的容器。

(4)指定容器绑定的网络地址,这样我们就可以通过访问127.0.0.1:5001来访问容器的5000端口。

(5)容器命名。

4.docker容器间通信
(1)创建bridge网络 my_net2,指定网段和网关参数。

(2)参看网络配置。

(3)通过DNS server进行通信。
a.启动bbox1和bbox2两个容器

b.验证bbox2可以ping到bbox1

(4)默认的bridge网络无法使用docker DNS,如下。
a.创建bbox3和bbox4,均连接到bridge网络

b.bbox4无法ping到bbox3

(5)通过joined容器通信。
a.创建一个httpd容器,名为web1

b.创建busybox容器并通过–network=container:web1指定joined容器为web1,并查看busybox容器中的网络配置信息(Container模式就是在运行容器时通过–net指定另一个已经在运行的有单独Network Namespace的容器,与这个容器共享一个Network Namespace。在这种情况下,新建的容器没有自己的网卡,也不会给它分配IP,而是两个容器共享IP和端口空间)

c.查看 web1 的网络配置(docker exec命令能够在运行着的容器中执行命令)

d.可以看出busybox和web1的网卡mac地址与IP 完全一样,它们共享了相同的网络栈。 因此,busybox可以直接用127.0.0.1访问web1的http 服务

5.docker安装Nginx(engine x)
(1)以后台模式启动一个交互式容器,并将容器的 80 端口映射到主机随机端口。

(2)对容器内资源进行更新和升级。

(3)在容器内安装Nginx服务(指令中的y=yes,表示跳过系统提示,直接安装)

(4)在容器内安装文本编辑器vim。

(5)在容器中创建静态页面(-p表示创建目录及其下面的子目录)。

(6)在容器中编辑Nginx配置文件,修改路径。

(7)在容器中运行Nginx。

(8)在容器中查看进程(-e:显示所有进程,-f:全格式显示)。

(9)验证网站访问。
a.用ctrl+p ctrl+q将容器放于后台运行,再用docker ps命令查看后台运行的容器

b.访问nginx

c.在宿主机的浏览器,通过ubuntun16.04的ip地址和端口访问

出现的问题:
1.列出镜像列表失败。
2.拉取镜像失败。
3.两个容器无法通过“容器名”通信。(bbox1与bbox2)
4.在web1容器中找不到ip a命令。(command not found)
解决方案:
1.要先启动docker。
2.新建daemon.json配置文件,设置国内镜像源加速地址。
3.修改daemon.json文件,配置全部容器的DNS,重启docker使之生效
4.进行资源更新和升级。(apt-get update/apt-get upgrade)

docker安装实验和docker容器的使用,云计算技术与应用报告相关推荐

  1. docker安装、部署docker反向代理

    1.1 docker介绍 https://www.cnblogs.com/xiaonq/p/10241045.html#i4 1. 什么是docker Docker 是应用最广泛的开源容器引擎,让开发 ...

  2. 什么是Docker?Docker安装及镜像、容器的基本命令实验+理论!!!

    文章目录 一.Docker简介 1.什么Docker? 2.Docker使用的机制? 3.Docker的三要素? 3.1 镜像 3.2 容器 3.3 仓库 3.3.1 public(公有仓库) 3.3 ...

  3. Docker安装与镜像,容器命令管理

    docker和容器的关系 -Docker是完整的一套容器管理系统 -Docker提供了一组命令, 让用户更加方便直接地使用容器技 术,而不需要过多关心底层内核技术 一.Docker的安装 1.配置环境 ...

  4. Linux启动容器端口,docker安装 创建镜像 启动容器 的 使用方法

    1.linux centos 安装docker yum -y install docker 2.启动docker systemctl start docker #启动 docker 服务 system ...

  5. Docker安装+镜像拉取+容器+创建镜像+push to docker hub

    文章目录 1. 安装 2. 镜像操作 3. 容器 4. docker hub 本文参考:https://zhuanlan.zhihu.com/p/23599229 1. 安装 参考 https://w ...

  6. Docker安装 下载镜像 部署容器 备份 创建私服

    Docker 学习目标: 掌握Docker基础知识,能够理解Docker镜像与容器的概念 完成Docker安装与启动 掌握Docker镜像与容器相关命令 掌握Tomcat Nginx 等软件的常用应用 ...

  7. docker 安装 oracle12,使用Docker安装Oracle 12c

    使用Docker安装Oracle 12c 假设你的服务器已成功安装Docker,继续进行以下操作: 1. 启动Docker [root@node01 ~]# service docker start ...

  8. docker安装jenkins并用docker部署net

    1. 部署jenkins 1.1 创建jenkins的工作目录 //创建工作目录 mkdir /var/jenkins_home //赋予权限 chown -R 1000 /var/jenkins_h ...

  9. linux docker安装svn,使用docker镜像搭建svn+Apache环境

    环境准备 虚拟机装好之后,按照官网步骤检查虚拟机内核版本,必须在3.10以上版本,故此处安装redhat_7.2 # uname -r 3.10.0-327.el7.x86_64 安装docker: ...

最新文章

  1. ns 25的IKE模式ipsec ***配置
  2. asp.net core 系列 18 web服务器实现
  3. 数据分析与挖掘实战-窃电漏电用户的发现
  4. VHDL汽车尾灯控制器的设计
  5. C#编写TensorFlow人工智能应用 TensorFlowSharp
  6. Android系统驱动【转】
  7. 依赖注入底层反射原理_PHP基于反射机制实现自动依赖注入的方法详解_php技巧...
  8. es6 循环加载ES6模块
  9. (转)Spring Boot(二十):使用 spring-boot-admin 对 Spring Boot 服务进行监控
  10. zabbix小结(一)zabbix概述
  11. Qt Quick编程(1)——QML的核心部分ECMAScript
  12. 结束SpringMVC
  13. localtime选择00:00值不回显_配置OSPF的DR选择示例
  14. 什么是PLC可编程控制器,理论基础知识讲解QY-KC801
  15. 如何像Uber一样给工程师派单 解放外包落后的生产力
  16. 使用NPOI导出Excel模板
  17. 使用mongoDB的一些新的(mongoDB报错解决)
  18. MySQL基础(补充)
  19. python卡尔曼滤波室内定位_基于Unscented卡尔曼滤波的室内定位
  20. 万能密码为什么能成功

热门文章

  1. easyui数据表格重置_Python办公自动化,自动更新表格,告别繁琐
  2. MySql 高可用架构Atlas
  3. struts.xml web.xml配置正常,访问action时出现404
  4. 怎么讲iso镜像文件使用ultroISO写入到空白的光盘中?
  5. Form_通过FND_FNDFLUPL标准功能上传CSV控件(案例)
  6. Maven多模块项目中应用maven-tomcat-plugin热部署
  7. 有无符号的整数、二进制
  8. 中國web2.0現狀與趨勢調查報告
  9. 数据治理在业务中台的实践
  10. 阿里p7程序员哀叹:35岁,被通知合同不再续签,输出社会,怎么办?