docker簡介及mac下安裝docker

最近系統(tǒng)的學(xué)習(xí)docker柑蛇,參考資料Docker-從入門到實(shí)踐docker官網(wǎng)

docker是什么

Docker 使用 Google 公司推出的 Go 語言 進(jìn)行開發(fā)實(shí)現(xiàn)剧包,基于 Linux 內(nèi)核的 cgroup肿嘲,namespace,以及 AUFS 類的 Union FS 等技術(shù)次乓,對進(jìn)程進(jìn)行封裝隔離吓歇,屬于操作系統(tǒng)層面的虛擬化技術(shù)。由于隔離的進(jìn)程獨(dú)立于宿主和其它的隔離的進(jìn)程票腰,因此也稱其為容器照瘾。最初實(shí)現(xiàn)是基于 LXC,從 0.7 以后開始去除 LXC丧慈,轉(zhuǎn)而使用自行開發(fā)的 libcontainer析命,從 1.11 開始,則進(jìn)一步演進(jìn)為使用 runCcontainerd逃默。
Docker 在容器的基礎(chǔ)上鹃愤,進(jìn)行了進(jìn)一步的封裝,從文件系統(tǒng)完域、網(wǎng)絡(luò)互聯(lián)到進(jìn)程隔離等等软吐,極大的簡化了容器的創(chuàng)建和維護(hù)。使得 Docker 技術(shù)比虛擬機(jī)技術(shù)更為輕便吟税、快捷凹耙。

傳統(tǒng)虛擬機(jī)技術(shù)是虛擬出一套硬件后姿现,在其上運(yùn)行一個(gè)完整操作系統(tǒng),在該系統(tǒng)上再運(yùn)行所需應(yīng)用進(jìn)程肖抱;而容器內(nèi)的應(yīng)用進(jìn)程直接運(yùn)行于宿主的內(nèi)核备典,容器內(nèi)沒有自己的內(nèi)核,而且也沒有進(jìn)行硬件虛擬意述。因此容器要比傳統(tǒng)虛擬機(jī)更為輕便提佣。

mac下安裝docker

官方mac的安裝步驟

下載docker.dmg文件,然后點(diǎn)擊荤崇,一步步操作

步驟

檢測Docker Engine, Docker Compose, 和Docker Machine的版本

?  docker version
Client:
 Version:      17.03.1-ce
 API version:  1.27
 Go version:   go1.7.5
 Git commit:   c6d412e
 Built:        Tue Mar 28 00:40:02 2017
 OS/Arch:      darwin/amd64

Server:
 Version:      17.03.1-ce
 API version:  1.27 (minimum version 1.12)
 Go version:   go1.7.5
 Git commit:   c6d412e
 Built:        Fri Mar 24 00:00:50 2017
 OS/Arch:      linux/amd64
 Experimental: true
?  docker-compose --version
docker-compose version 1.11.2, build dfed245
?  docker-machine --version
docker-machine version 0.10.0, build 76ed2a6

配置加速器:

Docker 加速器是什么拌屏,我需要使用嗎?
使用 Docker 的時(shí)候术荤,需要經(jīng)常從官方獲取鏡像倚喂,但是由于顯而易見的網(wǎng)絡(luò)原因,拉取鏡像的過程非常耗時(shí)瓣戚,嚴(yán)重影響使用 Docker 的體驗(yàn)务唐。因此 DaoCloud 推出了加速器工具解決這個(gè)難題,通過智能路由和緩存機(jī)制带兜,極大提升了國內(nèi)網(wǎng)絡(luò)訪問 Docker Hub 的速度枫笛,目前已經(jīng)擁有了廣泛的用戶群體,并得到了 Docker 官方的大力推薦刚照。如果您是在國內(nèi)的網(wǎng)絡(luò)環(huán)境使用 Docker刑巧,那么 Docker 加速器一定能幫助到您。

注冊daocloud无畔,然后在mac標(biāo)簽頁復(fù)制加速器url啊楚。

daocloud
配置

