docker

docker_sence.png

容器,依托Linux内核功能的虚拟化技术

docker 将软件和库部署在主系统上

特点

PaaS platform as service

Saas software as service

docker

  • 客户端/守护进程
  • 镜像image,启动容器的所有信息,层叠只读文件系统
    (1.boot fs (基础镜像)-> 2.root fs (ubuntu) -> 3.add emacs,appache联合加载文件系统)
  • 容器 container 启动和执行阶段,写时复制copy on write,可写层
    创建新容器,创建可写层+镜像层=镜像,有服务可运行
  • 仓库 registry ,保存用户构建的镜像

docker 容器基本操作

docker pull IMAGE

  • 启动交互式命令,有终端
    docker run -it IMAGE /bin/bash
    -i -interactive 交互,false 默认
    -t -tty 终端,false默认

  • 查看容器
    docker ps -la
    -l 最新创建的容器
    -a all

  • inspect 检查
    docker inspect container_name/container_id

  • 自定义容器名字
    docker run --name=name_self -ti mysql /bin/bash

  • 重新启动停止的容器
    docker start -i container_name

  • 删除已经停止的容器
    docker rm container_name

  • 删除镜像
    docker rmi image

docker 守护容器

  • docker run -it ubuntu /bin/bash
    使用ctrl+p /ctrl +q退出,后台运行

  • docker ps -a
    查看容器在后台仍然运行

  • docker attach container_iid
    可以进入容器

  • docker run --name container_name -d ubuntu /bin/bash -c "while true,do echo hello word;done"
    后台执行守护进行-d

  • docker logs -f -t --tail container_name
    -f --follow 一直跟踪
    -t --timestamps 打印时间戳
    --tail = “all” 结尾多少数量的日志
    ex:docker logs -tf --tail 10 container_name 最新的10条日志

  • docker top container_name
    查看运行容器中的进程

  • docker exec -d -i -t container_name
    在运行中的容器内启动新进程,开启容器的多进程
    docker top 命令查看是否多进程

  • docker stop/kill container_name
    stop 发送信号,让容器停止,需要一定时间返回容器名字
    kill 直接暴力停止容器运行

  • 容器端口映射
    -p --publish=[]
    1.宿主机端口随机对应 container port
    docker run -p 80 -it ubuntu /bin/bash
    2.都进行指定端口 host port:container port
    docker run -p 8080:80 -it ubuntu /bin/bash
    3.对容器端口指定 ip:container port
    docker run -p 0.0.0.0:80 -it ubuntu /bin/bash
    4.对容器端口指定 ip:host port:container port
    docker run -p 0.0.0.0:8080:80 -it ubuntu /bin/bash

容器内部署静态网站

修改nginx/defalut.conf
host port : http://localhost:12345
container port : http://172.17.0.1:80
docker inspect container_name

  • stop-> start docker ,ip地址和端口都发生了改变
  • ctrl+p 退出后台运行
    docker exec -i container_name nginx 运行一次nginx,
    docker top 查看是否启动
    docker inspect container_name 查看对应IP地址

1.control groups 控制组(分配资源)

  • 资源限制-mem达到上限,outofmem
  • 优先级设定-更大磁盘io,CPU
  • 资源计量
  • 资源控制,挂起/恢复

隔离

  • 文件系统(每个系统有自己root文件系统),

  • NET 网络(虚拟网络接口和IP地址是分开的),

  • PID,进程(容器运行在自己的进程环境中),

  • MNT (挂在点)资源隔离和分组(CPU,cgroups,内存独立分配给docker容器)

  • IPC 跨进程通信访问

docker 网络链接

ifconfig 系统网络设备

  • 桥接/虚拟网卡docker0,网桥-osi七层(数据链路层:应用,表示,会话,传输,网络,数据链路,物理)
    ex:172.12.42.1,子网掩码:255.255.0.0 -地址:65534个
  • install brigde-utils 下载
  • brctl show 查看网桥

自定义虚拟网桥

自定义 docker0

  • ifconfig docker0 192.168.200.1 netmask 255.255.255.0
  • service docker restart 重启docker 服务
  • 运行容器,查看容器的ip地址

添加虚拟网桥

  • brctl addbr br0
  • ifconfig br0 192.168.100.1 netmask 255.255.255.0

更改docker 守护进程的启动配置

  • /etc/default/docker 中添加DOCKER_OPS值="addbr"
    -b=br0
  • 重启docker service
  • ps -ef |grep docker

Dockerfile可以构建镜像

docker 仓库,标签

  • 不同标签对应的是相同的仓库
  • 删除注意
  • 自定义镜像以软件形式打包并分发及其运行环境
  • docker commit 通过容器构建
    -- docker commit [options] CONTAINER [REPOSITORY:[TAG]]
    -- -p 不让容器暂停
    -- ex: docker commit -a author -m "container_id/container_name" repo_name:tag
  • docker build 通过Dockerfile 文件构建

First Dockerfile

