# Docker 實(shí)例分享

@(Docker分享)[Dockerfile|私有倉庫|容器互聯(lián)|跨網(wǎng)絡(luò)互聯(lián)]

分析內(nèi)容

  • Dockerfile參數(shù)
  • 私有倉庫
  • 局域網(wǎng)內(nèi)Docker容器互聯(lián)
  • 跨網(wǎng)絡(luò)的容器互聯(lián)
  • 做一個(gè)簡單的實(shí)驗(yàn)

Dockerfile

一般Dockerfile 分為四個(gè)部分:
基礎(chǔ)鏡像信息、維護(hù)者信息涩堤、鏡像操作指令、容器啟動(dòng)時(shí)執(zhí)行的指令燎猛。

參數(shù) 格式 解釋
FROM FROM image:tag 指定基礎(chǔ)鏡
MAINTAINER MAINTAINER liuzhiqing@yodo1.com 制作鏡像的作者
COPY COPY src dest 拷貝本地文件到容器(上下文的相對(duì)路徑或者絕對(duì)路徑)
ADD ADD src dest 拷貝本地文件到容器(還支持url/壓縮歸檔文件)
WORKDIR WORKDIR /path/to/workdir 使用多個(gè)WORKDIR,為后續(xù)命令指定相對(duì)目錄
ENV ENV key value 指定環(huán)境變量白修,在后續(xù)RUN指定里可以使用东亦,在容器運(yùn)行時(shí)可以保持
VOLUME VOLUME ["/data"] 創(chuàng)建一個(gè)本地和容器的掛載點(diǎn)
EXPOSE EXPOSE port 容器端口映射到本機(jī)端口上
USER USER daemon 指定運(yùn)行容器是的用戶名和UID
RUN RUN command Shell 格式 命令通過/bin/sh -c 去運(yùn)行
RUN RUN ["exec","param1","param2"] exec 格式,不調(diào)用shell程序唯竹,及容器中沒有shell程序乐导。參數(shù)會(huì)當(dāng)成json數(shù)組被Docker解析
CMD CMD command /支持exec格式 運(yùn)行容器的默認(rèn)值,如果啟動(dòng)時(shí)指定了參數(shù)浸颓,則被覆蓋物臂。
ENTRYPOINT ENTRYPOINT command/支持exec格式 運(yùn)行容器執(zhí)行命令,但和CMD區(qū)別是忽略docker run指定的參數(shù)产上。

私有倉庫

方式一: 下載官方做好的私有倉庫的鏡像棵磷,然后運(yùn)行起來。

[root@localhost ~]# docker pull dl.dockerpool.com:5000/registry

[root@localhost ~]# docker run -d -p 5000:5000 -v /opt/data/registry:/tmp/registry dl.dockerpool.com:5000/registry

[root@localhost ~]# curl http://192.168.1.194:5000/v1/search
{"num_results": 1, "query": "", "results": [{"description": null, "name": "library/unbuntu_v1.0"}]}

[root@localhost ~]# docker pull 192.168.1.194:5000/unbuntu_v1.0

[root@localhost ~]# docker images |grep unbuntu_v1.0
192.168.1.194:5000/unbuntu_v1.0   latest              e9c238b94cff        3 weeks ago         418.9 MB

[root@localhost ~]# docker tag liuzhiqing/nginx:v5  192.168.1.194:5000/nginx

[root@localhost ~]# docker pull 192.168.1.194:5000/nginx

[root@localhost ~]# docker push 192.168.1.194:5000/nginx

[root@localhost ~]# curl http://192.168.1.194:5000/v1/search
{"num_results": 2, "query": "", "results": [{"description": null, "name": "library/unbuntu_v1.0"}, {"description": "", "name": "library/nginx"}]}

方式二:本地服務(wù)器安裝

安裝
[root@localhost ~]# yum -y install epel-release
[root@localhost ~]# yum install -y python-devel libevent-devel python-pip gcc xz-devel
[root@localhost ~]# yum -y install docker-registry

修改IP及監(jiān)聽端口(如果想設(shè)置端口為6000晋涣,那么/etc/sysconfig/docker里 也要修改成6000)
[root@localhost ~]# vim /etc/sysconfig/docker-registry
[root@localhost ~]# vim /etc/docker-registry.yml  (修改的目的是可以通過curl 查詢倉庫鏡像仪媒?!P蝗怠)
    search_backend: _env:sqlalchemy
    sqlalchemy_index_database: _env:sqlite:////tmp/docker-registry.db