運(yùn)行官網(wǎng)提供的二個(gè)簡單列子

拉取hello-world鏡像

docker pull hello-world
hello-world

查看hello-world鏡像信息:

? docker images hello-world
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
hello-world         latest              1815c82652c0        5 days ago          1.84 kB

根據(jù)鏡像生成對應(yīng)容器

? docker run hello-world
根據(jù)鏡像生成容器

ps不加參數(shù)只會把當(dāng)前運(yùn)行的Community打印出來,查看當(dāng)前所有的Community浑彰,加上-a參數(shù)恭理。

? docker ps -a
查看當(dāng)前所有容器

當(dāng)然也可以根據(jù)鏡像生成一個(gè)具體名稱的鏡像,先刪除當(dāng)前容器

docker rm 60
刪除容器

當(dāng)然如果當(dāng)前容器正在運(yùn)行郭变,要刪除這個(gè)容器颜价,則使用命令

docker rm -f 60

使用鏡像生成具體名稱的容器:

docker run --name miaozhihao hello-world
指定容器的名稱

關(guān)于更多的docker run的命令可以使用來查看

docker run --help

第二個(gè)examples,啟動docker的web服務(wù)

docker pull nginx
docker run -d -p 80:80 --name webserver nginx

-p參數(shù)是使用宿主機(jī)的80映射容器的80端口

? curl localhost:80
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
    body {
        width: 35em;
        margin: 0 auto;
        font-family: Tahoma, Verdana, Arial, sans-serif;
    }
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>

<p>For online documentation and support please refer to
<a >nginx.org</a>.<br/>
Commercial support is available at
<a >nginx.com</a>.</p>

<p><em>Thank you for using nginx.</em></p>
</body>
</html>

交互式終端方式進(jìn)入 webserver容器诉濒,

? docker exec -it webserver bash 

修改nginx的顯示頁面:

root@41b6804c716e:/# echo '<h1>Hello, Docker!</h1>' > /usr/share/nginx/html/index.html
root@41b6804c716e:/# exit
exit

修改了容器的文件周伦,也就是改動了容器的存儲層。我們可以通過 docker diff

? docker diff webserver
C /root
A /root/.bash_history
C /run
A /run/nginx.pid
C /usr/share/nginx/html/index.html
C /var/cache/nginx
A /var/cache/nginx/client_temp
A /var/cache/nginx/fastcgi_temp
A /var/cache/nginx/proxy_temp
A /var/cache/nginx/scgi_temp
A /var/cache/nginx/uwsgi_temp

使用docker commit生成鏡像

? docker commit --author "zhihao.miao <1026145686@qq.com>" --message "修改了默認(rèn)網(wǎng)頁" webserver nginx:v2
sha256:0a34c054b8a826d85dddf4d1dbdd3028ab890feff4c8a0844e9b98dd146c2e07

--autho 指定作者 --message表示容器的一些信息

查看當(dāng)前nginx鏡像:

docker images nginx
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
nginx               v2                  0a34c054b8a8        11 seconds ago      109 MB
nginx               latest              958a7ae9e569        4 weeks ago         109 MB

查看當(dāng)前所有的容器未荒,包括運(yùn)行的和停止的

? docker ps -a
\CONTAINER ID        IMAGE                                 COMMAND                  CREATED             STATUS                    PORTS                NAMES
41b6804c716e        nginx                                 "nginx -g 'daemon ..."   3 minutes ago       Up 3 minutes              0.0.0.0:80->80/tcp   webserver
85612b405cda        miaozhihao001dockerhub/commit_test1   "nginx -g 'daemon ..."   20 hours ago        Exited (0) 3 hours ago                         nginx_web
9ef1fb35d7aa        ubuntu:14.04                          "/bin/bash"              20 hours ago        Exited (0) 20 hours ago                        commit_test
bf8320b9e445        ubuntu:14.04                          "/bin/bash"              24 hours ago        Exited (0) 24 hours ago                        sharp_curie
9f9767eb8aaf        hello-world                           "/hello"                 10 days ago         Exited (0) 10 days ago                         miaozhihao

