Docker简介

Docker是一个开源的容器引擎,它有助于更快地交付应用。Docker可将应用程序和基础设施层隔离,并且能将基础设施当作程序一样进行管理。

使用Docker可更快地打包、测试以及部署应用程序,并可以缩短从编写到部署运行代码的周期。

Docker的优点如下:

1、简化程序

Docker让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,便可以实现虚拟化。Docker改变了虚拟化的方式,使开发者可以直接将自己的成果放入Docker中进行管理。方便快捷已经是Docker的最大优势,过去需要用数天乃至数周的任务,在Docker容器的处理下,只需要数秒就能完成。

2、避免选择恐惧症

如果你有选择恐惧症,还是资深患者。Docker帮你打包你的纠结!比如Docker镜像;Docker镜像中包含了运行环境和配置,所以Docker可以简化部署多种应用实例工作。比如Web应用、后台应用、数据库应用、大数据应用比如Hadoop集群、消息队列等等都可以打包成一个镜像部署。

3、节省开支

一方面,云计算时代到来,使开发者不必为了追求效果而配置高额的硬件,Docker改变了高性能必然高价格的思维定势。Docker与云的结合,让云空间得到更充分的利用。不仅解决了硬件管理的问题,也改变了虚拟化的方式。

Docker的架构

Docker daemon(Docker守护进程)

Docker daemon是一个运行在宿主机(DOCKER-HOST)的后台进程。可通过 Docker客户端与之通信。

Client( Docker客户端)

Docker客户端是Docker的用户界面,它可以接受用户命令和配置标识,并与Docker daemon通信。图中,docker build等都是Docker的相关命令。

Images(Docker镜像)

Docker镜像是一个只读模板,它包含创建 Docker容器的说明。它和系统安装光盘有点像,使用系统安装光盘可以安装系统,同理,使用Docker镜像可以运行Docker镜像中的程序。

Container(容器)

容器是镜像的可运行实例。镜像和容器的关系有点类似于面向对象中,类和对象的关系。可通过Docker API或者CLI命令来启停、移动、删除容器。

Registry

Docker Registry是一个集中存储与分发镜像的服务。构建完 Docker镜像后,就可在当前宿主机上运行。但如果想要在其他机器上运行这个镜像,就需要手动复制。此时可借助Docker Registry来避免镜像的手动复制。

一个Docker Registry可包含多个Docker仓库,每个仓库可包含多个镜像标签,每个标签对应一个Docker镜像。这跟Maven的仓库有点类似,如果把Docker Registry比作Maven仓库的话,那么Docker仓库就可理解为某jar包的路径,而镜像标签则可理解为jar包的版本号。

Docker Registry可分为公有Docker Registry和私有Docker Registry。最常用的Docker Registry莫过于官方的Docker Hub,这也是默认的Docker Registry。Docker Hub上存放着大量优秀的镜像,我们可使用Docker命令下载并使用。

Docker 的安装

Docker是一个开源的商业产品,有两个版本:社区版(Community Edition,缩写为 CE)和企业版(Enterprise Edition,缩写为 EE)。企业版包含了一些收费服务,个人开发者一般用不到。下面的介绍都针对社区版。

Docker CE的安装请参考官方文档,我们这里以CentOS为例

1、Docker要求 CentOS 系统的内核版本高于3.10

通过uname -r 命令查看你当前的内核版本

# uname -r

查看操作系统版本

# cat /etc/redhat-release

2、卸载旧版本(如果安装过旧版本的话)

# yum remove docker  docker-common docker-selinux docker-engine

3、查看 yum 源地址

# yum repolist

4、设置yum源,并更新 yum 的包索引

# yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# yum makecache fast

5、可以查看所有仓库中所有docker版本,并选择特定版本安装

# yum list docker-ce --showduplicates | sort -r

6、安装docker

# yum install docker-ce  #由于repo中默认只开启stable仓库,故这里安装的是稳定版18.03.1

# yum install <FQPN>  # 例如:yum -y install docker-ce-18.03.1.ce

7、启动并加入开机启动

# systemctl start docker

# systemctl enable docker

8、验证安装是否成功(有client和service两部分表示docker安装启动都成功了)

# docker version

9、卸载docker

# yum -y remove docker-engine

Docker常用命令

镜像相关命令

1、搜索镜像

可使用docker search命令搜索存放在Docker Hub中的镜像。执行该命令后,Docker就会在Docker Hub中搜索含有 tomcat 这个关键词的镜像仓库。