FROM ubuntu:14:04
MANITAINER docker_hub_path_name
RUN apt-get update
RUN apt-get install -y nginx
expose 80
CMD /bin/bash

First Dockerfile volume

FROM ubuntu:14:04
VOLUME ["/a1","/a2"]
CMD /bin/bash

docker 构建命令

docker build -t="image_name_tag"

  • t --tag="tag name"
    每一步返回一个id,这是中间层的镜像

Docker Hub 查找与拉取镜像 - pull,push,search

  • 本地与远程镜像互动操作
  • docker hub 网站,需要注册 账号
  • docker search ubuntu
  • docker pull image ubuntu:tag
  • docker 使用第三方平台拉取镜像
    -- 修改docker的配置文件 /etc/default/docker DOCKER_OPTS = "加速地址"
    -- 重启docker 服务并查看docker 的守护进程
    -- 例如 :注册daocloud,加速器-> 加速地址
  • docker push 传送镜像到docker hub,提交修改的部分

docker 容器的数据卷volume

添加数据卷在启动容器前

docker run -v ~/datavolume:/data -it ubuntu /bin/bash
-v volume 相当于挂载

添加对数据卷的权限访问

  • docker run -it -v ~/datavolume:/data:ro ubuntu /bin/bash
    :ro read only
  • docker inspect container_name
    查看具体数据卷的权限
    -- 独立于docker 容器,分离docker容器的生存周期,可以目录,文件进行数据共享(一数据卷对多容器)
    -- 容器对数据卷的修改是及时进行的
    -- 数据卷变化不会影响镜像的更新

docker 容器的数据卷容器(不用暴露主机的目录)

创建数据卷容器

  • docker run --volumes-from container_name

创建容器后常见挂载数据卷

  • 在数据卷容器内 touch 文件

查看host 主机的数据卷情况

  • docker inspect --format="{{.Volumes}}" container_dv1
  • docker inspect --format="{{.Volumes}}" container_dv2

总结:
1.数据卷容器删除,还是在容器查看对应的数据卷信息,证明数据卷容器只是配置作用
2.docker 中如果一个容器的数据卷还是使用,就不会被删除掉

数据卷的备份和还原-数据备份

docker run --volume-from [container_name] -v $(pwd 目录:/backup ubuntu tar cvf /xvf /backup/backup.tar [container data volume ]

  • cvf 压缩
  • xvf 解压

docker run --volume-from dv1 -v /backup_datavolume:/backup --name dv2 ubuntu tar cvf /xvf /backup/backup.tar /datavolume1

host : /backup_datavolume

re ### 容器互联
docker run -it --name --link:cct1:webtest container_path_name
重启docker,仍然可以实现ip地址(容器)不变,容器之间可以互相链接

容器拒绝互联,通过ping验证

--icc= false

允许特定容器之间的互联

--icc= false --iptables=true
--link

re ### Docker容器跨主机链接

  • 网桥实现跨主机容器链接
  • 使用Open vSwitch实现跨主机容器链接(虚拟主机)
  • 使用weave实现跨主机容器链接(开源)

容器的集群管理Caas

容器的调度:docker swarm,kubernetes(google)
同步集群:etcd,zookeeper
服务发现:etcd,haproxy
日志监控:elk

  • 云集容器管理
    -- 除了以上
    -- 网络配置
    -- 安全配置
    -- 负载均衡
    -- 数据持久化
    -- 容错、高可用

  • Parcelles

Caas 概述

  • 提供容器运行平台并管理容器所需资源
  • Iaas灵活,Paas搬便利
  • 支持多租户
  • 伸缩性-弹性的扩大或缩小所需资源
  • 可视化(UI)和可控性

Caas机遇和挑战
1.共享容器技术带来的所有优势
2.解决了Iaas和Paas在实践中存在的问题
3.应用开发专注于应用开发,一键配置
4.快速迭代,简化部署
5.微服务的理想平台

挑战:
1.共享容器技术不足
2.技术日新月异
3.容器镜像云平台化

4.国内社区认知度不高

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

推荐阅读更多精彩内容

  • 转载自 http://blog.opskumu.com/docker.html 一、Docker 简介 Docke...
    极客圈阅读 10,468评论 0 120
  • 一、Docker 简介 Docker 两个主要部件:Docker: 开源的容器虚拟化平台Docker Hub: 用...
    R_X阅读 4,379评论 0 27
  • 五、Docker 端口映射 无论如何,这些 ip 是基于本地系统的并且容器的端口非本地主机是访问不到的。此外,除了...
    R_X阅读 1,736评论 0 7
  • 若不是情非得已 怎会忍于与你相隔两地 我的母亲 若不是生活所迫,颠沛流离 他们又怎敢会肆无忌惮 又怎需忍辱前行 若...
    花非物欲阅读 209评论 1 3
  • 起身离座,穿衣提包,带上口罩的一刹那,心里顿时舒了口气~~终于不用再强颜欢笑、小心翼翼了。即便还在众人面前,藏在口...
    槑头槑脑儿阅读 706评论 0 5