啟動新的容器

? docker run --name newwebserver -d -p 80:80 nginx:v2
3619b34ed347cf1ae2ee3ab32c419140871f3084b9a1325ab5d8c6155d43bf06
? curl localhost:80
<h1>Hello, Docker!</h1>

一些docker命令總結(jié)

  • docker images :查看當(dāng)前宿主機(jī)的所有鏡像专挪。
  • docker images ubuntu:根據(jù)倉庫名列出鏡像
  • docker images ubuntu:14.04:指定倉庫名和標(biāo)簽
  • docker build -t webservice .:表示使用當(dāng)前目錄下的DockerFile來生成鏡像,-t參數(shù)的值表示鏡像的tagname,如果DockerFile在當(dāng)前路徑下則使用.寨腔,如果不在當(dāng)前路徑下則使用相對路徑速侈。
  • docker ps -a: 沒有-a參數(shù)表示顯示當(dāng)前宿主機(jī)的正在運(yùn)行的容器,加上-a表示顯示當(dāng)前宿主機(jī)所有的容器迫卢,包括已經(jīng)退出的容器倚搬。
  • docker run -d -p 2222:22 --name base centos:7.1
    表示根據(jù)指定的鏡像后臺運(yùn)行容器,容器的名字是base(--name就是指定容器的名字)靖避,centos:7.1表示鏡像的名字潭枣,-p參數(shù)表示當(dāng)前宿主機(jī)的2222端口對應(yīng)容器的22端口比默。
    -d參數(shù)表示(Run container in background and print container ID)
  • docker exec -it base /bin/bash
    以交互式命令進(jìn)入base容器并且執(zhí)行/bin/bash命令
  • docker rmi webservice:刪除webservice鏡像
  • docker rm base: 刪除base容器幻捏,如果base正在運(yùn)行,則可以使用docker rm -f base進(jìn)行強(qiáng)行刪除

Docker 三個(gè)基本概念

  • 鏡像(Image)
    Docker 鏡像是一個(gè)特殊的文件系統(tǒng)命咐,除了提供容器運(yùn)行時(shí)所需的程序篡九、庫、資源醋奠、配置等文件外榛臼,還包含了一些為運(yùn)行時(shí)準(zhǔn)備的一些配置參數(shù)(如匿名卷、環(huán)境變量窜司、用戶等)沛善。鏡像不包含任何動態(tài)數(shù)據(jù),其內(nèi)容在構(gòu)建之后也不會被改變塞祈。
  • 容器(Container)
    鏡像(Image)和容器(Container)的關(guān)系金刁,就像是面向?qū)ο蟪绦蛟O(shè)計(jì)中的類和實(shí)例一樣,鏡像是靜態(tài)的定義议薪,容器是鏡像運(yùn)行時(shí)的實(shí)體尤蛮。容器可以被創(chuàng)建、啟動斯议、停止产捞、刪除、暫停等哼御。
    容器的實(shí)質(zhì)是進(jìn)程坯临,但與直接在宿主執(zhí)行的進(jìn)程不同,容器進(jìn)程運(yùn)行于屬于自己的獨(dú)立的 命名空間恋昼。因此容器可以擁有自己的 root文件系統(tǒng)尿扯、自己的網(wǎng)絡(luò)配置、自己的進(jìn)程空間焰雕,甚至自己的用戶 ID 空間衷笋。容器內(nèi)的進(jìn)程是運(yùn)行在一個(gè)隔離的環(huán)境里,使用起來,就好像是在一個(gè)獨(dú)立于宿主的系統(tǒng)下操作一樣辟宗。這種特性使得容器封裝的應(yīng)用比直接在宿主運(yùn)行更加安全爵赵。
  • 倉庫(Repository)
    鏡像構(gòu)建完成后,可以很容易的在當(dāng)前宿主上運(yùn)行泊脐,但是空幻,如果需要在其它服務(wù)器上使用這個(gè)鏡像,我們就需要一個(gè)集中的存儲容客、分發(fā)鏡像的服務(wù)秕铛,Docker Registry 就是這樣的服務(wù)。
    一個(gè) Docker Registry 中可以包含多個(gè)倉庫(Repository)缩挑;每個(gè)倉庫可以包含多個(gè)標(biāo)簽(Tag)但两;每個(gè)標(biāo)簽對應(yīng)一個(gè)鏡像。
    通常供置,一個(gè)倉庫會包含同一個(gè)軟件不同版本的鏡像谨湘,而標(biāo)簽就常用于對應(yīng)該軟件的各個(gè)版本。我們可以通過 <倉庫名>:<標(biāo)簽>的格式來指定具體是這個(gè)軟件哪個(gè)版本的鏡像芥丧。如果不給出標(biāo)簽紧阔,將以 latest作為默認(rèn)標(biāo)簽。