以上列表包含五列,含义如下:

- NAME:镜像仓库名称。

- DESCRIPTION:镜像仓库描述。

- STARS:镜像仓库收藏数,表示该镜像仓库的受欢迎程度,类似于 GitHub的 stars0

- OFFICAL:表示是否为官方仓库,该列标记为[0K]的镜像均由各软件的官方项目组创建和维护。

- AUTOMATED:表示是否是自动构建的镜像仓库。

2、下载镜像

使用命令docker pull命令即可从Docker Registry上下载镜像,执行该命令后,Docker会从 Docker Hub中的 tomcat仓库下载最新版本的 tomcat镜像。如果要下载指定版本则在tomcat后面加冒号指定版本,例如:docker pull tomcat:7

# docker pull tomcat:7

3、列出镜像

使用docker images命令即可列出已下载的镜像

# docker images

以上列表含义如下

- REPOSITORY:镜像所属仓库名称。

- TAG:镜像标签。默认是 latest,表示最新。

- IMAGE ID:镜像 ID,表示镜像唯一标识。

- CREATED:镜像创建时间。

- SIZE: 镜像大小。

4、删除本地镜像

使用docker rmi命令即可删除指定镜像

# docker rmi tomcat:7

容器相关命令

1、新建并启动容器

使用以下docker run命令即可新建并启动一个容器,该命令是最常用的命令,它有很多选项,下面将列举一些常用的选项。

-d选项:表示后台运行

-p选项:指定端口映射,

  -- hostPort:containerPort

# docker run -d -p 8080:8080 tomcat:7

这样就能启动一个 tomcat 容器。在本例中,为docker run添加了两个参数,含义如下:

-d 后台运行

-p 宿主机端口:容器端口

这里是把 容器的8080 端口映射到 虚拟机的8080端口,通过虚拟机自带的浏览器 访问 127.0.0.1:8080 或者 物理机访问 虚拟机的ip:8080 (192.168.126.128:8080)也可以访问,都是一个意思。

访问http://Docker宿主机 IP:8080/,将会看到tomcat的主界面如下:

 需要注意的是,使用docker run命令创建容器时,会先检查本地是否存在指定镜像。如果本地不存在该名称的镜像, Docker就会自动从Docker Hub下载镜像并启动一个 Docker容器。

2、列出容器

用docker ps命令即可列出 正在运行中的容器

# docker ps

如需列出所有容器(包括已停止的容器),可使用-a参数。该列表包含了7列,含义如下

- CONTAINER_ID:表示容器 ID。

- IMAGE:表示镜像名称。

- COMMAND:表示启动容器时运行的命令。

- CREATED:表示容器的创建时间。

- STATUS:表示容器运行的状态。UP表示运行中, Exited表示已停止。

- PORTS:表示容器对外的端口号。

- NAMES:表示容器名称。该名称默认由 Docker自动生成,也可使用 docker run命令的--name选项自行指定。

3、停止容器

使用 docker stop命令,即可停止容器

# docker stop 4dbf26d1624d

其中 4dbf26d1624d 是容器 ID,当然也可使用 docker stop容器名称来停止指定容器

4、启动已停止的容器

使用docker run命令,即可新建并启动一个容器。对于已停止的容器,可使用 docker start命令来启动

# docker start 4dbf26d1624d

5、查看容器日志

# docker container logs 4dbf26d1624d

6、进入容器

使用docker exec命令用于进入一个正在运行的docker容器。如果docker run命令运行容器的时候,没有使用-it参数,就要用这个命令进入容器。一旦进入了容器,就可以在容器的 Shell 执行命令了

# docker exec -it 4dbf26d1624d /bin/bash

退出容器

# exit

7、删除容器

使用docker rm命令即可删除指定容器

# docker rm 4dbf26d1624d

该命令只能删除已停止的容器,如需删除正在运行的容器,可使用-f参数

Docker虚拟化原理

传统虚拟化和容器技术结构比较:

传统虚拟化技术是在硬件层面实现虚拟化,增加了系统调用链路的环节,有性能损耗;

容器虚拟化技术以共享Kernel的方式实现,几乎没有性能损耗。

