docker進(jìn)階使用

使用Dockerfile生成鏡像

1. 查詢?nèi)萜餍薷臍v史
docker diff [容器名]

如果docker diff webserver查看之前的容器修改歷史嚎研,你會(huì)發(fā)現(xiàn)除了用vi修改過(guò)的/usr/share/nginx/html/index.html文件外蓖墅,還有其他很多文件被修改或者改動(dòng)了,這是因?yàn)楹芏嗝畹膱?zhí)行雖然沒(méi)有指定文件临扮,但也會(huì)對(duì)必要的文件做修改

2. 刪除指定鏡像
docker rmi [鏡像ID]

由于鏡像ID具有隨機(jī)性论矾,基本上重復(fù)度很小,因此docker rmi [鏡像ID前四位]也可以刪除符合參數(shù)的鏡像
可能你會(huì)疑惑萬(wàn)一剛好就有ID前四位重復(fù)的鏡像怎么辦
沒(méi)關(guān)系杆勇,就算ID全部重復(fù)的情況都可能出現(xiàn)贪壳,之后會(huì)講如何刪除這種鏡像

3. 建立Dockerfile

在一個(gè)空白目錄中建一個(gè)名為Dockerfile的空白文檔

mkdir mynginx
cd mynginx
touch Dockerfile

創(chuàng)建名為mynginx的空目錄
進(jìn)入這個(gè)目錄
創(chuàng)建名為Dockerfile的空文件

4. 修改Dockerfile
vi Dockerfile

如果

FROM nginx
RUN echo '<h1 href="newpage.html">Hello, Dockerfile!</h1>' > /usr/share/nginx/html/index.html
RUN touch /usr/share/nginx/html/newpage.html
RUN echo '<h1 herf="index.html>Newpage!</h1>' > /usr/share/nginx/html/newpage.html

這樣寫會(huì)導(dǎo)致每使用一次RUN就會(huì)建立一層鏡像
避免這種情況應(yīng)改為像下面這樣

FROM nginx
RUN echo '1' > /usr/share/nginx/html/index.html \ && echo '<a href="newpage.html">to the moon </a>' > /usr/share/nginx/html/index.html \ && touch /usr/share/nginx/html/newpage.html \ && echo '<a href="index.html">back</a>' > /usr/share/nginx/html/newpage.html

表示在同一層鏡像中進(jìn)行操作完成之后再commit

如果你想在生成的鏡像中提前安裝vim,可以把FROM nginx下面一句改為

RUN apt-get update && apt-get install vim -y \ && echo '1' > /usr/share/nginx/html/index.html \ && echo '<a href="newpage.html">to the moon </a>' > /usr/share/nginx/html/index.html \ && touch /usr/share/nginx/html/newpage.html \ && echo '<a href="index.html">back</a>' > /usr/share/nginx/html/newpage.html
5. 在Dockerfile文件所在目錄構(gòu)建鏡像并執(zhí)行
docker build -t nginx:v2 .

注意最后有個(gè)點(diǎn)蚜退,代表在當(dāng)前文件夾操作

6. 生成容器
docker run --name webserver -d -p 80:80 nginx:v2
7. 進(jìn)入容器并修改內(nèi)容
docker exec -it webserver bash
echo '<a href="newpage.html">go to newpage</a>' > /usr/share/nginx/html/index.html

如果你已經(jīng)在此鏡像中安裝了vim也可以在進(jìn)入容器后用vim編輯
vi /usr/share/nginx/html/index.html

8. 刪除容器鏡像重新開(kāi)始

如果中途誤操作導(dǎo)致沒(méi)有達(dá)到想要的效果闰靴,可以選擇刪除鏡像重新開(kāi)始

docker images
docker rmi [imageID前四位]