官網(wǎng)提供的優(yōu)秀的倉庫Docker Hub

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末续担,一起剝皮案震驚了整個(gè)濱河市擅耽,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌物遇,老刑警劉巖乖仇,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異挎挖,居然都是意外死亡这敬,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進(jìn)店門蕉朵,熙熙樓的掌柜王于貴愁眉苦臉地迎上來崔涂,“玉大人,你說我怎么就攤上這事始衅±渎欤” “怎么了?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵汛闸,是天一觀的道長蝙茶。 經(jīng)常有香客問我,道長诸老,這世上最難降的妖魔是什么隆夯? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上蹄衷,老公的妹妹穿的比我還像新娘忧额。我一直安慰自己,他們只是感情好愧口,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布睦番。 她就那樣靜靜地躺著,像睡著了一般耍属。 火紅的嫁衣襯著肌膚如雪托嚣。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天厚骗,我揣著相機(jī)與錄音示启,去河邊找鬼。 笑死溯捆,一個(gè)胖子當(dāng)著我的面吹牛丑搔,可吹牛的內(nèi)容都是我干的厦瓢。 我是一名探鬼主播提揍,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼煮仇!你這毒婦竟也來了劳跃?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤浙垫,失蹤者是張志新(化名)和其女友劉穎刨仑,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體夹姥,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡杉武,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了辙售。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片轻抱。...
    茶點(diǎn)故事閱讀 38,059評論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖旦部,靈堂內(nèi)的尸體忽然破棺而出祈搜,到底是詐尸還是另有隱情,我是刑警寧澤士八,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布容燕,位于F島的核電站,受9級特大地震影響婚度,放射性物質(zhì)發(fā)生泄漏蘸秘。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望醋虏。 院中可真熱鬧味抖,春花似錦、人聲如沸灰粮。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽粘舟。三九已至熔脂,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間柑肴,已是汗流浹背霞揉。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留晰骑,地道東北人适秩。 一個(gè)月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像硕舆,于是被迫代替她去往敵國和親秽荞。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評論 2 345

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

  • Docker — 云時(shí)代的程序分發(fā)方式 要說最近一年云計(jì)算業(yè)界有什么大事件抚官?Google Compute Engi...
    ahohoho閱讀 15,508評論 15 147
  • 轉(zhuǎn)載自 http://blog.opskumu.com/docker.html 一扬跋、Docker 簡介 Docke...
    極客圈閱讀 10,473評論 0 120
  • 一、Docker 簡介 Docker 兩個(gè)主要部件:Docker: 開源的容器虛擬化平臺Docker Hub: 用...
    R_X閱讀 4,379評論 0 27
  • 0. 前言 docker是什么凌节?docker是用GO語言開發(fā)的應(yīng)用容器引擎钦听,基于容器化,沙箱機(jī)制的應(yīng)用部署技術(shù)倍奢∑由希可...
    sessionboy閱讀 3,838評論 2 49
  • js中的三種判斷 if else if else 三元運(yùn)算符 switch case if(條件1){ 執(zhí)行 條件...
    放逐的帝王閱讀 809評論 0 0