Docker公开课

Docker介绍

1.1 Docker是什么

云计算\云服务

IAAS(基础设施即服务)、PAAS(平台即服务)、SAAS(软件即服务)

Docker到底是什么呢?

Docker就是一种虚拟化容器技术。

开发项目:

Tomcat

MySQL

通过Docker这种虚拟化技术,我们可以物理机的资源进行更加合理有效的利用,可以将一台物理机器虚拟化出很多个拥有完整操作系统,并且相互独立的“虚拟计算机”。

基于操作系统创建出一些相互独立的、功能虚拟化技术有多种实现方式,有基于硬件进行虚拟化的技术,而Docker只是针对操作系统进行虚拟化,对于硬件资源的使用率更低。

相对于VMware这种虚拟化技术,Docker拥有着显著的优势:

  1. 启动速度快,Docker容器启动操作系统在秒级就可以完成,而VMware却是达到分钟级。
  2. 系统资源消耗低,一台Linux服务器可以运行成千上百个Docker容器,而VMware大概只能同时运行10个左右。
  3. 更轻松的迁移和扩展,由于Docker容器比VMware占用更少的硬盘空间,在需要搭建几套软件环境的情况下,对安装好的Docker容器进行迁移会更快捷,更方便。而且Docker容器几乎可以在任意的平台上运行,包括虚拟机、物理机、公有云,私有云,个人电脑等,这种兼容性,可以让用户将一个应用程序从一个平台直接迁移到另一个平台。

1.2 Docker能做什么

docker可以给开发人员和运维人员带来帮助。

项目拥有多套环境:开发环境、测试环境、预生产环境、生成环境。

环境(中间件,具体比如Tomcat、MySQL)不一致

我们之所以要学习Docker,那是因为Docker是一门神奇的技术!

使用Docker,开发人员只需要关注于软件应用开发,运维人员只需要关心如何管理容器。这样的话,就可以避免在以往开发环境中经常出现的环境不一致问题,比如开发人员在开发环境运行应用程序是正常的,但是同样的代码部署到生产环境就不行了,这种问题出现的最大原因就是环境的不一致造成的。而现在通过Docker容器,开发人员在开发&测试时使用的Docker容器环境,可以直接提交给运维人员,由运维人员在生产环境中,直接拿着开发人员搭建好的Docker容器,并在其中部署应用,避免开发环境和生产环境的不一致性。

当然,Docker的强大远远不至于此,而作为软件开发人员的我们,更关注的是如何利用它来搭建一套统一的软件开发环境。

对比传统虚拟机总结

接下来,我们将会一步一步的揭开Docker的神秘面纱!

1.3 网络项目架构

1.4 Docker基本概念

docker包含三个基本概念:

l 镜像(Image)

l 容器(Container)

l 仓库(Repository)

理解了这三个概念,就理解了docker的整个生命周期了!

1.4.1 镜像

Docker镜像(Image)就是一个只读的模板。

Docker镜像可以用来创建Docker容器。

Docker镜像和Docker容器的关系,类似于java中class类与对象之间的关系。

Docker提供了一个很简单的机制来创建镜像或者更新已有的镜像,用户甚至可以直接从其他人那里下载一个已经做好的镜像来直接使用。

1.4.2 容器

Docker利用容器(Container)来运行应用。

容器是从镜像创建的运行实例。它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。

可以把容器看成是一个简易版的Linux环境(包括ROOT用户权限、进程空间、用户空间、网络等)和运行在其中的应用程序。

1.4.3 Registry

Registry是集中存放镜像文件的场所。

仓库(Repository)是对于其中的镜像进行分类管理。

一个Registry中会有多个Repository。

一个Repository中会有多个不同tag的Image。

比如名称为centos的Repository仓库下,有tag为6或者7的Image镜像。

Registry分为公有(public)和私有(private)两种形式。

l 最大的公有Registry是Docker Hub,存放了数量庞大的镜像供用户下载使用。