如果刪除鏡像時(shí)出現(xiàn)images is referenced in multiple repositories的提示信息彪笼,是因?yàn)橐獎(jiǎng)h的鏡像打了tag,所以有重復(fù)ID的鏡像蚂且,刪除這種鏡像應(yīng)該刪名字而不是ID配猫,即

docker rmi [imageName]

配置私有倉(cāng)庫(kù)

如果想讓自己的鏡像在別的終端上可以使用,可以push到官方倉(cāng)庫(kù)杏死,也可以搭建一個(gè)個(gè)人倉(cāng)庫(kù)
這里只講如何搭建自己的倉(cāng)庫(kù)服務(wù)

1. 下載registry鏡像
docker pull registry
2. 通過(guò)registry鏡像啟動(dòng)容器

如果你像這樣生成容器的話

docker run -d -p 5000:5000 registry

默認(rèn)情況下泵肄,會(huì)將倉(cāng)庫(kù)存放于容器內(nèi)的/tmp/registry目錄下
這樣一來(lái)如果容器被刪除,則存放于容器中的鏡像也會(huì)丟失
所以我們一般來(lái)說(shuō)會(huì)指定本地一個(gè)目錄掛載到容器內(nèi)的/tmp/registry下识埋,像下面這樣

docker run --name registry -d -p 5000:5000 --restart=always -v `pwd`/data:/var/lib/registry registry:2
3. 查看端口是否已經(jīng)啟用
netstat -nltp

5000端口就是默認(rèn)的registry監(jiān)聽(tīng)端口

4. 測(cè)試registry

將虛擬機(jī)切換為橋接網(wǎng)絡(luò)凡伊,使用ifconfig查看虛擬機(jī)的IP并作為鏡像倉(cāng)庫(kù)的IP

docker tag nginx:v2 <虛擬機(jī)的IP>:5000/nginx:v2

使用docker images可以看到打上tag的這個(gè)鏡像,ID和沒(méi)打tag的鏡像是一樣的

5. 嘗試上傳

嘗試把這個(gè)鏡像傳到你的registry服務(wù)上

docker push <虛擬機(jī)的IP>:5000/nginx:v2

會(huì)出現(xiàn)報(bào)錯(cuò)server gave HTTP response to HTTPS client
因?yàn)镈ocker從1.3.X之后窒舟,與docker registry交互默認(rèn)使用的是https
然而此處搭建的私有倉(cāng)庫(kù)只提供http服務(wù)系忙,所以當(dāng)與私有倉(cāng)庫(kù)交互時(shí)就會(huì)報(bào)上面的錯(cuò)誤
需要在啟動(dòng)docker server時(shí)增加啟動(dòng)參數(shù)為默認(rèn)使用http訪問(wèn)
修改docker啟動(dòng)配置文件

sudo vi /etc/init/docker.conf

在其中# modify these in /etc/default/$UPSTART_JOB (/etc/default/docker)
找到exec "$DOCKERD" $DOCKER_OPTS --raw-logs這一行
DOCKER_OPTS--raw-logs之間增加--insecure-registry <虛擬機(jī)的IP>:5000

6. 重啟服務(wù)之后再試一次
sudo service docker restart
docker push <虛擬機(jī)的IP>:5000/nginx:v2

可以看到push成功,則鏡像文件已經(jīng)成功傳到倉(cāng)庫(kù)服務(wù)中
之后再開(kāi)一臺(tái)虛擬機(jī)惠豺,保證兩臺(tái)虛擬機(jī)能夠ping通银还,就可以在新虛擬機(jī)中把之前上傳的文件拉取下來(lái)了
如果第二臺(tái)虛擬機(jī)出現(xiàn)報(bào)錯(cuò)server gave HTTP response to HTTPS client說(shuō)明沒(méi)有增加啟動(dòng)參數(shù)為默認(rèn)使用http訪問(wèn)
也做一遍就可以了,最后嘗試?yán)?/p>

docker pull <虛擬機(jī)的IP>:5000/nginx:v2

downloading洁墙,成功