CentOS 7.5 安装Docker 教程的更多相关文章

  1. centos中简易安装docker

    centos中简易安装docker准备环境要求:请确保自己的centos的内核版本大于3.10,使用如下linux命令: uname -r1显示如下类似信息: 3.10.0-862.3.3.el7.x ...

  2. Linux--CentOS 安装 Docker 教程

    本文主要介绍 CentOS 系统安装 Docker 的流程. 前提条件 OS 要求 CentOS7: The centos-extras repository must be enabled. Thi ...

  3. CentOS 8.4安装Docker

    前言: Docker 是一个用于开发.传送和运行应用程序的开放平台.Docker 使您能够将应用程序与基础设施分开,以便您可以快速交付软件.使用 Docker,您可以像管理应用程序一样管理基础设施.通 ...

  4. Docker - 在CentOS 7中安装Docker

    1-确认系统信息 # cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core) # uname -a Linux CentOS-7 3. ...

  5. (转载)Centos下Elasticsearch安装详细教程

    原文地址:http://www.cnblogs.com/sunny1009/articles/7874251.html Centos下Elasticsearch安装详细教程 1.Elasticsear ...

  6. CentOS 6.5 安装 php7 教程 包很重要使用lnmp1.4里面的包

    ./configure \ --prefix=/usr/local/php-7.0.1 \ --with-mysql=mysqlnd \ --with-pdo-mysql=mysqlnd \ --wi ...

  7. 在Centos 7上安装Docker

    在Centos 7上安装Docker 1.docker介绍 docker是类似于vmware的虚拟化软件,可以开发.容纳.运行应用程序的平台,在容器中安全的隔离运行应用程序. 2.Docker引擎 D ...

  8. Centos下Elasticsearch安装详细教程

    Centos下Elasticsearch安装详细教程 1.Elasticsearch简介 ElasticSearch是一个基于Lucene的搜索服务器.它提供了一个分布式多用户能力的全文搜索引擎,基于 ...

  9. 第二章、 Centos 6.8安装 Docker

    2.1检查Docker的先决条件 64位 CPU计算机(x86_64),不支持32位 CPU 运行Linux 3.8 或更高版本内核. 内核必须支持一种合适的存储驱动(storage driver), ...

随机推荐

  1. Docker和K8S

    干货满满!10分钟看懂Docker和K8S [摘自:https://my.oschina.net/jamesview/blog/2994112]   本文来源微信号:鲜枣课堂 2010年,几个搞IT的 ...

  2. 【转载】K-mer算法

    k-mer是指将reads分成包含k个碱基的字符串,一般长短为m的reads可以分成m-k+1个k-mers.举个例子吧,为了简化,有这么个reads(当然实际比这个长):AACTGACTGA.如果k ...

  3. PAT (Basic Level) Practise (中文)-1033. 旧键盘打字(20)

    PAT (Basic Level) Practise (中文)-1033. 旧键盘打字(20)  http://www.patest.cn/contests/pat-b-practise/1033 旧 ...

  4. dedeCMS数据库字段详细介绍

    dede_addonarticle 附加文章表 aid int(11) 文章编号 typeid int(11) 分类栏目编号 body mediumtext 文章内容 dede_addonflash ...

  5. javase(4)_数组

    一.数组概述 数组可以看成是多个相同类型数据组合,对这些数据的统一管理. 数组变量属于引用类型,数组也可以看成对象,数组中的每个元素相当于该对象的成员变量. 数组中的元素可以是任意类型,包括基本类型和 ...

  6. 【NOIP2017提高A组冲刺11.8】购物

    这个范围对DP不友好,和CF的一道C题非常像,贪心+后悔. 先使用k个优惠券购买k个q最小的(钱不购买则退出),同时把这k个p[i]-q[i]放入小根堆,然后将剩下的n-k个按p升序排序,记小根堆堆顶 ...

  7. 常用JS方法整理

    目录: 截取指定字节数的字符串 判断是否微信 获取时间格式的几个举例 获取字符串字节长度 对象克隆.深拷贝 组织结构代码证验证 身份证号验证 js正则为url添加http标识 URL有效性校验方法 自 ...

  8. css3小代码

    1.三角 <!doctype html> <html lang="en"> <head> <meta charset="UTF- ...

  9. iOS 绕过https证书验证 请求数据

    HTTPS和HTTP: 1.https协议需要到ca申请证书,一般免费证书很少,需要交费. 2.http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议. 3.http ...

  10. Fatal error: Call to a member function rowCount() on a non-object in /opt/lampp/htdocs/xampp/assets/update.php on line 6

    $sql = "SELECT * from idea ORDER BY datetime DESC LIMIT 50;"; $result = $pdo->query($sq ...