什么是Docker?

docker是一个基于LXC容器技术的管理工具,提供一系列更强的功能,如可移植性(定义了标准,可以在任意主机运行)、自动化构建(dockerfile)、版本控制、镜像管理等。

docker提供应用程序的自动化部署解决方案,能够迅速创建一个容器,并在容器上部署和运行应用程序,通过配置文件(Dockerfile)可以轻松实现应用程序的自动化安装、部署和升级。

Docker优点?

1.轻量级资源,容器是在进程级别隔离,并使用宿主机的内核,而不需要虚拟化整个操作系统。不需要虚拟化和系统调用复杂的操作。因此节省了很大的额外开销。不需要额外的hypervisor(虚拟化技术)支持,不需要虚拟硬件,不需要额外完整的系统。

2.可移植性,所需要的应用都在容器中,可以在任意一台docker主机上运行

3.可预测性,宿主机和容器相互不关心对方都运行什么。只考虑所需的接口标准化。

相关组件及功能?

1.lxc,Linux Container的简写,lxc是一种内核虚拟化技术,与宿主机共享内核,用namespace和cgroup实现资源隔离。lxc是linux内核一个特性,它允许进程或进程组运行在一块独立的空间,并能对其控制。并实现容器与宿主机资源共享。

2.cgroup,lxc是cgroup的管理工具。限制进程或进程组使用的系统资源管理。提供类似文件的接口,非常方便配置。

3.namespace,cgroup是namespace的用户空间的管理接口。并对进程或进程组之间隔离,如果net、mnt、pid、user等。

4.aufs(AnotherUnionFS),支持将不同目录挂载到同一个虚拟文件系统。docker容器分为只读的镜像层与上面可写层,AUFS实现在可写层上进行增量的修改(增量文件系统)。

在docker中,只读层及在顶部的读写层的组合被称为Union File System,UFS(联合文件系统),目前支持的联合文件系统种类包括 AUFS、btrfs、vfs和DeviceMapper。

5.chroot,使容器运行在指定的目录内。

组件之间关系?

cgroup是在底层实现资源管理,lxc在cgroup上封装了一层,docker又在lxc封装了一层。

工作方式?

当我们启动一个docker容器时,docker会加载只读镜像,并在其上添加一个读写层(将镜像目录复制一份到/var/lib/docker/aufs/mnt以ID为目录下,我们可以使用chroot进入此目录,与容器里面的目录一样)。如果运行中的容器修改现有的一个已经存在的文件,那该文件将会从读写层下面的只读层复制到读写层,该文件的只读版本仍然存在,只是已经被读写层中的该文件的副本所隐藏,当删除docker容器,并通过该镜像重新启动时,之前的更改将会丢失。


博客地址:http://lizhenliang.blog.51cto.com

Docker安装与使用:

操作系统:Ubuntu14.04_x64

1、添加秘钥

$ sudo apt-key adv --keyserver hkp://pgp.mit.edu:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D

2、添加docker源

$ sudo vi /etc/apt/sources.list.d/docker.list

# Ubuntu Precise

deb https://apt.dockerproject.org/repo ubuntu-precise main

# Ubuntu Trusty

deb https://apt.dockerproject.org/repo ubuntu-trusty main

# Ubuntu Vivid

deb https://apt.dockerproject.org/repo ubuntu-vivid main

# Ubuntu Wily

deb https://apt.dockerproject.org/repo ubuntu-wily main

注意:通过命令lsb_release -c查看上面对应的版本,不要都添加上

3、更新索引

$ sudo apt-get update

4、安装docker

$ sudo apt-get install docker-engine

5、下载Ubuntu镜像

#默认下载最新版

$ sudo docker pull ubuntu

#如果想下载14.04版本的,可以这样指定

$ sudo docker pull ubuntu:14.04

6、在镜像里打印hello

$ sudo docker run ubuntu /bin/echo hello

打印出hello说明你已经成功安装docker并启动一个容器!

7、熟悉下常用命令

#查看docker环境信息

$ sudo docker version

# sudo docker -D info

#在仓库中搜索相关的镜像

$ sudo docker search centos

#查看已下载的镜像

$ sudo docker images

#启动镜像并进入容器

$ sudo docker run -itd --name=ubuntu ubuntu

run命令选项:

-t 模拟一个终端,-i进入这个容器,一般结合使用创建一个交互式容器。

-d 后台运行容器并打印ID,如果不加-i后面就不能附加进入容器

--name 为容器指定名称

run命令选项很多,先不过多介绍,在使用中你会慢慢了解到!

此时你已经创建并进入容器,怎么能退出呢?

# 按ctrl+d退出容器,会暂停容器,可以再启动(sudo docker start ID/NAME),里面数据不会丢失。

# 退出暂停容器太不符合常理啊!那么按ctrl+p+q退出docker,将不会暂停

#紧接查看运行的容器

$ sudo docker ps

#这时想进入某个容器可通过ps查看的ID进入运行的容器

$ sudo docker attach ID/NAME

#关闭运行的容器(start/restart)

$ sudo docker stop ID

#关闭所有运行的容器