參考資料

Docker學(xué)習(xí)筆記 — Docker私有倉(cāng)庫(kù)搭建

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末蛹疯,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子热监,更是在濱河造成了極大的恐慌捺弦,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,194評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件孝扛,死亡現(xiàn)場(chǎng)離奇詭異列吼,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)苦始,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門寞钥,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人陌选,你說(shuō)我怎么就攤上這事理郑。” “怎么了咨油?”我有些...
    開(kāi)封第一講書人閱讀 156,780評(píng)論 0 346
  • 文/不壞的土叔 我叫張陵您炉,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我臼勉,道長(zhǎng)邻吭,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 56,388評(píng)論 1 283
  • 正文 為了忘掉前任宴霸,我火速辦了婚禮囱晴,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘瓢谢。我一直安慰自己畸写,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,430評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布氓扛。 她就那樣靜靜地躺著枯芬,像睡著了一般。 火紅的嫁衣襯著肌膚如雪采郎。 梳的紋絲不亂的頭發(fā)上千所,一...
    開(kāi)封第一講書人閱讀 49,764評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音蒜埋,去河邊找鬼淫痰。 笑死,一個(gè)胖子當(dāng)著我的面吹牛整份,可吹牛的內(nèi)容都是我干的待错。 我是一名探鬼主播,決...
    沈念sama閱讀 38,907評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼烈评,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼火俄!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起讲冠,我...
    開(kāi)封第一講書人閱讀 37,679評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤瓜客,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后竿开,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體谱仪,經(jīng)...
    沈念sama閱讀 44,122評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,459評(píng)論 2 325
  • 正文 我和宋清朗相戀三年德迹,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了芽卿。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,605評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡胳搞,死狀恐怖卸例,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情肌毅,我是刑警寧澤筷转,帶...
    沈念sama閱讀 34,270評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站悬而,受9級(jí)特大地震影響呜舒,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜笨奠,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,867評(píng)論 3 312
  • 文/蒙蒙 一袭蝗、第九天 我趴在偏房一處隱蔽的房頂上張望唤殴。 院中可真熱鬧,春花似錦到腥、人聲如沸朵逝。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,734評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)配名。三九已至,卻和暖如春晋辆,著一層夾襖步出監(jiān)牢的瞬間渠脉,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,961評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工瓶佳, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留芋膘,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,297評(píng)論 2 360
  • 正文 我出身青樓涩哟,卻偏偏與公主長(zhǎng)得像索赏,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子贴彼,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,472評(píng)論 2 348

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

  • Docker — 云時(shí)代的程序分發(fā)方式 要說(shuō)最近一年云計(jì)算業(yè)界有什么大事件潜腻?Google Compute Engi...
    ahohoho閱讀 15,511評(píng)論 15 147
  • 轉(zhuǎn)載自 http://blog.opskumu.com/docker.html 一、Docker 簡(jiǎn)介 Docke...
    極客圈閱讀 10,476評(píng)論 0 120
  • 0. 前言 docker是什么器仗?docker是用GO語(yǔ)言開(kāi)發(fā)的應(yīng)用容器引擎融涣,基于容器化,沙箱機(jī)制的應(yīng)用部署技術(shù)精钮⊥梗可...
    sessionboy閱讀 3,841評(píng)論 2 49
  • 原文在此 獲取鏡像 之前提到過(guò),Docker Hub 上有大量的高質(zhì)量的鏡像可以用轨香,這里我們就說(shuō)一下怎么獲取這些鏡...
    若與閱讀 1,862評(píng)論 1 5
  • 你這么厲害臂容,還要員工干嘛科雳? 你是否聽(tīng)說(shuō)過(guò)這么一句話:“就是因?yàn)槲冶饶銋柡Γ蝗唤裉炷憔褪抢习迮迹沂菃T工糟秘。” 我...
    詭弧閱讀 204評(píng)論 0 0