Docker 學(xué)習(xí)筆記

參考書籍 Docker —— 從入門到實(shí)踐
本文只記錄重要步驟,更詳細(xì)的內(nèi)容請?jiān)谠瓡胁榭?/p>

安裝

Ubuntu、Debian 系列安裝 Docker

盡量使用最新的發(fā)行版志衍,本文使用的版本為Ubuntu Xenial 16.04 (LTS)

使用腳本自動(dòng)安裝

Docker 官方為了簡化安裝流程崭倘,提供了一套安裝腳本,Ubuntu 和 Debian 系統(tǒng)可以使用這套腳本安裝:

curl -sSL https://get.docker.com/ | sh

執(zhí)行這個(gè)命令后悦析,腳本就會自動(dòng)的將一切準(zhǔn)備工作做好寿桨,并且把 Docker 安裝在系統(tǒng)中。

不過强戴,由于偉大的墻的原因亭螟,在國內(nèi)使用這個(gè)腳本可能會出現(xiàn)下載出錯(cuò)的情況。
本文使用的是 DaoCloud 提供的安裝腳本

DaoCloud 提供的安裝腳本 curl -sSL https://get.daocloud.io/docker | sh

啟動(dòng) Docker 引擎

$ sudo systemctl enable docker
$ sudo systemctl start docker

建立 docker 用戶組

默認(rèn)情況下骑歹,docker命令會使用 Unix socket 與 Docker 引擎通訊预烙。而只有 root 用戶和 docker 組的用戶才可以訪問 Docker 引擎的 Unix socket。出于安全考慮道媚,一般 Linux 系統(tǒng)上不會直接使用 root 用戶扁掸。因此翘县,更好地做法是將需要使用 docker 的用戶加入 docker 用戶組。

建立 docker 組:

$ sudo groupadd docker

將當(dāng)前用戶加入 docker 組:

$ sudo usermod -aG docker $USER

鏡像加速器

國內(nèi)訪問 Docker Hub 有時(shí)會遇到困難谴分,此時(shí)可以配置鏡像加速器锈麸。
本文使用 DaoCloud 提供的加速器

輸入如下命令:

$ sudo curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s 服務(wù)提供商分配給你的地址
例如: http://4e76bd89.m.daocloud.io

然后重啟 docker 服務(wù)即可

$ sudo systemctl restart docker.service

鏡像

獲取鏡像

獲取鏡像的命令是 docker pull 格式為:

$ sudo docker pull [選項(xiàng)] [Docker Registry地址]<倉庫名>:<標(biāo)簽>
  • Docker Registry地址:地址的格式一般是 <域名/IP>[:端口號]。默認(rèn)地址是 Docker Hub牺蹄。
  • 倉庫名:如之前所說掐隐,這里的倉庫名是兩段式名稱,既 <用戶名>/<軟件名>钞馁。對于 Docker Hub虑省,如果不給出用戶名,則默認(rèn)為 library僧凰,也就是官方鏡像探颈。

例如:

$ sudo docker pull ubuntu:14.04

上面的命令中沒有給出 Docker Registry 地址,因此將會從 Docker Hub 獲取鏡像训措。而鏡像名稱是 ubuntu:14.04伪节,因此將會獲取官方鏡像 library/ubuntu 倉庫中標(biāo)簽為 14.04 的鏡像。

運(yùn)行

有了鏡像后绩鸣,我們就可以以這個(gè)鏡像為基礎(chǔ)啟動(dòng)一個(gè)容器來運(yùn)行怀大。以上面的 ubuntu:14.04 為例,如果我們打算啟動(dòng)里面的 bash 并且進(jìn)行交互式操作的話呀闻,可以執(zhí)行下面的命令化借。

$ sudo docker run -it --rm ubuntu:14.04 bash
root@08ce449494db:/# cat /etc/os-release 
NAME="Ubuntu"
VERSION="14.04.5 LTS, Trusty Tahr"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 14.04.5 LTS"
VERSION_ID="14.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
root@08ce449494db:/# exit
exit
$ 

docker run 是運(yùn)行容器的命令

  • -it:這是兩個(gè)參數(shù),一個(gè)是 -i:交互式操作捡多,一個(gè)是 -t 終端蓖康。我們這里打算進(jìn)入 bash 執(zhí)行一些命令并查看返回結(jié)果,因此我們需要交互式終端垒手。
  • --rm:這個(gè)參數(shù)是說容器退出后隨之將其刪除蒜焊。默認(rèn)情況下,為了排障需求科贬,退出的容器并不會立即刪除泳梆,除非手動(dòng) docker rm。我們這里只是隨便執(zhí)行個(gè)命令榜掌,看看結(jié)果优妙,不需要排障和保留結(jié)果,因此使用 --rm 可以避免浪費(fèi)空間唐责。
  • ubuntu:14.04:這是指用 ubuntu:14.04 鏡像為基礎(chǔ)來啟動(dòng)容器鳞溉。
  • bash:放在鏡像名后的是命令,這里我們希望有個(gè)交互式 Shell鼠哥,因此用的是 bash熟菲。

進(jìn)入容器后看政,我們可以在 Shell 下操作,執(zhí)行任何所需的命令抄罕。這里允蚣,我們執(zhí)行了 cat /etc/os-release,這是 Linux 常用的查看當(dāng)前系統(tǒng)版本的命令呆贿,從返回的結(jié)果可以看到容器內(nèi)是 Ubuntu 14.04.5 LTS 系統(tǒng)嚷兔。

最后我們通過 exit 退出了這個(gè)容器。

列出鏡像

