docker

docker_sence.png

容器,依托Linux內(nèi)核功能的虛擬化技術(shù)

docker 將軟件和庫部署在主系統(tǒng)上

特點(diǎn)

PaaS platform as service

Saas software as service

docker

  • 客戶端/守護(hù)進(jìn)程
  • 鏡像image,啟動容器的所有信息,層疊只讀文件系統(tǒng)
    (1.boot fs (基礎(chǔ)鏡像)-> 2.root fs (ubuntu) -> 3.add emacs,appache聯(lián)合加載文件系統(tǒng))
  • 容器 container 啟動和執(zhí)行階段,寫時復(fù)制copy on write,可寫層
    創(chuàng)建新容器,創(chuàng)建可寫層+鏡像層=鏡像,有服務(wù)可運(yùn)行
  • 倉庫 registry ,保存用戶構(gòu)建的鏡像

docker 容器基本操作

docker pull IMAGE

  • 啟動交互式命令,有終端
    docker run -it IMAGE /bin/bash
    -i -interactive 交互,false 默認(rèn)
    -t -tty 終端,false默認(rèn)

  • 查看容器
    docker ps -la
    -l 最新創(chuàng)建的容器
    -a all

  • inspect 檢查
    docker inspect container_name/container_id

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

  • 重新啟動停止的容器
    docker start -i container_name

  • 刪除已經(jīng)停止的容器
    docker rm container_name

  • 刪除鏡像
    docker rmi image

docker 守護(hù)容器

  • docker run -it ubuntu /bin/bash
    使用ctrl+p /ctrl +q退出,后臺運(yùn)行

  • docker ps -a
    查看容器在后臺仍然運(yùn)行

  • docker attach container_iid
    可以進(jìn)入容器

  • docker run --name container_name -d ubuntu /bin/bash -c "while true,do echo hello word;done"
    后臺執(zhí)行守護(hù)進(jìn)行-d

  • docker logs -f -t --tail container_name
    -f --follow 一直跟蹤
    -t --timestamps 打印時間戳
    --tail = “all” 結(jié)尾多少數(shù)量的日志
    ex:docker logs -tf --tail 10 container_name 最新的10條日志

  • docker top container_name
    查看運(yùn)行容器中的進(jìn)程

  • docker exec -d -i -t container_name
    在運(yùn)行中的容器內(nèi)啟動新進(jìn)程,開啟容器的多進(jìn)程
    docker top 命令查看是否多進(jìn)程

  • docker stop/kill container_name
    stop 發(fā)送信號,讓容器停止,需要一定時間返回容器名字
    kill 直接暴力停止容器運(yùn)行

  • 容器端口映射
    -p --publish=[]
    1.宿主機(jī)端口隨機(jī)對應(yīng) container port
    docker run -p 80 -it ubuntu /bin/bash
    2.都進(jìn)行指定端口 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

容器內(nèi)部署靜態(tài)網(wǎng)站

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

  • stop-> start docker ,ip地址和端口都發(fā)生了改變
  • ctrl+p 退出后臺運(yùn)行
    docker exec -i container_name nginx 運(yùn)行一次nginx,
    docker top 查看是否啟動
    docker inspect container_name 查看對應(yīng)IP地址

1.control groups 控制組(分配資源)

  • 資源限制-mem達(dá)到上限,outofmem
  • 優(yōu)先級設(shè)定-更大磁盤io,CPU
  • 資源計(jì)量
  • 資源控制,掛起/恢復(fù)

隔離

  • 文件系統(tǒng)(每個系統(tǒng)有自己root文件系統(tǒng)),

  • NET 網(wǎng)絡(luò)(虛擬網(wǎng)絡(luò)接口和IP地址是分開的),

  • PID,進(jìn)程(容器運(yùn)行在自己的進(jìn)程環(huán)境中),

  • MNT (掛在點(diǎn))資源隔離和分組(CPU,cgroups,內(nèi)存獨(dú)立分配給docker容器)

  • IPC 跨進(jìn)程通信訪問

docker 網(wǎng)絡(luò)鏈接

ifconfig 系統(tǒng)網(wǎng)絡(luò)設(shè)備

  • 橋接/虛擬網(wǎng)卡docker0,網(wǎng)橋-osi七層(數(shù)據(jù)鏈路層:應(yīng)用,表示,會話,傳輸,網(wǎng)絡(luò),數(shù)據(jù)鏈路,物理)
    ex:172.12.42.1,子網(wǎng)掩碼:255.255.0.0 -地址:65534個
  • install brigde-utils 下載
  • brctl show 查看網(wǎng)橋

自定義虛擬網(wǎng)橋

自定義 docker0

  • ifconfig docker0 192.168.200.1 netmask 255.255.255.0
  • service docker restart 重啟docker 服務(wù)
  • 運(yùn)行容器,查看容器的ip地址

添加虛擬網(wǎng)橋

  • brctl addbr br0
  • ifconfig br0 192.168.100.1 netmask 255.255.255.0

更改docker 守護(hù)進(jìn)程的啟動配置

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

Dockerfile可以構(gòu)建鏡像

docker 倉庫,標(biāo)簽

  • 不同標(biāo)簽對應(yīng)的是相同的倉庫
  • 刪除注意
  • 自定義鏡像以軟件形式打包并分發(fā)及其運(yùn)行環(huán)境
  • docker commit 通過容器構(gòu)建
    -- docker commit [options] CONTAINER [REPOSITORY:[TAG]]
    -- -p 不讓容器暫停
    -- ex: docker commit -a author -m "container_id/container_name" repo_name:tag
  • docker build 通過Dockerfile 文件構(gòu)建

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 構(gòu)建命令

