零、应用背景

先看下面2个问题:

1. 单机多系统。如:windows上跑linux、VPS服务、PaSS服务。

windows上跑linux,一般用VM技术实现。

VPS提供商需要将一台机器划分成多个虚拟机,提供给用户,例如将一台8核16G的物理机器划分成8个1核2G(实际上会比这个少)给8个用户使用,目的是实现用户应用隔离。

PaSS服务提供商同VPS。

问题关键:模拟操作系统、用户应用分隔

2. 应用发布。

为了减少bug出现,要尽量使开发环境和生产环境一样。

比如开发环境采用的是centos6.5 + nginx1.10.2 + php 5.6 + mysql 5.5,那么生产环境就要采取一样的软件环境。如果开发环境做了修改,生产环境最好做一样的修改(主要指安装插件,系统软件版本升级)。

问题关键:环境同步

一、Docker和VM

VM可以很好的解决模拟操作系统、用户应用分隔这两个问题。

Docker可以比VM更好的解决这两个问题 并且 解决环境同步问题。

相比VM,Docker是轻量级的,快速的。

二、Docker的镜像和容器

Docker如何实现VM的功能?使用静态镜像 + 一个动态读写层

从docker的使用方法来看,例如我们想在docker中运行nginx服务。

我们两个思路:

1. 先pull一个centos镜像,再在该镜像上装一个nginx。

2. 直接pull装好nginx的镜像

镜像是容器的运行环境

如果我们采取思路1,pull下一个centos镜像

# docker pull centos

docker的镜像由name:tag组成,上面的命令等价于下载最新的centos

# docker pull centos:latest

如果想下载centos6.8,则可以运行

# docker pull centos:6.8

使用run命令运行一个镜像:

# docker run -it centos /bin/bash

该命令会用centos这个镜像去创建一个容器,相当于在VM里面用镜像创建了一个虚拟机,通过docker ps -a可以看到所有容器。

细心的朋友会发现系统提示符变了,这是因为-it参数,使得容器内部的shell输入输出和当前主机挂钩了,叫做attach。

在容器内部的所有操作只在容器内有效,不会影响宿主主机,也不会影响镜像,因为所有的操作都会作用在读写层上。

如果下次要使用怎么办?可以用docker ps -a找到这个容器的id,使用docker start CONTAINER_ID 运行这个容器,当然上次安装的nginx还在。

如果把这个容器当做开发环境,部署的时候可以采取非常简单的方法,将这个容器发布成镜像即可,在生产环境中导入这个镜像,即可实现环境同步。

docker commit命令可以将容器发布成镜像,可以理解为 读写层的文件和镜像的文件合并成一个新的镜像。

转载于:https://www.cnblogs.com/tinyjian/p/6550693.html

Docker镜像、容器的理解和使用方法相关推荐

  1. Docker镜像原理学习理解

    Docker镜像原理学习理解 一.Docker镜像的组成 1.Docker镜像图层 2.union file system 3.镜像层-bootfs 4.镜像层-rootfs 5.镜像层-依赖环境 6 ...

  2. centos8上docker tomcat容器访问报404解决方法

    目录 [README] [1]docker安装tomcat [2]启动多个tomcat容器 [README] 1.本文记录了 访问docker tomcat容器报404的解决方法: 2.附带安装tom ...

  3. 对Docker镜像layer的理解

    对Docker镜像layer的理解 转自:https://blog.csdn.net/u011069294/article/details/105583522 FROM python:3.6.1-al ...

  4. docker镜像的分层理解,大白话跟你讲

    大家好,今天分享docker镜像的分层理解 我们拉取Redis 镜像 [root@localhost ~]# docker pull redis Using default tag: latest l ...

  5. docker镜像容器创建和保存

    docker镜像容器创建和保存 第一步 创建: 创建容器(此处名为wwy/cuda8:v1.0) 以容器可后台运行方式进入容器 第二步 保存: 开启新的终端 第三步 查看: (前提:ubuntu系统, ...

  6. docker镜像容器的创建删除

    目录 1. Docker是什么? 2. CentOS7用阿里云Docker Yum源在线安装Docker 3. 镜像 3.1 配置加速器 3.2 搜索镜像 3.3 下载镜像 3.4 查看宿主机上的镜像 ...

  7. docker镜像/容器的基本命令

    ** Docker学习 ** docker常用命令 dockers version // 查看docker的版本*** docker info // 显示docker的系统信息,包括镜像和容器的数量* ...

  8. docker 镜像容器导入导出、查看日志、拷贝文件命令

    1. 本地文件拷贝到docker 容器中,参考 docker cp /root/pcl-pcl-1.8.1.tar.gz 7ff95b333e12:/docker cp /root/lib64_a 7 ...

  9. 第一章 docker 镜像,容器,仓库基本命令(二)

    仓库(repository)是镜像存放的地方,目前官方维护了一个公共仓库 https://hub.docker.com; 具体的操作自行百度, 这里我们讨论如何搭建私有仓库 1.拉取仓库 $ dock ...

最新文章

  1. 总是听别人说响应式布局,原来这么简单
  2. 启动Oracle 10g
  3. Linux 最常用的脚本,值得学习收藏!
  4. [译]RabbitMQ教程C#版 - 发布订阅
  5. C++迭代器使用错误总结
  6. python用cmd运行失败_解决python在cmd运行时导入包失败,出现错误信息 ModuleNotFoundError: No module named ***...
  7. pl/sql基础练习
  8. 国内电动车召回12万辆有余 电池衰减和充电故障成头号问题
  9. 读《python核心编程2》笔记 1
  10. SPC统计及控制图系列标准
  11. PCBA方案开发设计—咖啡秤厨房电子秤PCBA方案
  12. 软件测试:APP测试点
  13. 4月上旬国内域名商净增量Top10:联动天下跻身第10
  14. java实现T检验(Ttest)
  15. 推荐一大波让你直呼哇塞的Canvas库
  16. 吴国平:开发旅游小镇是一款养成类游戏 | 十年二十人
  17. 常用卫星遥感影像数据源
  18. 剑魂之刃登录显示服务器异常,《剑魂之刃》更新后链接服务器失败的原因及解决办法...
  19. python 电脑状态_Python实现简单状态框架的方法 -电脑资料
  20. 绝缘子工作温度_在温度下工作

热门文章

  1. 【iOS开发】理解Action、IBACtion、Action Connection
  2. 1025. 反转链表 (25)-浙大PAT乙级真题
  3. java trylock超时_老师,死锁设置超时这个我知道意思,但是您能举个例子么
  4. java通过JDBC驱动连接操作hive实例
  5. webstorm简单介绍,webstrom基本使用
  6. APScheduler——定时任务框架
  7. Linux软件万花筒
  8. [20160704]Block recover using RMAN.txt
  9. Atitit. 真正的全中国文字attilax易语言的特点以及范例
  10. Software Switching优化