Docker与容器和虚拟机

Docker跟虚拟机有什么区别啊?这个问题可以拆成两部分。因为Docker并不是什么完全独创的技术,而是属于很早便有了的容器技术,所以第一个问题就是容器与虚拟机的区别?同属于容器技术,Docker的兄弟姐妹还有Solaris Zones、BSD jails、LXC等。但Docker现在这么火,自然有它的独到之处,所以第二个问题就是Docker与其他容器的区别?

关于第一个问题比较简单,容器是一种轻量级的虚拟技术。它不像虚拟机那样具有一套完整的CPU、内存和磁盘,对操作系统有绝对的权限。容器和宿主主机共享内核,所有容器共享操作系统,在一台物理机上可以运行成百上千的容器。第二个问题稍麻烦一些,与LXC相比,Docker对配置进行了抽象,使应用在任何平台上的运行环境都一致。同时提供了版本控制、镜像托管等类似Git的现代化设施和生态圈。

总体来看,Docker的应用场景有:

  • 加速本地开发:快速搭建好开发环境和运行环境。
  • 自动打包和部署应用。
  • 创建轻量级的私有Paas环境。
  • 自动化测试和持续集成。
  • 创建安全沙盒。

Docker的基本使用
1 安装
使用apt-get安装(非最新版本,我的是Version:1.13.1)
sudo apt-get install docker.io

启动docker服务: sudo service docker start

关闭docker服务: sudo service docker stop

查看docker是否运行:
sudo service docker status
查看docker版本:
sudo docker version

可以进入root模式 su root。

2 搜索并下载一个可用镜像(这里是tutorial)
docker search tutorial
上面的命令将返回tutorial镜像的全名是learn/tutorial,然后下载镜像:
docker pull learn/tutorial

3.启动镜像并输出hello world
有了镜像,就可以通过镜像启动容器,并且在容器中做相关操作:
docker run learn/tutorial echo "Hello World!"

4.查看容器

$ docker ps -a

CONTAINER ID        IMAGE               COMMAND          CREATED                   STATUS                               PORTS                NAMES
a30ac45dddaa   learn/tutorial   "echo hello"   35 seconds ago    Exited (0) 33 seconds ago                          pedantic_lewin
。。。

列出所有容器 docker ps -a

最后一次运行的容器 docker ps -l

5.安装ping
在这个容器中是不能直接使用ping命令的,所以需要安装:
docker run learn/tutorial apt-get install -y ping

在执行apt-get 命令的时候,要带上-y参数。如果不指定-y参数的话,apt-get命令会进入交互模式,需要用户输入命令来进行确认,但在docker环境中是无法响应这种交互的。

然后查看最新的container,获得安装完ping命令之后容器的id
$ docker ps -l

CONTAINER ID      IMAGE                  COMMAND                   CREATED                          STATUS                        PORTS               NAMES
3ff336e137a2   learn/tutorial    "apt-get install -y    3 minutes
ago       Exited (0) 3 minutes ago                                jovial_tesla

当你对某一个容器做了修改之后(通过在容器中运行某一个命令),可以把对容器的修改保存下来,这样下次可以从保存后的最新状态运行该容器。docker中保存状态的过程称之为committing,它保存的新旧状态之间的区别,从而产生一个新的版本。

1. 运行docker commit,可以查看该命令的参数列表。

2. 你需要指定要提交保存容器的ID。

3. 无需拷贝完整的id,通常来讲最开始的三至四个字母即可区分。

有了CONTAINER ID,就可以保存这个安装了ping的image了(这里保存为learn/ping):
docker commit 3ff336e137a2 learn/ping
3fed5e9fbe3d646fa39423f7edaa9d279adb6b26bf12491be56d17701e1fb4c5
返回的是新的镜像id。

列出镜像 docker images

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
learn/ping          latest              c57c9021d858        17 hours ago        139 MB
learn/tutorial      latest              a7876479f1aa        4 years ago         128 MB

到现在为止,已经建立了一个完整的、自成体系的docker环境,并且安装了ping命令在里面。它可以在任何支持docker环境的系统中运行啦!

使用新镜像启动容器并使用ping命令:docker run learn/ping ping www.baidu.com

PING www.a.shifen.com (111.13.100.92) 56(84) bytes of data.
64 bytes from 111.13.100.92: icmp_req=1 ttl=50 time=29.1 ms
64 bytes from 111.13.100.92: icmp_req=2 ttl=50 time=23.5 ms
64 bytes from 111.13.100.92: icmp_req=3 ttl=50 time=49.1 ms
。。。

6.检查container

使用docker ps命令可以查看所有正在运行中的容器列表,使用docker inspect命令我们可以查看更详细的关于某一个容器的信息。
首先找到container的id:
docker ps -a
查看该container:
docker inspect container id

7.发布自己的镜像
docker push learn/ping
镜像只能发布到自己的空间,因此是需要账户名和密码的。