$ sudo docker kill $(sudo docker ps -q)   #-q只显示ID

#删除一个容器

$ sudo docker rm ID/NAME

#删除所有容器

$ sudo docker rm $(sudo docker ps -q)

#删除一个镜像

$ sudo docker rmi ID

#查看Docker操作日志

$ sudo docker ps -a

#查看容器日志

$ sudo docker logs ID/NAME

#查看容器配置详细信息

$ sudo docker inspect ID

此时,会返回一个json格式信息,我们可以获取指定的信息,比如获取IP地址:

$ sudo docker inspect -f '{{.NetworkSettings.IPAddress}}' ID

#列出容器内容文件状态变化情况

$ sudo docker diff ID

注:A - Add,D - Delet , C - Change

#查看容器资源使用情况

$ sudo docker stats

#免交互执行命令

$ sudo docker exec ID/NAME command

通过这篇博文,你已经对docker初步认识,可以很轻松的来管理容器了!

后续紧接会更新docker进阶内容,欢迎关注,谢谢支持!

Docker介绍与安装使用(一)相关推荐

  1. Docker介绍及安装

    Docker介绍 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制, ...

  2. Docker 介绍、安装、基础搭建 --01

    1. Docker介绍 1.1 是容器,可以部分完全封闭.封闭意味:一个物质(放到容器),另一个物质(放到容器)隔离             容器可以保护里面的物质      1.2 容器的前世   ...

  3. docker介绍和安装以及常用命令

    介绍 Docker是基于Go语言实现的云开源项目. 一次镜像,处处运行 传统的部署项目环境配置相当麻烦,换一台机器,就要重来一次,费力费时. Docker的主要目标是"一次镜像,随处运行&q ...

  4. docker 介绍、安装、阿里云加速

    docker介绍 Docker是一个Client-Server结构的系统,Docker守护进程运行在主机上,然后通过Socket连接从客户端访问,守护进程从客户端接收命令并管理运行在主机上的容器. C ...

  5. Docker之Docker介绍及安装配置

    为什么Docker? 引用官方定义:Docker是以Docker容器为资源分割和调度的基本单位,封住整个软件运行时环境,为开发者和系统管理员设计的,用于构建.发布和运行分布式应用的平台.他是一个跨平台 ...

  6. Linux中Docker的介绍、安装与卸载

    1.介绍 Docker是一个开源的应用容器引擎,诞生于2013年初,基于Go语言实现,dotCloud公司出品(后改名为Docker Inc).Docker可以让开发者打包他们的应用以及依赖包到一个轻 ...

  7. ActiveMQ此例简单介绍基于docker的activemq安装与集群搭建

    ActiveMQ拓展连接 此例简单介绍基于Docker的activemq安装与集群搭建 一 :安装 1.获取activemq镜像 docker pull webcenter/activemq 2.启动 ...

  8. 「docker实战篇」python的docker爬虫技术-在linux下mitmproxy介绍和安装(四)

    原创文章,欢迎转载.转载请注明:转载自IT人故事会,谢谢! 原文链接地址:「docker实战篇」python的docker爬虫技术-在linux下mitmproxy介绍和安装(四) 上次说了fiddl ...

  9. 3.10 docker---概念介绍,安装和初识docker,docker的一些基本命令,使用docker部署一个nginx,

    一.docker介绍 Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源. Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后 ...

最新文章

  1. 2022-2028年中国硅质原料行业全景调研及投资前景展望报告
  2. 客快物流大数据项目(五):Docker介绍
  3. android xml opacity,Android Drawable详解
  4. hashmap时间和空间复杂度_Python算法 00--时间复杂度和空间复杂度
  5. Oracle 生成随机密码
  6. 云计算在未来一定是不可或缺的
  7. 00058 imp_IMP-00058: ORACLE error 12154 encountered
  8. 转行进入测试一年有感
  9. ExtJS--Combobox多选相关(1)
  10. Linux学习笔记四:OTG方式为itop4412烧写安卓系统
  11. 人民日报:研究生期间该懂的47件事,你认可吗?
  12. Cesium:地球中实现点击浮动弹窗
  13. 漂亮的抽奖C#源代码
  14. c语言实现生成彩票随机号
  15. DirectX终极游戏开发指南引擎源码分析
  16. 中石油邮箱pop3服务器,手机客户端访问中油邮箱设置
  17. Structure SLAM 相关论文阅读(一):消影点/消失点/灭点检测提取
  18. python中上标星号怎么打_Python中参数前加星号的用法
  19. solaris9 x86安装D-LINK DFE-530TX网卡
  20. webpack常见面试题

热门文章

  1. C++基类与派生类的转换与多态性
  2. 找不到 javax.servlet.http.HttpServletResponse 和 javax.servlet.http.HttpServletRequest 问题解决...
  3. css_position
  4. switchcase的用法
  5. QHBoxLayout
  6. 解决Java compiler level does not match the version of the installed Java project facet.问题
  7. 《25项最优时间管理工具与技巧》
  8. SQL Cookbook:一、检索记录(13)按模式搜索
  9. 不错的博 2010-02-07
  10. P2502 [HAOI2006]旅行 最小生成树