docker build -t="image_name_tag"

  • t --tag="tag name"
    每一步返回一個id,這是中間層的鏡像

Docker Hub 查找與拉取鏡像 - pull,push,search

  • 本地與遠(yuǎn)程鏡像互動操作
  • docker hub 網(wǎng)站,需要注冊 賬號
  • docker search ubuntu
  • docker pull image ubuntu:tag
  • docker 使用第三方平臺拉取鏡像
    -- 修改docker的配置文件 /etc/default/docker DOCKER_OPTS = "加速地址"
    -- 重啟docker 服務(wù)并查看docker 的守護(hù)進(jìn)程
    -- 例如 :注冊daocloud,加速器-> 加速地址
  • docker push 傳送鏡像到docker hub,提交修改的部分

docker 容器的數(shù)據(jù)卷volume

添加數(shù)據(jù)卷在啟動容器前

docker run -v ~/datavolume:/data -it ubuntu /bin/bash
-v volume 相當(dāng)于掛載

添加對數(shù)據(jù)卷的權(quán)限訪問

  • docker run -it -v ~/datavolume:/data:ro ubuntu /bin/bash
    :ro read only
  • docker inspect container_name
    查看具體數(shù)據(jù)卷的權(quán)限
    -- 獨(dú)立于docker 容器,分離docker容器的生存周期,可以目錄,文件進(jìn)行數(shù)據(jù)共享(一數(shù)據(jù)卷對多容器)
    -- 容器對數(shù)據(jù)卷的修改是及時進(jìn)行的
    -- 數(shù)據(jù)卷變化不會影響鏡像的更新

docker 容器的數(shù)據(jù)卷容器(不用暴露主機(jī)的目錄)

創(chuàng)建數(shù)據(jù)卷容器

  • docker run --volumes-from container_name

創(chuàng)建容器后常見掛載數(shù)據(jù)卷

  • 在數(shù)據(jù)卷容器內(nèi) touch 文件

查看host 主機(jī)的數(shù)據(jù)卷情況

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

總結(jié):
1.數(shù)據(jù)卷容器刪除,還是在容器查看對應(yīng)的數(shù)據(jù)卷信息,證明數(shù)據(jù)卷容器只是配置作用
2.docker 中如果一個容器的數(shù)據(jù)卷還是使用,就不會被刪除掉

數(shù)據(jù)卷的備份和還原-數(shù)據(jù)備份

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 ### 容器互聯(lián)
docker run -it --name --link:cct1:webtest container_path_name
重啟docker,仍然可以實(shí)現(xiàn)ip地址(容器)不變,容器之間可以互相鏈接

容器拒絕互聯(lián),通過ping驗(yàn)證

--icc= false

允許特定容器之間的互聯(lián)

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

re ### Docker容器跨主機(jī)鏈接

  • 網(wǎng)橋?qū)崿F(xiàn)跨主機(jī)容器鏈接
  • 使用Open vSwitch實(shí)現(xiàn)跨主機(jī)容器鏈接(虛擬主機(jī))
  • 使用weave實(shí)現(xiàn)跨主機(jī)容器鏈接(開源)

容器的集群管理Caas

容器的調(diào)度:docker swarm,kubernetes(google)
同步集群:etcd,zookeeper
服務(wù)發(fā)現(xiàn):etcd,haproxy
日志監(jiān)控:elk

  • 云集容器管理
    -- 除了以上
    -- 網(wǎng)絡(luò)配置
    -- 安全配置
    -- 負(fù)載均衡
    -- 數(shù)據(jù)持久化
    -- 容錯、高可用

  • Parcelles

Caas 概述

  • 提供容器運(yùn)行平臺并管理容器所需資源
  • Iaas靈活,Paas搬便利
  • 支持多租戶
  • 伸縮性-彈性的擴(kuò)大或縮小所需資源
  • 可視化(UI)和可控性

Caas機(jī)遇和挑戰(zhàn)
1.共享容器技術(shù)帶來的所有優(yōu)勢
2.解決了Iaas和Paas在實(shí)踐中存在的問題
3.應(yīng)用開發(fā)專注于應(yīng)用開發(fā),一鍵配置
4.快速迭代,簡化部署
5.微服務(wù)的理想平臺

挑戰(zhàn):
1.共享容器技術(shù)不足
2.技術(shù)日新月異
3.容器鏡像云平臺化

4.國內(nèi)社區(qū)認(rèn)知度不高

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 轉(zhuǎn)載自 http://blog.opskumu.com/docker.html 一、Docker 簡介 Docke...
    極客圈閱讀 10,753評論 0 120
  • 一、Docker 簡介 Docker 兩個主要部件:Docker: 開源的容器虛擬化平臺Docker Hub: 用...
    R_X閱讀 4,521評論 0 27
  • 五、Docker 端口映射 無論如何,這些 ip 是基于本地系統(tǒng)的并且容器的端口非本地主機(jī)是訪問不到的。此外,除了...
    R_X閱讀 1,961評論 0 7
  • 若不是情非得已 怎會忍于與你相隔兩地 我的母親 若不是生活所迫,顛沛流離 他們又怎敢會肆無忌憚 又怎需忍辱前行 若...
    花非物欲閱讀 292評論 1 3
  • 起身離座,穿衣提包,帶上口罩的一剎那,心里頓時舒了口氣~~終于不用再強(qiáng)顏歡笑、小心翼翼了。即便還在眾人面前,藏在口...
    槑頭槑腦兒閱讀 815評論 0 5

友情鏈接更多精彩內(nèi)容