目录
序言
一、什么是容器
二、docker入门
2.1安装启动
2.2docker使用
  2.2.1 helloworld
2.2.2 容器
2.2.3 镜像
2.2.4 容器的连接
 
 

序言

  虚拟化一般指的是虚拟机,虚拟机之前是物理机时代。

  首先物理机有以下缺点,1.费用太贵了2.运维以前基于某种os开发,可移植性过低3.物理机可能跑一点应用而已,资源不能有效利用 4.购买物理机需要时间,组装等导致上线速度慢

  那么虚拟技术应运而生,现在是基于Hypervisor,比如VMWare,KVM、,AWS等等。相对物理机我们能装不同的操作系统。

优点:

1.资源有效利用相对物理机,一个os可以运行很多操作系统

2.上线快

3.扩展、伸缩

局限:

1.os内核资源重复消耗资源

2.应用的移植性不高

  所以现在我们基于容器做虚拟化。

一、什么是容器

容器是一种轻量级的,可移植的软件的打包技术,我们需要容器就是因为我们需要它的可移植能力。docker里面先把容器理解为一个虚拟机,好的我们开始吧。

二、docker入门

2.1安装启动


$ sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine

安装一些必要的系统工具:


sudo yum install -y yum-utils device-mapper-persistent-data lvm2

添加软件源信息:


sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

更新 yum 缓存:


sudo yum makecache fast

安装 Docker-ce:


sudo yum -y install docker

启动 Docker 后台服务


sudo systemctl start docker

测试运行 hello-world,这个命令会发现很卡,执行一分钟不动的话就ctr+c退出,我们接下来配置国内镜像加速

 docker run hello-world

现在配置国内镜像

vi /etc/docker/daemon.json 请在该配置文件中加入(没有该文件的话,请先建一个):
{
"registry-mirrors": ["http://hub-mirror.c.163.com"]
}

打开后发现里面内容是{},直接加上去就好了。

现在我们重新运行helloworld

2.2 docker使用

2.2.1 docker helloworld

现在我们跑一个容器,在容器里面输出helloworld,其实就相当于开了个ubanto在里面执行

/bin/echo "Hello world"命令
docker run ubuntu:15.10 /bin/echo "Hello world"

我们也可以弄个交互式,所谓交互式就是我们不是创建了个ubantu容器嘛,我们现在进去里面look一look

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

呐,现在我们就进去了,exit可以退出来。如果想后台启动,加上-d即可,首先它可以这么用的

我们发现这他么没打helloworld,却打印了个长字符,这个就是容器的id

它的后台进程也可以/bin/sh -c “”你的sh脚本”来执行

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

打印出来的也是个容器id

我们 docker ps查看一下运行的容器

复制这个containerId

docker logs 你的容器id或name

  

可以看到容器内输出了一堆的hello world,使用name也是可以的

可以用docker stop+id把这个容器停止了

2.2.2 docker 容器的使用

现在我们用docker搞个web应用,我们在docker容器里面跑一个Python的flask应用~令人怀念的flask啊。

我们使用docker pull 命令可以拉取一个镜像

docker pull training/webapp

现在我们启动容器

 docker run -d -P training/webapp python app.py

之前说过-d是后台,-p是将容器内部的端口映射到主机上面去。

现在我们用docker ps 查看我们现在在运行的容器

这个的意思就是docker开放了5000端口到主机的32768端口,咱访问一下

好的,这样我们就访问到了,但是整天32768也不是个事儿,自己定义5000端口吧

 docker run -d -p : training/webapp python app.py

对了,这个时候是启动了新的容器,原来的容器是没有关掉的

想查看端口的话,docker port+id或者名字挺好。

假如我想看里面运行的python程序的日志

docker logs -f +id

查看docker容器的进程也是top命令,我们用docker top

我们可以用docker inspect查看docker容器的配置和状态信息

现在我们看一下run启动和start(重启)这两个

我们停一下容器,再将它重启。。。慢着,我去哪儿看已经停止的docker容器啊我去

docker ps 下面没了呀我去

好吧,我们先试着下一个命令,docker rm 删除不需要的容器

会发现报错了,因为我们的docker容器还在开着,好吧把他关了

现在就删除成功了

2.2.3 镜像

我们之前run hello-world的时候也看到这一幕

运行容器的时候,如果本地的镜像是不存在的,那么docker自动从docker镜像仓库dockerhub下载

我们用docker images列出所有docker的镜像

  • REPOSITORY:表示镜像的仓库源

  • TAG:镜像的标签,同一个仓库员可以有多个tag版本

  • IMAGE ID:镜像ID

  • CREATED:镜像创建时间

  • SIZE:镜像大小

获取镜像

,我们用docker pull

docker pull ubuntu:13.10

查找镜像,我们用docker search +镜像名称

现在我们创建一个新的镜像,首先我们用之前的镜像做一个容器,然后apt-get update进行更新

docker run -t -i ubuntu:15.10 /bin/bash
apt-get update

完毕后exit退出。现在这个容器被我们改了。我们用docker commit提交它 ,daysn/ubantu:v2是定义的镜像名

docker commit -m="更新的信息 " -a="镜像的作者名" f641b501fc52 daysn/ubantu:v2

现在我们docker images一下

