Docker

虚拟化技术

通俗的讲:就是一个为了简化管理,优化资源的解决方案。就是把物理资源转变为逻辑上可以管理的资源,可以扩大硬件的容器,简化软件的重新配置过程。

虚拟化与虚拟机最大的区别:

虚拟化技术计算元件,资源申请调度到其他硬件服务器。
腾讯云、阿里云就是虚拟化,申请时只需要提交CPU、内存、硬件、网卡带宽需求,提交到后端硬件服务器,通过计算机原件实现资源调度。
Docker最早为LXC(LXC为Linux Container的简写。可以提供轻量级的虚拟化,以便隔离进程和资源,而且不需要提供指令解释机制以及全虚拟化的其他复杂性)+AUFS组合,docker0.9.0版本开始引入libcontainer,可视为LXC的代替品。其中LXC负责资源管理,AUFS负责镜像管理;而LXC包括 cgroup、namespace、chroot等组件,并通过cgroup进行资源管理。

从资源管理来看

docker、lXC、Cgroup三者关系:Cgroup在最底层落实资源管理,LXC在Cgroup上封装了一层,docker又在LXC上封装了一层
*Cgroup:(限制系统资源的)control group的缩写,是Linux内核提供的一种可以限制、记录、隔离进程组(process groups)所使用的资源。
docker不是新兴技术,它是基于LinuxContain(Linux自带软件),作用可以做资源隔离。
为什么还需要docker
因为可以更好的隔离和管理

Docker是什么

docker 一个新兴的虚拟技术,是一个开源的应用容器引擎,基于谷歌Go语言开发实现,属于系统层面的虚拟化技术
为什么又叫容器呢?
就相当于货轮上的集装箱,集装箱里存不同的货物。
而docker:容器是docker重要概念,一个容器就是一个App,容器里可以是Python,Java,PHP。最重要的是容器之间是隔离的,也就是说容器之间是不受任何影响的,这是docker的核心所在

一句话来说:

docker是一个平台,平台上面可以装很多容器,容器里面再放各种应用

Docker优点

可以让开发者打包他们的应用以及依赖包到一个轻量级,可移植的容器中,然后发布到任何安装docker的电脑上

Docker能做什么

docker可以解决虚拟机能够解决的问题,同时也能够解决虚拟机由于电脑资源要求过高无法解决的问题,可以直接基于这个系统启动App。可以将Web/App系统打包成镜像,类似ISO镜像,将镜像文件移植到其他系统上。
虚拟机缺点:
传统的虚拟机是在硬件的基础上,虚拟出的系统,再在系统上部署相关的App应用,传统的虚拟机想要实现nginx,需要先安装一个虚拟机,然后在虚拟机上安装nginx。如果想开多个应用 就需要安装多个操作系统,大家都知道操作系统是很浪费资源的
                            虚拟机
2.33.png
docker
docker 基于宿主机,docker安装好想要运行php应用,就建立一个php环境,环境安装完在安装PHP应用,docker引擎就相当于一个货轮,货轮里装的是容器,容器里装的是应用和应用环境
                            docker
6.21.png

不同点

docker引擎相当于虚拟机管理程序,省去了虚拟操作系统,之所以说dock二是轻量级的,原因就在这。因为操作系统的硬件资源是非常非常多的

为什么要使用docker

1.更快速的交付和部署
对开发和运维人员来说,最希望就是一次创建或配置,可以在任意地方正常使用
例如:开发者可以使用一个标准的镜像构建一套开发容器,开发完成之后,运维人员可以直接使用这个容器部署代码。
2.更轻松的迁移和扩展
Docker 容器几乎在任意的平台上运行,包括物理机,虚拟机,公有云,私有云,个人电脑,服务器等等,这种兼容性可以让用户把一个应用程序从一个平台直接迁移到另外一个。前提是:必须安装docker
3.更高的资源利用率
一台主机可以同时运行数千个docker容器,容器除了运行其应用外,基本不消耗系统资源,使得应用的性能很高,同时系统的开销尽量小。
传统的虚拟机方式运行10个不同的应用就要起10个虚拟机,而docker只需要启动10个隔离的应用容器即可。

实现docker虚拟化技术需要具备三个条件:

镜像:模板,Dock二虚拟化基于系统、程序、静态,不能修改,ISO文件也不能直接修改
容器:称为docker虚拟机,基于镜像运行的实体,也就是说把镜像跑起来,就变成了容器。
镜像就像面向对象中的类一样,而容器就是实例
仓库:存放镜像的地方,共有,所有。与git架构类似

总结

docker背后的想法是创建软件程序可移植的轻量级容器,让其可以在任何安装了docker的机器上运行,并不关心底层操作系统,就像造船者创建的集装箱而不需要考虑在那种船上一样。
简化部署流程,提高生产力

Docker项目架构

docker使用c/s架构,通过docker客户端连接到Docker服务器上从而管理Docker服务器里面的镜像和容器,类似git的架构
5106.png
5.3e6.png
5255.png

docker基本命令

查看版本
docker version
3426.png

测试镜像

docker run hello-world
如果出现下图信息则安装成功
dfdfdf.jpg

设置加速器

作用:让下载速度更快

加速器有阿里云,163等。我用的阿里云镜像
http://dev.aliyun.com
点击>>>管理中心>>>镜像加速器

这是下载镜像的地址(mac)
234224.png
然后点击docker图标,preferences >>> deamon
49.png

下载镜像可以通过https://hub.docker.com