l 国内的公开Registry包括USTC、网易云、DaoCloud、AliCloud等,可以供大陆用户更稳当快捷的访问。

l 用户可以在本地创建一个私有Registry。

用户创建了自己的镜像之后就可以使用push命令将它上传的公有Registry或者私有Registry中,这样下次在另一台机器上使用这个镜像的时候,只需要从Registry上pull下来运行就可以了。

Docker安装

官方网站上有各种环境下的安装指南,比如:CentOS、Ubuntu和Debian系列的安装。

而我们现在主要讲解的是基于CentOS 7.x上面的安装。

注意:CentOS 7的安装比较耗费时间所以不在本教程之内但是资料中已经准备了CentOS 7的安装镜像以及安装文档课下可以参考着文档进行安装

安装好CentOS之后,需要通过SSH客户端工具访问CentOS操作系统,所以需要在CentOS的系统界面中查看IP地址,查看方式在7.x后,ipconfig命令被废除,使用ip addr命令

一切完毕之后,只需要执行以下命令即可完成Docker的安装:

yum install docker

systemctl start docker

 

 

Docker镜像

3.1 拉取镜像

我们可以使用命令从一些公用仓库中拉取镜像到本地,下面就列举一些常用的公用仓库拉取镜像的方式!

3.1.1 从docker hub拉取

https://hub.docker.com/

下面的例子将从Docker Hub仓库下载一个CentOS 7版本的操作系统镜像。

docker pull centos:7

这是docker默认的公用仓库,不过缺点是国内下载会比较慢。

3.1.2 从ustc拉取(建议使用)

在宿主机器编辑文件:vi /etc/docker/daemon.json

请在该配置文件中加入(没有该文件的话,请先建一个):

{

"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]

}

最后,需要重启docker服务

systemctl restart docker.service

之后再使用pull命令拉取镜像,这时候是从ustc获取镜像,而且速度杠杠的。

3.2 列出镜像

docker images

3.3 删除镜像

docker rmi 镜像

3.4 导入导出镜像

导出镜像:docker save 镜像 > /root/xx.tar.gz

导入镜像:docker load < /root/xx.tar.gz

Docker容器

4.1 启动容器

以交互方式启动容器:docker run -it --name 容器名称 镜像 /bin/bash

以守护进程方式启动容器:docker run -d --name 容器名称 镜像

4.2 停止容器

docker stop 容器名称或者容器ID

4.3 重启容器

docker start 容器名称或者容器ID

4.4 删除容器

删除指定容器:docker rm 容器名称或者容器ID

删除所有容器:docker rm ‘docker ps -a -q’

4.5 查看容器

docker ps :查看正在运行的容器

docker ps -a:查看历史运行过的容器

docker ps -l:查看最近运行过的容器

Docker应用

5.1 搭建Tomcat服务

docker run -d --name my-tomcat -p 8888:8080 镜像

5.2 部署web应用

1、 将war包上传到宿主机器

2、 通过docker cp命令将宿主机器的war包上传到容器中tomcat的webapps目录下。

3、 tomat会自动热部署,直接访问web应用的路径即可。

