为什么要看docker

从去年起就或多或少的接受了docker的熏陶,主要还是Infoq在去年有很多关于docker的实践视频讲座,记得有一篇是《Docker在雪球的技术实践》,当时听的也不是很明白,就萌生了了解docker的想法。

可惜由于工作的关系,一直没有接触到这方面的内容,因此学习的计划也就暂时搁置。直到前不久京东促销买了本docker的书籍、又上网买了本盗版的电子书,想趁着春节好好学习一番,没想到回家就玩了。

直到最近抽出时间读一下《第一本docker书》,就当做先了解了解。

我理解的docker

通过看了前几章的书,以及百度了解,大体上理解了什么是docker。

按照我的理解,docker其实就是一种虚拟化的技术。就像virtualBox,你可以在windows上安装,然后通过不同的镜像装不同的系统。而docker也是差不多,只不过它不是一种操作系统,而是在原生的系统之上直接虚拟出一个容器。这个容器有独立的进程、权限、资源、网络等等。

docker的口号跟java有点像,一次编写,到处运行。因为docker本身作为一种容器,在什么地方安装都是一样的(现在对平台还是有一定要求的),而不管内部装的是什么。

因此开发者只要写代码然后把程序放在容器中运行起来就行;运维人员呢,只需要了解怎么部署docker容器就可以了。

这样就完全解决了,开发完的东西在开发人员自己电脑上好使,到别人电脑上就不好使的问题。

docker能做什么

通过上面的介绍,大致了解docker的生命周期可能是这样的:

  • 构建:构建容器
  • 分发:CI持续集成,部署,镜像
  • 运行:以守护进程的方式运行

那么docker到底都可以做什么呢?

  • 加速本地开发、构建流程
  • 在不同的环境中,得到相同的运行结果
  • 隔离的环境测试
  • 构建Paas

不过需要注意一点的是,docker目前对安装环境还是有一定要求的。比如:

  • 1 64位CPU
  • 2 3.8+内核
  • 3 存储驱动,
  • 4 内核开启cgroup和命名空间

docker的常用命令

运行容器:

sudo docker run -i -t ubuntu /bin/bash

查看容器列表:

docker ps -a

容器命名:sudo docker run --name bob_the_container -i -t ubuntu /bin/bash

重新启动:

sudo docker start bob_the_container

创建守护容器:

sudo docker run --name daemon_dave -d ubuntu /bin/bash -c "while true;do echo hello world; sleep 1;done"

带时间查看日志:

sudo docker logs -ft daemon_dave

查看容器内的进程:

sudo docker top daemon_dave

容器内运行进程:

sudo docker exec -d daemon_dave touch /etc/new_config_file

交互式运行进程:

sudo docker exec -t -i daemon_dave /bin/bash

停止守护进程:

sudo docker stop daemon_dave或者sudo docker stop 43wqihds8324

自动重启容器:

sudo docker run --restart=always --name daemon_dave -d ubuntu /bin/bash -c "while true;do echo hello world; sleep 1;done"

查看容器详细信息:

sudo docker inspect daemon_dave

删除容器:

sudo docker rm 823919fdsfdas3

删除所有容器:

docker rm 'docker ps -a -q'

