关闭

学习Docker(2017-10-5)

标签: Docker
234人阅读 评论(0) 收藏 举报
分类:

本节目录:
- 镜像的实现原理
1. 操作 Docker 容器
- 启动容器
- 后台(background)运行
- 终止容器
- 进入容器
- 导出和导入容器
- 删除容器
- 清理所有处于终止状态的容器

镜像的实现原理

Docker 镜像是怎么实现增量的修改和维护的?每个镜像都由很多层次构成,
Docker 使用 Union FS 将这些不同的层结合到一个镜像中去。

通常 Union FS 有两个用途:
1. 一方面可以实现不借助 LVM、RAID 将多个 disk 挂到同一个目录下

  1. 另一个更常用的就是将一个只读的分支和一个可写的分支联合在一起,Live CD 正是基于此方法可以允许在镜像不变的基础上允许用户在其上进行一些写操作。Docker 在 AUFS 上构建的容器也是利用了类似的原理。

关于 UFS

操作 Docker 容器

容器是 Docker 又一核心概念

容器对应虚拟机可以理解为模拟运行的一整套操作系统(提供了运行态环境和其他操作系统)和跑在上面的应用。下面学习容器的创建、启动和停止等

启动容器

  1. 基于镜像创建一个容器并启动
  2. 将在终止状态(stopped)的容器重新启动

实例1:

docker run ubuntu:14.04 /bin/echo 'Hello world' Hello world

docker run -t -i ubuntu:14.04 /bin/bash

-t 选项让 Docker 分配一个伪终端,并绑定到容器的标准输入上,-i 则让容器的标准输入保持打开,进入交互终端,用户可以通过所创建的终端来输入命令,

当利用 docker run 来创建容器时, Docker 在后台运行的标准操作包括:
1. 检查本地是否存在指定镜像,不存在就从公有仓库下载 利用镜像创建并启动一个容器
2. 分配一个文件系统,并在只读的镜像层外面挂载一层 可读写层
3. 从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去,从地址池配置一个 ip 地址给容器
4. 执行用户指定的应用程序
5. 执行完毕后容器被终止

关于 pwd

实例2:
利用 docker start 命令,直接将一个已经终止的容器启动运行。

容器的核心是为所执行的应用程序,所需要的资源都是应用程序运行所必须的。在终端中利用 pstop 来查看进程信息。

可见,容器中仅运行了指定的 bash 应用。这种特点使得 Docker 对资源利用率极高,体现了 Docker 轻量级虚拟化

top:

后台(background)运行

通常的时候需要让 Docker 在后台运行,而不是直接将执行结果输出在当前宿主机下。此时,可以通过添加 -d 参数来实现

实例:

docker run ubuntu:14.04 /bin/sh -c "while true; do echo hello world; sleep 1; done"

容器会把输出的结果打印到宿主机上面

使用 -d参数运行容器

docker run -d ubuntu:14.04 /bin/sh -c "while true; do echo hello world; sleep 1; done"

使用 -d 参数启动后会返回一个唯一的 id ,也可以通过 docker ps 命令来查看容器信息

要获取容器的输出信息,可以通过 docker logs [container ID or Names]

终止容器

使用 docker stop 命令来终止一个运行中的容器
终止状态的容器可以用 docker ps -a 命令看到。

现在我们可以用我们刚才讲的docker start 重启结束的容器

docker restart 可以结束正在运行的容器,然后重新启动

进入容器

在使用 -d 参数时,容器启动后进入后台。某些时候需要进入容器进行操作:
1. attach 命令
2. nsenter 命令

实例1:
attach 命令

当多个窗口同时 attach 到同一个容器的时候,所以窗口都会同步显示。当某个窗口因命令阻塞时,其他窗口也无法执行操作。

实例2:
nsenter 命令

书上介绍的都是 Linux 系统下进行的,因为自己电脑上 windows 这一部分,先暂停

导出和导入容器

导出容器
导出本地容器

docker ps -a

查询已经停止的容器 ID

docker export commitID > xxx.tar


导入容器快照