现在我们启动一下我们的这个镜像

我们刚刚用一个已经有的镜像建立了一个新的镜像,现在我们从0开始建立镜像

在路径下新建一个Dockerfile ,vi Dockerfile

开始build,“.”表示拿当前路径的Dockerfile

docker build -t daysn/centos:6.7 .

docker images看一看

参考链接

http://www.runoob.com

微服务-封装-docker by daysn大雄的更多相关文章

  1. 微服务与Docker介绍

    什么是微服务 微服务应用的一个最大的优点是,它们往往比传统的应用程序更有效地利用计算资源.这是因为它们通过扩展组件来处理功能瓶颈问题.这样一来,开发人员只需要为额外的组件部署计算资源,而不需要部署一个 ...

  2. CI Weekly #3 | 关于微服务、Docker 实践与 DevOps 指南

    CI Weekly 围绕『 软件工程效率提升』 进行一系列技术内容分享,包括国内外持续集成.持续交付,持续部署.自动化测试. DevOps 等实践教程.工具与资源,以及一些工程师文化相关的程序员 Ti ...

  3. 微服务架构:基于微服务和Docker容器技术的PaaS云平台架构设计(微服务架构实施原理)

    版权声明:本文为博主原创文章,转载请注明出处,欢迎交流学习! 基于微服务架构和Docker容器技术的PaaS云平台建设目标是给我们的开发人员提供一套服务快速开发.部署.运维管理.持续开发持续集成的流程 ...

  4. 小D课堂 - 新版本微服务springcloud+Docker教程_汇总

    小D课堂 - 新版本微服务springcloud+Docker教程_1_01课程简介 小D课堂 - 新版本微服务springcloud+Docker教程_1_02技术选型 小D课堂 - 新版本微服务s ...

  5. 微服务-网关-node.js by 大雄daysn

    目录 序言 一.node.js入门1.1 下载并安装1.2 从helloworld到一个web应用1.3 Express框架二.node.js搭建网关 三.node.js集群搭建   序言 首先一个问 ...

  6. 微服务SpringCloud+Docker入门到高级实战(教程详情)

    第一章 课程介绍和学习路线 1.微服务架构SpringCloud课程介绍 简介:课程介绍和课程大纲讲解,讲课风格和重点内容理解技巧 2.技术选型和学后水平 简介:课程所需基础和技术选型讲解,学完课程可 ...

  7. 微服务 SpringCloud + docker

    最近看到微服务很火,也是未来的趋势,所以就去学习下 好,接下来我们来认识下spring cloud.一.什么是spring cloud?它的中文官网这样说: 微服务架构集大成者,云计算最佳业务实践. ...

  8. 小D课堂 - 新版本微服务springcloud+Docker教程_1_01课程简介

    笔记 ============================================= SpringCloud课程笔记.txt 第一章 课程介绍和学习路线 1.微服务架构SpringClou ...

  9. 微服务之docker(一)

    一.docker介绍及使用 1.docker简介 (1)Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器或Windo ...

随机推荐

  1. alias用法

    echo 'alias msfconsole="pushd $HOME/git/metasploit-framework && ./msfconsole && ...

  2. Django框架详细介绍---ORM---图书信息系统专题训练

    from django.db import models # Create your models here. # 书 class Book(models.Model): title = models ...

  3. count列表中字符出现的次数

    如何count列表中字符出现的次数?可以将其生成一个字典.key是列表中的字符串,value是出现的次数 例如gen = [2, 3, 4, 5, 6, 7, 3, 4, 5, 6, 7, 8, 4, ...

  4. Why Choose MB SD C5 with Engineer Software

    MB SD C5 with engineer software performed good and now is released. Unlike the old clone C5 which us ...

  5. shell中wait命令详解

    wait命令介绍 wait [作业指示或进程号] 1.等待作业号或者进程号制定的进程退出,返回最后一个作业或进程的退出状态状态.如果没有制定参数,则等待所有子进程的退出,其退出状态为0. 2.如果是s ...

  6. jquery easyui datagrid 将值作为img显示图片时报404 undefined

    原因:datagrid 在请求到数据先进行头部数据和样式的渲染,之后数据 obj = {}  value = undefined  index = 0 进行一次渲染, 在没有formater情况将数据 ...

  7. python爬虫——绕开杂乱无章的代码和堵住请求的302异常(2)

    淘宝那次抓包,居然发现不了要抓的url位置,三星中... 不过不怕,不就是没法快点分析出包嘛,下次用phantomJS硬杠,或者有时间慢慢分析也好. 今天挑战一个稍微好爬的网站:狗搬家(误) 打开后台 ...

  8. element-ui checkbox传默认值的问题

    新入职一家公司了,准备把项目中遇到的问题随时记录下来.以前遇到的问题解决了没有记录,导致面试的时候问项目中遇到那些问题时,好多都忘了. 今天记录一下element-ui 的 checkbox 传递默认 ...

  9. git如何撤销git add操作?

    答: 使用git reset <file name>即可撤销

  10. Learning-Python【1】:交互式环境与变量的使用

    一.执行Python程序的两种方式 1. 交互式环境,打开cmd,输入python2或python3,显示提示符 “>>>”. 特点:输出代码立即执行 优点:调试程序方便 缺点:无法 ...