docker 学习(1)的更多相关文章

  1. Docker学习总结

    本文作为总结性文章,不会详细讲解Docker.但会把已学习的.了解的内容按照由易到难的顺序串起来,更多的是帮助Docker新手快速的了解Docker,知道目前处在哪个阶段,接下来该学些什么,避免碰太多 ...

  2. Docker学习笔记 — 配置国内免费registry mirror

    Docker学习笔记 — 配置国内免费registry mirror Docker学习笔记 — 配置国内免费registry mirror

  3. docker学习笔记1 -- 安装和配置

    技术资料 docker中文官网:http://www.docker.org.cn/ 中文入门课程:http://www.docker.org.cn/book/docker.html docker学习笔 ...

  4. docker学习资料整理(持续更新中..)

    docker最近可以说火得一踏糊涂,跟 51大神在交流技术的时候这个东西会多次被提到,当我们还玩vm+linux/freebsd的时候,人家已经上升到更高层次了,这就是差距,感觉好高大上的样子,技术之 ...

  5. Docker学习笔记之一,搭建一个JAVA Tomcat运行环境

    Docker学习笔记之一,搭建一个JAVA Tomcat运行环境 前言 Docker旨在提供一种应用程序的自动化部署解决方案,在 Linux 系统上迅速创建一个容器(轻量级虚拟机)并部署和运行应用程序 ...

  6. Docker学习总结之Run命令介绍

    Docker学习总结之Run命令介绍 本文由Vikings(http://www.cnblogs.com/vikings-blog/) 原创,转载请标明.谢谢! 在使用Docker时,执行最多的命令某 ...

  7. docker~学习笔记索引

    回到占占推荐博客索引 使用docker也有段时间了,写了不少文章与总结,下面把它整理个目录出来,方便大家去学习与检索! docker~学习笔记索引 docker~linux下的部署和基本命令(2017 ...

  8. Docker学习笔记 - Docker容器内部署redis

    Docker学习笔记(2-4)Docker应用实验-redist server 和client的安装使用 一.获取redis容器(含客户端和服务端) 二.创建服务端容器 1.在终端A中运行redis- ...

  9. docker学习笔记(一)—— ubuntu16.04下安装docker

    docker学习笔记(一)—— ubuntu16.04下安装docker 原创 2018年03月01日 14:53:00 标签: docker / ubuntu 1682 本文开发环境为Ubuntu ...

  10. Docker 学习8 Dockerfile详解2

    一.继续上章节Docker学习7 CMD命令后. 11.ENTRYPOINT a.容器启动后相当于会启动ENTRYPOINT + CMD 命令,CMD相当于参数传给entrypoint的 [root@ ...

随机推荐

  1. wcf问题集锦

    1.处理程序“svc-Integrated”在其模块列表中有一个错误模块“ManagedPipelineHandler” HTTP 错误 404.3 - Not Found 由于扩展配置问题而无法提供 ...

  2. hibernate自动建表技术_采用数据库反向生成技术

    1.首先使用oracle创建一个用户: 登陆sqlplus,并以sysdba登陆到数据库: 2.创建一个用户,并对此用户授予connect,resource两个角色的权限: 3.连接到hibernat ...

  3. swift 2特性记录

    swift 团队一直在优化,让大家准备在秋天的时候,迁移到swift2做准备. 一.错误处理 异常处理,不是NSError对象和双指针. 可以使用 throws   来指定方法来抛出一个错误. 调用d ...

  4. vue-extend 选项

    vue-extend 选项 mixins 和extend 很相似,但有区别: var extendNews={ //后来的内容用变量接收 updated:function(){ console.log ...

  5. CSS中box-sizing属性的作用

    今天在项目中看到box-sizing这个属性,以前用过,但是不常用!注意,它是CSS3里的属性喔! W3C 盒子模型:标准盒模型,是指块元素box-sizing属性为content-box的盒模型.一 ...

  6. 观察者模式(Observe Pattern)

    观察者模式: 当对象存在一对多关系时,使用观察者模式(Observe Pattern).例如:当一个对象被修改时,会通知它的依赖对象. 介绍: 1.意图:定义对象的一种一对多的依赖关系,当一个对象的状 ...

  7. 再回首win98

    因为一个软件只能运行在win98上,所以上个win98虚拟机. 下载的是经典的Win98.SE.iso 307M. 真是小巧呀,感慨现在的win8.1的3.69G,真是没法比. 原来是没有用过老古董的 ...

  8. 利用临时表实现CTE递归查询

    一.CTE递归查询简介 --CTE递归查询终止条件在TSQL脚本中,也能实现递归查询,SQL Server提供CTE(Common Table Expression),只需要编写少量的代码,就能实现递 ...

  9. cms-详细页面-1

    cms-详细信息页面设计思路:点击主页面然后查询详细信信,把查询出来的数据放大modelandvie里面,然后返回前台,然后在跳转页面取出来显示:代码:mapper: <?xml version ...

  10. windows环境下Nginx部署及Https设置

    一.Nginx安装部署及常用命令. 1.1.其实Nginx是免安装的.直接在官网下载zip包,解压即可,下载地址:http://nginx.org/en/download.html,因为我这边的开发服 ...