Docker容器入门的更多相关文章

  1. 自动化集成:Docker容器入门简介

    前言:该系列文章,围绕持续集成:Jenkins+Docker+K8S相关组件,实现自动化管理源码编译.打包.镜像构建.部署等操作:本篇文章主要描述Docker基础用法. 一.Docker简介 1.基础 ...

  2. docker容器入门最佳教程

    为什么要写这个 简单回答是:容器技术非常热门,但门槛高. 容器技术是继大数据和云计算之后又一炙手可热的技术,而且未来相当一段时间内都会非常流行. 对 IT 行业来说,这是一项非常有价值的技术.而对 I ...

  3. Docker容器入门篇

    第1章 Docker简介 1.1 Docker容器介绍 Docker官网:https://www.docker.com/ 什么是docker? Docker 最初是 dotCloud 公司创始人 So ...

  4. Docker容器入门实践

    Docker 是一个开源项目,诞生于 2013 年初,最初是 dotCloud 公司内部的一个业余项目.它基于 Google 公司推出的 Go 语言实现. 项目后来加入了 Linux 基金会,遵从了 ...

  5. Docker容器入门介绍

    1.前言 Docker是一种新兴的虚拟化技术,能够一定程度上的代替传统虚拟机.不过,Docker 跟传统的虚拟化方式相比具有众多的优势.Docker: 本意是码头工人,言外之意是集装箱: Java号称 ...

  6. Docker 容器入门

    1.1 容器简介 1.1.1 什么是 Linux 容器 Linux容器是与系统其他部分隔离开的一系列进程,从另一个镜像运行,并由该镜像提供支持进程所需的全部文件.容器提供的镜像包含了应用的所有依赖项, ...

  7. Docker容器入门之一:部署SpringBoot项目

    一.环境准备:    1.vm虚拟机: Workstation 12 Pro 12.5.7 build-5813279 2.Centos 7 在虚拟机上安装好Centos7系统后,就可以开始准备安装D ...

  8. Docker容器入门-基本命令的使用

    目前容器技术使用相当广泛 不会或者没有使用过容器感觉都不像是个搞技术的 所以,我也就docker相关内容做一个整理 只有不断的学习,才能保持自己的竞争力 什么是容器? 容器是一种轻量级.可移植.自包含 ...

  9. 自动化集成:Pipeline整合Docker容器

    前言:该系列文章,围绕持续集成:Jenkins+Docker+K8S相关组件,实现自动化管理源码编译.打包.镜像构建.部署等操作:本篇文章主要描述流水线集成Docker用法. 一.背景描述 微服务架构 ...

随机推荐

  1. Android Fragment应用实战,使用碎片向ActivityGroup说再见

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/13171191 现在Fragment的应用真的是越来越广泛了,之前Android在3 ...

  2. <<UML大战需求分析>>阅读笔记(2)

    <<UML大战需求分析>>阅读笔记(2)> 此次读了uml大战需求分析的第三四章,我发现这本书讲的特别的好,由于这学期正在学习设计模式这本书,这本书就讲究对uml图的利用 ...

  3. jsQunit

    1:什么是单元测试? 1.1:单元测试又称为模块测试,是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作.单元测试主要是用来检验程式的内部逻辑,也称为个体测试.结构测试或逻辑驱动测试.通常 ...

  4. 谷歌CEO发布年度公开信:专注人工智能等6大业务领域

  5. jquery实现手风琴效果

    html----accordion.html <!DOCTYPE html> <html lang="en"> <head> <meta ...

  6. MySQL的安装配置

    安装配置 MySQL1.官方下载 MySQL2.用 tar 解压.tar.bz 或.tar.gz3.解压后有三个目录,分别为 usr etc var4.进入 usr,进入 bin5.在主机上建个目录( ...

  7. Django学习中的问题总结

    1. 在windows环境下,用pip安装Django后通过在python/Script目录下会生成django-admin.py文件,此时由于pip环境变量已经添加,diango-admin.py与 ...

  8. JQuery按回车提交数据

    引入JQuery文件 <script src="JS/jquery-1.9.1.js" type="text/javascript"></sc ...

  9. 如何使用BHO定制你的Internet Explorer浏览器

    原文出处:Browser Helper Objects: The Browser the Way You Want It一.简介 有时,你可能需要一个定制版本的浏览器.在这种情况下,你可以自由地把一些 ...

  10. js 经典正则判断 一个字符串是否包含另一个字符串

    if (!new RegExp(list_table[i].value.split("—")[0]).test(lhtj)) { }判断在lhtj中是否包含list_table[i ...