啟動(dòng)服務(wù)
[root@localhost ~]#systemctl  start docker-registry.service
[root@localhost ~]#netstat  -ntpl 檢查6000端口是否存在

上傳:
[root@localhost ~]#docker tag e9c238b94cff 192.168.1.194:6000/nginx 

[root@localhost ~]# docker push 192.168.1.194:6000/nginx

下載:
[root@localhost ~]# docker pull 192.168.1.194:6000/nginx

查詢: (無法通過curl 查看算吩?留凭?!Y顺病)
[root@localhost ~]# curl http://192.168.1.194:6000/v1/search
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<title>404 Not Found</title>
<h1>Not Found</h1>
<p>The requested URL was not found on the server.  If you entered the URL manually please check your spelling and try again.</p>
[root@localhost ~]#
[root@localhost ~]# curl http://192.168.1.194:6000/
"\"docker-registry server\""

局域網(wǎng)內(nèi)容器互聯(lián)

一. 同主機(jī)容器之間互聯(lián)

默認(rèn)容器之間是可以互通的蔼夜,容器可以訪問外部網(wǎng)絡(luò),外部網(wǎng)絡(luò)不能訪問容器压昼。

簡單的實(shí)現(xiàn)

  1. -p /-P 在啟動(dòng)容器時(shí)指定-p參數(shù)求冷,映射容器內(nèi)的端口供其他容器調(diào)用和訪問。
# docker run -d -p 8000:80  --name docer_nginx docker.io/nginx
  1. --link 在啟動(dòng)容器時(shí)指定--link參數(shù)窍霞,Docker會(huì)在兩個(gè)容器內(nèi)創(chuàng)建獨(dú)立的隧道匠题,用于兩個(gè)容器通信。
#docker run -d liuzhiqing/mysql-server:v1   
#docker run -it --link 828c819757a6:db liuzhiqing/mysql-client:v2 /bin/bash

自定義網(wǎng)橋
思路:通過操作Linux netwwork namespace 去隔離網(wǎng)絡(luò)但金,自建Linux虛擬網(wǎng)橋梧躺,把需要相互通信的容器網(wǎng)卡,加入到網(wǎng)橋中傲绣。最終實(shí)現(xiàn)互通,ip netns 工具實(shí)現(xiàn)巩踏。

實(shí)驗(yàn)過程:......

二. 不同主機(jī)容器之間互聯(lián)
橋接的方式
思路:找一個(gè)單獨(dú)的網(wǎng)卡秃诵,兩個(gè)不同主機(jī)的網(wǎng)卡連接到一個(gè)二層交換機(jī)上,新建容器的網(wǎng)卡都橋接到新的網(wǎng)橋上塞琼。

配圖:

實(shí)驗(yàn)過程:.....

直連路由
思路:新建網(wǎng)橋菠净,容器網(wǎng)卡連接到網(wǎng)橋上,通過iptables MASQUERADE偽裝 /ip forword做NAT進(jìn)行跨主機(jī)容器通信彪杉。

配圖:

試驗(yàn)過程: ....

三. pipework工具

  1. 連接容器到本地網(wǎng)絡(luò)
  2. 支持macvlan設(shè)備方式把容器接入到本地網(wǎng)絡(luò)毅往。
  3. 支持DHCP讓容器自動(dòng)獲取IP
  4. 支持open vswitch的簡單配置
  5. 支持容器網(wǎng)卡mac地址及配置VLAN (open vswitch的功能)

實(shí)驗(yàn)過程:...

其他
1.單臺(tái)主機(jī)上的容器vlan劃分
2.多臺(tái)主機(jī)容器的vlan劃分(交換機(jī)開trunk通道)

跨網(wǎng)絡(luò)的容器互聯(lián)

OVS隧道模式

overlay技術(shù):
一種隧道技術(shù),一種網(wǎng)絡(luò)包裝到另一種協(xié)議中去傳輸?shù)募夹g(shù)派近,實(shí)現(xiàn)方法GRE隧道攀唯。

通過GRE實(shí)現(xiàn)Docker容器的跨網(wǎng)絡(luò)通信

圖:...

多租戶GRE隔離
openstack里一個(gè)分支開源項(xiàng)目Neutron也是使用Open vswitch來實(shí)現(xiàn)的,但不同在于neutor的GRE模式有一種專門做GRE隧道的br-tun渴丸,該網(wǎng)橋中使用流表來轉(zhuǎn)發(fā)數(shù)據(jù)包(openflow)