要想列出已經(jīng)下載下來的鏡像做入,可以使用 docker images 命令冒晰。

$ sudo docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              16.04               f49eec89601e        12 days ago         129 MB
ubuntu              latest              f49eec89601e        12 days ago         129 MB
ubuntu              14.04               b969ab9f929b        12 days ago         188 MB

列表包含了倉庫名、標(biāo)簽竟块、鏡像 ID壶运、創(chuàng)建時(shí)間以及所占用的空間。

鏡像 ID 是鏡像的唯一標(biāo)識浪秘,一個(gè)鏡像可以對應(yīng)多個(gè)標(biāo)簽蒋情。因此,在上面的例子中耸携,我們可以看到 ubuntu:16.04ubuntu:latest 擁有相同的 ID棵癣,因?yàn)樗鼈儗?yīng)的是同一個(gè)鏡像。

列出部分鏡像

不加任何參數(shù)的情況下夺衍,docker images 會列出所有頂級鏡像狈谊,但是有時(shí)候我們只希望列出部分鏡像。docker images 有好幾個(gè)參數(shù)可以幫助做到這個(gè)事情刷后。

根據(jù)倉庫名列出鏡像

$ sudo docker images ubuntu
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              16.04               f49eec89601e        12 days ago         129 MB
ubuntu              latest              f49eec89601e        12 days ago         129 MB
ubuntu              14.04               b969ab9f929b        12 days ago         188 MB

列出特定的某個(gè)鏡像的畴,也就是說指定倉庫名和標(biāo)簽

$ sudo docker images ubuntu:16.04
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              16.04               f49eec89601e        12 days ago         129 MB

除此以外渊抄,docker images 還支持強(qiáng)大的過濾器參數(shù) --filter尝胆,或者簡寫 -f。比如护桦,我們希望看到在 ubuntu:14.04 之后建立的鏡像含衔,可以用下面的命令:

$ sudo docker images -f since=ubuntu:14.04
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              16.04               f49eec89601e        12 days ago         129 MB
ubuntu              latest              f49eec89601e        12 days ago         129 MB

想查看某個(gè)位置之前的鏡像也可以,只需要把 since 換成 before 即可二庵。

以特定格式顯示

默認(rèn)情況下贪染,docker images 會輸出一個(gè)完整的表格,但是我們并非所有時(shí)候都會需要這些內(nèi)容催享。比如杭隙,我們需要利用 docker images 把所有鏡像的 ID 列出來,然后交給 docker rmi 命令作為參數(shù)來刪除指定的這些鏡像因妙,這個(gè)時(shí)候就用到了 -q 參數(shù)痰憎。

$ sudo docker images -q
f49eec89601e
f49eec89601e
b969ab9f929b

利用 commit 理解鏡像構(gòu)成(預(yù)留)

此處先省略一萬字_
............................................................

使用 Dockerfile 定制鏡像


臨時(shí)內(nèi)容:
Dockerfile 中有 CMD 時(shí)票髓,容器啟動(dòng)時(shí)則執(zhí)行該 CMD,如果在啟動(dòng)時(shí)加入?yún)?shù)則會覆蓋掉原來的 CMD铣耘,如果 Dockerfile 中有 ENTRYPOINT洽沟,則 CMD 作為參數(shù)傳遞給 ENTRYPOINT。


Dockerfile:
FROM ubuntu:16.04
RUN apt-get update \
    && apt-get install -y curl \
    && rm -rf /var/lib/apt/lists/*
CMD [ "curl", "-s", "http://ip.cn" ]

$ docker run myip // 此時(shí)容器內(nèi)執(zhí)行的是命令 curl -s http://ip.cn
$ docker run myip echo "Hello" // 此時(shí)容器內(nèi)執(zhí)行的是命令 echo "Hello"蜗细,CMD 被覆蓋了 
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末裆操,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子炉媒,更是在濱河造成了極大的恐慌踪区,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件吊骤,死亡現(xiàn)場離奇詭異朽缴,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)水援,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進(jìn)店門密强,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蜗元,你說我怎么就攤上這事或渤。” “怎么了奕扣?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵薪鹦,是天一觀的道長。 經(jīng)常有香客問我惯豆,道長池磁,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任楷兽,我火速辦了婚禮地熄,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘芯杀。我一直安慰自己端考,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布揭厚。 她就那樣靜靜地躺著却特,像睡著了一般。 火紅的嫁衣襯著肌膚如雪筛圆。 梳的紋絲不亂的頭發(fā)上裂明,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天,我揣著相機(jī)與錄音太援,去河邊找鬼闽晦。 笑死轰绵,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的尼荆。 我是一名探鬼主播左腔,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼捅儒!你這毒婦竟也來了液样?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤巧还,失蹤者是張志新(化名)和其女友劉穎鞭莽,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體麸祷,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡澎怒,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了阶牍。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片喷面。...
    茶點(diǎn)故事閱讀 40,096評論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖走孽,靈堂內(nèi)的尸體忽然破棺而出惧辈,到底是詐尸還是另有隱情,我是刑警寧澤磕瓷,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布盒齿,位于F島的核電站,受9級特大地震影響困食,放射性物質(zhì)發(fā)生泄漏边翁。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一硕盹、第九天 我趴在偏房一處隱蔽的房頂上張望符匾。 院中可真熱鬧,春花似錦莱睁、人聲如沸待讳。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至痴晦,卻和暖如春南吮,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背誊酌。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工部凑, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留露乏,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓涂邀,卻偏偏與公主長得像瘟仿,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子比勉,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評論 2 355

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