1、Docker入门简介

  Docker技术类似码头上看到的集装箱,最早集装箱没有出现的时候,码头上有许多搬运的工人在搬运货物,有了集装箱以后,搬运货物变得简单,通过集装箱的搬运模式更加单一、高效,将货物打包在集装箱里面,可以复制货物之间相互影响。

  如果要将货物搬运到另一个码头就需要装运,通过集装箱,可以直接把它们运送到另一个航舱内,而且完全可以保证里面的货物是整体地搬迁,而不会损坏货物本身。

  而Docker虚拟化正是基于类似的原理,将原本复杂的环境打包成为镜像模块,然后将模块迁移到各个平台,可以快速地交付使用,从而减少了人工大量的干预。

  Docker是一个开源的应用容器引擎,开发者使用打包他们的应用以及依赖包到一个可移植的容器中,然后发布到如何流行的Linux机器上,进而实现虚拟化。

  容器是完全使用沙箱机制的,而且互相之间不会有如何接口,几乎没有性能开销,可以很容易地在机器和数据中心运行,最重要的是,他们不依赖于如何语言、框架或包括系统。

  Docker虚拟化和传统虚拟机(KVM、Xen等)方式的不同之处在于Docker虚拟化可以在操作系统层面上直接实现App或者虚拟化,直接复用本地机器的操作系统,而传统方式则需要在硬件的基础上,虚拟GurstOS操作系统,然后在GuestOS操作系统上部署相关的App应用。

Docker虚拟化实施有以下三个概念:

  • Docker镜像:Docker镜像是一个静态模块,与常见的ISO镜像类似,是一个样板,不能直接修改,可以通过封装生成;
  • Docker容器:基于Docker镜像运行启动的应用或系统,称之为一个Docker容器或Docker虚拟机;
  • Docker仓库:Docker仓库是存放Docker镜像的地方,常见分为公开仓库和私有仓库两种形式;

Docker仓库的用处:

  Docker仓库是Docker镜像的存储仓库。可以推送镜像到docker仓库中,然后在docker客户端,可以从docker仓库中搜索和拉取镜像。

Docker容器是如何工作的:

  一个Docker容器包含了一个操作系统、用户添加的文件和元数据(meta-data)。每个容器都是从镜像建立的,镜像告诉Docker容器内包含了什么,当容器启动时运行什么程序,还有许多配置数据。Docker镜像是只读的,当Docker运行一个从镜像建立的容器,它会在镜像顶部添加一个可读写的层,应用程序可以在这里运行。

Docker用途:简单配置、代码流水管理、开发效率、应用隔离、服务器整合、多租户、快速部署

2、Docker LXC及Cgroup

  Docker虚拟化的由来需要从Docker发展历史来看,最早的Docker技术为LXC+联合文件系统(AUFS)组合。Docker0.9.0版本开始引入libcontainer可以视作LXC的替代品,其中LXC负责资源管理,AUFS负责镜像管理。而LXC包括Cgroup、Namespace、Chroot等组件,并通过Cgroups进行资源管理。

  Docker、LXC、Cgroup三者的关系是Cgroup在最底层落实资源管理。LXC在Cgroup上封装了一层,Docker又在LXC封装了一层。

  Cgroups最初的目标是为资源管理提供一个统一的框架,整合现有的Cpuset等子系统,也为未来开发新的子系统提供接口。

  Linux container容器可以提供轻量级的虚拟化,以便隔离进程和资源,而且不需要提供指令解释机制以及全虚拟化的其他复杂性。容器有效地将由单个操作系统管理的资源划分到独立的组中,以便更好地在独立的组之间平衡有冲突的资源使用需求。

3、Docker虚拟化特点

Docker虚拟化跟传统虚拟化相比,有以下特点:

  • 操作启动快,运行时的性能可以获取极大提升,管理操作(启动、停止、开启、重启等)都是以秒或毫秒为单位的;
  • 轻量级虚拟化,用户会拥有足够的“操作系统”,仅需添加或减小镜像即可,单台服务器上可以部署100~1000个containers容器,而传统虚拟化能虚拟10~20个虚拟机就非常不错了;
  • 开源免费,成本低,由现代Linux内核支持并驱动;
  • 前景及云支持,正在越来越受欢迎,各大主流公司都在推动Docker的快速交付;
  • 更简单的管理,使用Docker只需要小小的修改,就可以替代以往大量的更新工作,所有的修改都以增量的方式被分发和更新,从而实现自动化并且高效的管理;