在br-int中 虛擬機(jī)使用VLAN-ID來區(qū)分不同的租戶侯嘀,通往外界的流量則使用GRE key來區(qū)分,GRE key有24位比特位谱轨,可以很好的解決vlan數(shù)量不夠的問題戒幔。

做一個(gè)簡單的實(shí)驗(yàn)

haproxy 分發(fā)給 app , app連接redis-master, redis-master連接2個(gè)從庫

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市土童,隨后出現(xiàn)的幾起案子诗茎,更是在濱河造成了極大的恐慌,老刑警劉巖献汗,帶你破解...
    沈念sama閱讀 216,496評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件敢订,死亡現(xiàn)場離奇詭異王污,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)枢析,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門玉掸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人醒叁,你說我怎么就攤上這事司浪。” “怎么了把沼?”我有些...
    開封第一講書人閱讀 162,632評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵啊易,是天一觀的道長。 經(jīng)常有香客問我饮睬,道長租谈,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,180評(píng)論 1 292
  • 正文 為了忘掉前任捆愁,我火速辦了婚禮割去,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘昼丑。我一直安慰自己呻逆,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,198評(píng)論 6 388
  • 文/花漫 我一把揭開白布菩帝。 她就那樣靜靜地躺著咖城,像睡著了一般。 火紅的嫁衣襯著肌膚如雪呼奢。 梳的紋絲不亂的頭發(fā)上宜雀,一...
    開封第一講書人閱讀 51,165評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音握础,去河邊找鬼辐董。 笑死,一個(gè)胖子當(dāng)著我的面吹牛弓候,可吹牛的內(nèi)容都是我干的郎哭。 我是一名探鬼主播,決...
    沈念sama閱讀 40,052評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼菇存,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼夸研!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起依鸥,我...
    開封第一講書人閱讀 38,910評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤亥至,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體姐扮,經(jīng)...
    沈念sama閱讀 45,324評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡絮供,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,542評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了茶敏。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片壤靶。...
    茶點(diǎn)故事閱讀 39,711評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖惊搏,靈堂內(nèi)的尸體忽然破棺而出贮乳,到底是詐尸還是另有隱情,我是刑警寧澤恬惯,帶...
    沈念sama閱讀 35,424評(píng)論 5 343
  • 正文 年R本政府宣布向拆,位于F島的核電站,受9級(jí)特大地震影響酪耳,放射性物質(zhì)發(fā)生泄漏浓恳。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,017評(píng)論 3 326
  • 文/蒙蒙 一碗暗、第九天 我趴在偏房一處隱蔽的房頂上張望颈将。 院中可真熱鬧,春花似錦言疗、人聲如沸吆鹤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至沾凄,卻和暖如春梗醇,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背撒蟀。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評(píng)論 1 269
  • 我被黑心中介騙來泰國打工叙谨, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人保屯。 一個(gè)月前我還...
    沈念sama閱讀 47,722評(píng)論 2 368
  • 正文 我出身青樓手负,卻偏偏與公主長得像,于是被迫代替她去往敵國和親姑尺。 傳聞我的和親對(duì)象是個(gè)殘疾皇子竟终,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,611評(píng)論 2 353

推薦閱讀更多精彩內(nèi)容

  • 轉(zhuǎn)載自 http://blog.opskumu.com/docker.html 一、Docker 簡介 Docke...
    極客圈閱讀 10,499評(píng)論 0 120
  • 五切蟋、Docker 端口映射 無論如何统捶,這些 ip 是基于本地系統(tǒng)的并且容器的端口非本地主機(jī)是訪問不到的。此外,除了...
    R_X閱讀 1,748評(píng)論 0 7
  • 轉(zhuǎn)自:http://ju.outofmemory.cn/entry/255894 概述自從docker容器出現(xiàn)以來...
    dleyanlin閱讀 1,512評(píng)論 0 7
  • 概述 自從docker容器出現(xiàn)以來喘鸟,容器的網(wǎng)絡(luò)通信就一直是大家關(guān)注的焦點(diǎn)匆绣,也是生產(chǎn)環(huán)境的迫切需求。而容器的網(wǎng)絡(luò)通信...
    糙老爺們兒吃什么櫻桃閱讀 3,621評(píng)論 1 5
  • “打蛇打七寸,擒賊先擒王”愕把,一般客戶關(guān)注的中心拣凹,就是他們內(nèi)心最看重的東西。抓住客戶最關(guān)注的中心礼华,然后做重點(diǎn)突破咐鹤,會(huì)...
    奮斗的番茄閱讀 432評(píng)論 0 0