Docker安装配置教程的更多相关文章

  1. mac系统Docker安装Redis教程

    在之前介绍过mac系统安装docker,以及docker安装mysql的傻瓜式教程,如果有需要参考的朋友,可以看下面文章: MacOS安装Docker傻瓜式教程 mac系统下docker安装配置mys ...

  2. docker安装配置gitlab详细过程

    docker安装配置gitlab详细过程   获取镜像 1.方法一 1 docker pull beginor/gitlab-ce:11.0.1-ce.0 2.方法二如果服务器网路不好或者pull不下 ...

  3. QT开发环境安装配置教程

    QT开发环境安装配置教程 分类: QT2012-11-29 23:31 35366人阅读 评论(12) 收藏 举报 Linux版的直接在ubutnu软件中心输入QT,安装响应的Designer,Cre ...

  4. docker安装配置

    ########################################## #docker安装配置 #环境centos7 #配置docker阿里源 echo '#Docker [docker ...

  5. centos7 docker 安装配置

    docker快速入门测试 ########################################## #docker安装配置 #环境centos7 #配置docker阿里源 echo '#D ...

  6. 2018超详细sublime text3+python3.x安装配置教程(附常用插件安装教程)

    导读 本文是关于2018年7月最新版sublime text3+pythin3.x下载及安装配置教程,sublime text3版本为3176,python版本为3.7,安装环境是基于windows1 ...

  7. centos7命令行和图形界面的相互切换(附centos7安装配置教程)

    一.最近安装了centos7,发现在命令行和图形界面的相互切换命令上,与centos以往版本有很大不同,先整理如下,加深记忆. 1,centos7默认安装后,跟其他版本一样,启动默认进入图形界面: 2 ...

  8. MySQL基础环境_安装配置教程(Windows7 64或Centos7.2 64、MySQL5.7)

    MySQL基础环境_安装配置教程(Windows7 64或Centos7.2 64.MySQL5.7) 安装包版本 1)     VMawre-workstation版本包 地址: https://m ...

  9. Windows基础环境_安装配置教程(Windows7 64、JDK1.8、Android SDK23.0、TortoiseSVN 1.9.5)

    Windows基础环境_安装配置教程(Windows7 64.JDK1.8.Android SDK23.0.TortoiseSVN 1.9.5) 安装包版本 1)     JDK版本包 地址: htt ...

随机推荐

  1. rdesktop 脚本

    [root@Eren liwm]# cat rdesktop.sh #!/bin/bash -rdesktop -u user  192.168.122.10 -r sound:local -g 10 ...

  2. nginx upstream

    nginx转发http和tcp http转发 upstream goforit_201 { server 172.168.10.10:201; } server { listen 201; serve ...

  3. HTTP 文件共享服务器工具 - chfs

    CuteHttpFileServer/chfs是一个免费的.HTTP协议的文件共享服务器,使用浏览器可以快速访问.它具有以下特点: 单个文件,整个软件只有一个可执行程序,无配置文件等其他文件 跨平台运 ...

  4. 小于等于N的全部整数与N关于gcd(i,N)的那些事

    相关问题1: 求小于等于N的与N互质的数的和.即∑ i (gcd(i,N)=1, N>=i>0) 依据N的规模能够有非常多种方法.这里我介绍一个比較经典的方法 先说下这个结论:假设 gcd ...

  5. Hadoop Serialization -- hadoop序列化具体解释 (2)【Text,BytesWritable,NullWritable】

    回想: 回想序列化,事实上原书的结构非常清晰,我截图给出书中的章节结构: 序列化最基本的,最底层的是实现writable接口,wiritable规定读和写的游戏规则 (void write(DataO ...

  6. C++ 数字、string 简便互转

    一.数字转为 string 类型 借用 sprintf 函数: char buffer[256]; int counter = 10; sprintf(buffer,"%04i", ...

  7. windows环境利用apache 配置虚拟主机

    windows环境利用apache 配置虚拟主机 1.改动http.host #LoadModule vhost_alias_module modules/mod_vhost_alias.so #In ...

  8. 拥抱PBO(基于项目的组织)聚焦核心价值创造

    近年来.PBO(Project-Based Organizations)作为一种新兴的整合各类专业智力资源和专业知识的组织结构,受到越来越多的关注,第五版PMBOK出现的新词汇.三种组织(职能型.矩阵 ...

  9. vue2.0 路由学习笔记

    昨天温故了一下vue2.0的路由 做个笔记简单记录一下! 1.首相和vue1.0一样 要使用vuejs的路由功能需要先引入vue-router.js 2.然后修改原有a标签处代码 这里以一个ul li ...

  10. Vue小技巧,如何导入普通JS文件

    最近在开发一个展示3D模型的WEB程序,在工程中使用了VUE和ThreeJS库.Three.js本身是支持CommonJS的,但我们还用到了OBJLoader模块,此模块不支持CommonJS,改成C ...