4、Docker虚拟化原理

  Docker虚拟化中最核心部分为Docker引擎,Docker引擎是一个C/S(client/server)机构的应用;

  Docker server是一个常驻进程,rest API实现了client和server间的交互协议 ,CLI实现容器和镜像的管理,为用户提供统一的操作界面。Docker使用C/S架构,client通过接口与server进程通信实现容器的构建、运行和发布,client和server可以运行在同一台集群,也可以通过跨主机实现远程通信。

Docker镜像作为Docker中最基本的概念,有以下特性:

  • 镜像分层:每个镜像都由一个或多个镜像层组成;
  • 可通过在某个镜像上加上一定的镜像层得到新镜像(此过程可以通过编写DockerFile或基于容器Commit实现);
  • 每个镜像层拥有唯一镜像ID;
  • 镜像在存储和使用时共享相同的镜像层(根据ID),所以在Pull镜像时,已有的镜像层会在自动跳过下载;
  • 每个镜像层都是只读的,即使启动成容器,也无法对其真正的修改,修改只会作用于最上层的容器层。

Docker容器,可以理解为一个或多个运行进程,而这些运行进程将占有相应的内存、相应的CPU计算资源,则通过Docker镜像的镜像层文件来提供。

基于每个镜像的json文件,Docker可以通过解析Docker镜像的惊悚文件,获知应该在这个镜像之上运行什么样的进程,应该为进程配置怎样的环境变量,Docker守护进程实现了静态向动态的转变。

5、Docker安装配置-CentOS7.X系列安装Docker软件

sed -i '/SELINUX/s/enforcing/disabled/g' /etc/selinux/config
setenforce 0
yum -y install epel-release
yum -y install docker*
systemctl start docker

报错:

Job for docker.service failed because the control process exited with error code. See "systemctl status docker.service" and "journalctl -xe" for details.

解决办法:

vi /etc/sysconfig/docker

systemctl start docker
systemctl enable docker
ps -ef |grep docker

Docker下载加速,默认docker下载是从国外去下载,但是下载速度慢,所有我们 这边使用国内的:

cat > /etc/docker/daemon.json <<EOF
{
"registry-mirrors": [
"https://registry.docker-cn.com",
"https://dockerhub.azk8s.cn",
"https://reg-mirror.qiniu.com"
]
}
EOF
systemctl restart docker

6、Dockers必备命令

公共仓库Nginx和CentOS镜像下载以及本地导入CentOS镜像,执行如下命令

docker pull centos             :Docker下载CentOS镜像

docker pull nginx             :Docker下载Nginx镜像

本地导入镜像:

格式:cat 本地容器快照名 | docker import-自定义容器名:自定义标记名

docker version             :查看Docker版本

docker info             :查看当前信息

docker search centos           :搜索可用Docker镜像

docker search -s 500 nginx           :搜索星级为500以上的镜像

docker pull docker.io/nginx           :下载nginx镜像

docker images             :查看当前Docker所有镜像

启动Docker镜像:

-i:表示交互输入 -t:表示打开终端 -d:表示后台启动

docker run -i -t centos /bin/bash

进入Docker容器:

docker exec -it a9ca644fd04f /bin/bash       :红色部分是容器的ID

退出Docker容器:

(1)exit或者ctrl+d :退出并停止容器

(2)先按ctrl+p再按ctrl+q :退出伪终端,容器后台运行

docker ps         :查看容器,-l获得最后一个容器的ID,-a查看所有的容器

docker start id       :启动Docker容器,可以利用docker ps查看容器,然后输入iD

docker stop id         :关闭Docker容器

docker save -o centos-7.2.tar centos:latest         :存储镜像

docker rm id     :删除Docker容器,如果删除多个容器则需要使用空格隔离即可~!

docker rmi id               :删除Dokcer镜像

docker load < centos-7.2.tar           :导入容器快照

docker export -o centos-7.2.test.tar container_id   :Docker导出镜像

cat centos-7.2.test.tar | docker import - centos-7.2.test :本地导入Docker镜像,红色为镜像名,需要自定义

docker run -p 5500:80 -it nginx /bin/bash       :将宿主机5500端口映射给容器的80端口

nginx                        :启动nginx服务

图片显示