eg:下载通过python写的Webapp
34.46.png
docker pull training/webapp
busybox
busybox:是一个集成了三百多个最常用的Linux命令和 工具的软件,减缓版的Linux。
docker pull busybox
下载Ubuntu
docker pull ubuntu:16.04
查看本地镜像
docker images ls

docker images 

依次为:镜像的名字、版本、ID号、创建时间、大小


23455.png

查看CPU

free  -m

top

查看磁盘分区

df -h
df -i 
删除一个或多个镜像
docker images rm ID号或者镜像名字  ID号或者镜像名字  ... 

wrewer5.png

Docker 容器操作

/bin/bash是Linux的命令行工具,类似window的cmd进入dos系统

查看已经启动的容器

docker ps

查看所有容器(包含没有启动的容器)

docker ps -al
wer41.png

启动容器

启动容器有两种方式,一种是基于镜像新建一个容器启动,另外是将终止的容器重新启动
因为Docker的容器实在是太轻了,很多时候用户都是随时删除和新建容器
docker run 镜像ID或名字

ssdf31.png
wrewr.jpg
是不可以访问的
原因容器(是一个简易的Linux操作系统)是隔离的集装箱,和自己电脑浏览器是隔离 的,默认的情况下是不能的 ,因为容器里没有浏览器 。将容器端口和自己电脑做映射就可以了
07.29.png

23230.08.15.png

wer.08.56.png

在后台运行

docker run -itd -p 8888:5000 id号
        -d  后台运行
        -t  打开一个终端
        -i   允许交互输入

交互运行

启动一个bash,允许用户进行交互。
docker run -t -i CONTAINER [CONTAINER...] /bin/bash
eg:
创建centos容器并且进入centos容器中,加上/bin/bash 就是进入命令行
docker run -it centos /bin/bash
2342419.png

重启一个容器

docker restart CONTAINER [CONTAINER]
eg:
 docker restart web
停止容器
docker stop CONTAINER ID
sasdas6.41.png

删除一个容器

docker rm r容器ID
sadasf.jpg

查看容器信息

docker logs 容器ID
sdfdsfwqe.jpg

进入容器

docker exec -i -t CONTAINER /bin/bash
进入容器就是一个简易的Linux,通过操作Linux命令来操作容器
sdfsd05.png

主机和容器间 的拷贝

docker cp cp是源 :是目标路径
# 将edof8bb24e容器opt/webapp/app.py 拷贝到D盘下的www目录
docker cp edof8bb24e:/opt/webapp/app.py D:/www

数据卷

什么是数据卷?
是一个可供一个或多个容器使用的特殊目录,它绕过USF,可以提供很多有用的特性:
        1.数据卷可以在容器之间共享和重用
        2.对数据卷的修改会立马生效
        3.对数据卷 的更新,不会影响镜像
        

4.数据卷默认会一直存在,即使容器被删除

注意:
数据卷的使用,类似于Linux下的目录或文件进行mount(挂载),镜像中的被指定为挂载点的目录中的文件会隐藏掉,能显示看的是挂载的数据卷
为什么要使用数据卷
将本地中的代码运行在docker容器中
将本地目录映射到容器目录
sdfsfwqeq.jpg
挂载的前提
授权本地磁盘
容器要想访问本地文件需要在docker settings 》》》file Sharing 添加 然后自动重启
23423440.png
语法
docker run -d -p --name web -v D:www/webapp:/opt/webapp training/webapp
这样在本地创建一个文件就会同时在容器中存在
123trewq.png

下载镜像

可以使用阿里云的 http://dev.aliyun.com
如果点搜索不行,那就随便乱点点,再点搜索就可以了
zxc28.png

下载

docker pull 地址 :版本

创建lamp容器并且运行

--privileged=true
/usr/sbin/init
获取root权限

docker run -itd -p 80:80 -p 3306:3306 --name lamp --privileged=true -v D:/www/default:/data/wwwroot/default ec258725b54b /usr/sbin/init
daaa.png
2432.png

制作阿里云镜像

制作本地镜像
意思是从网上拉下来一个镜像,自己修修改改,再上传上去,就是自己制作的镜像了
docker commit -a 'haha.com' -m 'this is images' 容器ID 镜像的名字:版本
# -a  提交镜像的作者
# -m 提交时的说明
#-p 在commit时,将容器暂停
利用centos创建镜像
首先启动镜像,变成容器并进入,起名字叫mycentos2
sfq3.png
对容器进行修改
sfsdf31221351.png

制作镜像

my-contos:v2 是镜像的名字


sdsf232316.png

上传到阿里云

http://dev.aliyun.com 阿里云>>>管理中心>>>镜像列表>>>创建镜像库>>>公开>>>本地仓库

2132107.png

sfsdf.36.png
点进去之后就有对应指南
sfsdf9.png

导出镜像到本地

docker save d2b9sda76l  -o D:/www/centos-lamp-v2.tar

加载本地镜像文件

docker load -i  D:www/centos-lamp-v2.tar
下载MySQL
docker pull mysql:5.6
安装MySQL容器
docker run --name mysql -e MYSQL_ROOT_PASSWORD=admin -p 3306:3306 -d mysql:5.6
0.15.png

转自:https://www.iqiyi.com/v_19rr0mbefk.html#curid=1076954300_2a5ed74efbaf3af70a9f9ff2666f98a9

5.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,837评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,551评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,417评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,448评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,524评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,554评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,569评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,316评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,766评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,077评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,240评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,912评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,560评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,176评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,425评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,114评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,114评论 2 352

推荐阅读更多精彩内容