实例:

docker import - test/ubuntu:v1.0

删除容器

docker rm命令删除处于终止状态的容器。 -f 强制删除容器,用在运行的容器中。

清理所有处于终止状态的容器

docker rm &(docker ps -a -q)

注意;这个命令其实会尝试删除所有的包括还运行中的容器,不过就像上面提过的 docker rm 默认不会删除运行中的容器

0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

非常详细的Docker学习教程

一、Docker 简介 Docker 两个主要部件: Docker: 开源的容器虚拟化平台 Docker Hub: 用于分享、管理 Docker 容器的 Docker SaaS 平台 --...
  • zmx729618
  • zmx729618
  • 2017-06-08 17:50
  • 3081

Docker学习总结(5)——超实用Docker入门学习教程

Docker是什么 Docker是一种容器技术,它可以将应用和环境等进行打包,形成一个独立的,类似于iOS的APP形式的“应用”,这个应用可以直接被分发到任意一个支持Docker的环...
  • u012562943
  • u012562943
  • 2016-05-31 09:50
  • 9358

Windows平台上Docker安装与使用

1.在windows平台上安装dockerWindows平台上的docker的安装包含docker在Windows平台上运行的所有的依赖包,这里最主要介绍安装前需要考虑的因素和在Windows平台上怎...
  • jiang_xinxing
  • jiang_xinxing
  • 2017-06-01 07:35
  • 1620

Java基础语法试卷5(2017/10/16 第一阶段考试)

一、选择题(以下选项中,ABCD四项中至少有一项或多项是正确的(多选、少选、错选均没分),共30题,每题2分,共60分) 1、Java源文件和编译后的文件扩展名分别为( ) A、.clas...
  • Miracle_xing
  • Miracle_xing
  • 2017-10-16 22:37
  • 159

docker学习笔记10:外部通过ssh访问centos容器

1、使用 docker pull 命令从仓库获取所需要的镜像,我用的是centos7.2; 2、用上一步下载的镜像创建容器,并进入交互模式;docker run -ti centos7.2 /bin...
  • xlemonok
  • xlemonok
  • 2017-05-26 14:09
  • 220

Python学习零散杂记(2017-10-28)

01.变量分大小写 02.del 列表应从后往前。 03.类中的函数称为方法 ;你前面学到的有关函数的一切都适用于方法。(个人理解,类中的函数在实例里是方法,比如my_dog.sit()) 04...
  • weixin_39449570
  • weixin_39449570
  • 2017-10-28 18:49
  • 49

第1124期AI100_机器学习日报(2017-10-16)

AI100_机器学习日报 2017-10-16 理解情感 :从 Keras 移植到 pyTorch @wx:钱曙光深度神经网络机器翻译 @wx:Ian Goodfellow推荐:GAN生成...
  • ai100_ml
  • ai100_ml
  • 2017-10-17 23:04
  • 177

第1113期AI100_机器学习日报(2017-10-05)

AI100_机器学习日报 2017-10-05 爱奇艺视频场景下的自然语言处理应用 @蚁工厂基于Xgboost + LR + Keras 建模评估用户信用状态 @wx:人工神经网络和生物神经...
  • ai100_ml
  • ai100_ml
  • 2017-10-17 00:05
  • 44

2017 年深度学习 10 个趋势预测

原文链接:http://www.iteye.com/news/31989 引用 原文:10 Deep Learning Trends and Predictions for 2017 ...
  • zhixiongzhao
  • zhixiongzhao
  • 2017-06-03 16:24
  • 598

C语言学习内容总结 2017/10/17

C语言
  • weixin_40316053
  • weixin_40316053
  • 2017-10-20 21:49
  • 63
    个人资料
    • 访问:5572次
    • 积分:366
    • 等级:
    • 排名:千里之外
    • 原创:28篇
    • 转载:1篇
    • 译文:1篇
    • 评论:1条
    最新评论
  • 菜鸟Python(3)

    bigdatazjh: 博主您好,我按照这个步骤自己实现了下,结果报错:“Unable to create record: ...