1、Docker部署及基础理论相关推荐

  1. Docker 部署 SpringBoot 项目整合 Redis 镜像做访问计数Demo

    Docker 部署SpringBoot项目整合 Redis 镜像做访问计数Demo 最终效果如下 大概就几个步骤 1.安装 Docker CE 2.运行 Redis 镜像 3.Java 环境准备 4. ...

  2. Docker 部署SpringBoot项目不香吗?

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:流星007 链接:toutiao.com/i68433912 ...

  3. docker部署springboot_Docker+SpringBoot快速构建和部署应用

    前言 Docker技术发展为当前流行的微服务提供了更加便利的环境,使用SpringBoot+Docker部署和发布应用,其实也是一件比较简单的事情.当前,前提是得有Docker的基础. 构建一个Spr ...

  4. docker初体验:docker部署nginx负载均衡集群

    Docker 是一个用于开发,交付和运行应用程序的开放平台.Docker 使您能够将应用程序与基础架构分开,从而可以快速交付软件.今天来为大家演示一下docker部署nginx负载均衡集群 环境 ce ...

  5. docker初体验:docker部署nginx服务

    Docker 是一个用于开发,交付和运行应用程序的开放平台.Docker 使您能够将应用程序与基础架构分开,从而可以快速交付软件.今天来为大家演示一下docker部署nginx 环境 centos7 ...

  6. Docker系列 四.Docker部署SpringBoot

    四.Docker部署SpringBoot 环境&工具: 阿里云轻量级服务器.CentOS 7系统.FinalShell(其他连接客户端也可以).IDEA 1. 创建springboot项目 这 ...

  7. Docker部署文档

    Docker部署文档 目录 Docker部署文档 1 一.什么是Docker 3 1.1Docker简介 3 1.2对比传统虚拟机总结 4 1.3Docker通常用于如下场景: 5 1.4基本概念 5 ...

  8. Docker部署Zookeeper集群

    Docker部署Zookeeper集群 官方网站: http://zookeeper.apache.org/ http://zookeeper.apache.org/doc/r3.4.8/zookee ...

  9. 部署go的web应用_使用Docker部署Go Web应用

    为什么需要Docker? 使用docker的主要目标是容器化.也就是为你的应用程序提供一致的环境,而不依赖于它运行的主机. 想象一下你是否也会遇到下面这个场景,你在本地开发了你的应用程序,它很可能有很 ...

最新文章

  1. R语言plotly可视化:plotly可视化多个直方图、通过bingroup参数设置多个直方图使用相同的bins设置(Share bins between histograms)
  2. 应用session对象实现用户登录
  3. body里写注释 postman_快速掌握Postman实现接口测试
  4. 那些决定模型上限的操作
  5. 题目:JavaWeb乐购资源管理系统(附源码链接免费下载)
  6. linux 启动作业,[转载] 随身带着走的作业系统 ~安装Linux作业系统于随身碟~
  7. atitit.web 推送实现方案集合
  8. Anaconda下载及安装详细教程(图文)
  9. RTF文件结构分析及其应用
  10. Java 基础知识总结—String 类
  11. 不属于微型计算机的技术特标,计算机组成原理汇总
  12. Filename too long,Clone succeeded,but checkout failed.
  13. 4G车载信息终端TBOX车联网数据采集智能网联解决方案
  14. python爬千图网高清图片
  15. matlab中如何对一组复数频域信号进行快速傅里叶逆变换
  16. NETDMIS5.0箱体测量——建立零件坐标系2023
  17. 安卓手机如何防盗_安卓手机如何打开.exe文件 安卓手机exe文件怎么打开
  18. 自相关与互相关的理解与物理意义
  19. linux 键盘过滤,键盘过滤驱动程序不responsing
  20. 多元函数的极限,连续,偏导数,全微分之间的关系(学习笔记)

热门文章

  1. Objective-C中的一些特殊的数据类及NSLog的输出格式
  2. 神奇的python(六)之python的串口操作(pyserial)
  3. LeetCode 69. Sqrt(x)
  4. 【AI视野·今日CV 计算机视觉论文速览 第201期】Wed, 19 May 2021
  5. 【AI视野·今日CV 计算机视觉论文速览 第194期】Mon, 10 May 2021
  6. 【ICCV2019】点云相关论文解析
  7. 【机器学习】高斯过程python包安装过程
  8. python 列表数据类型 200221
  9. linux-type命令查看类型
  10. python-循环的入门