Docker入門(mén)基礎(chǔ)之容器使用

Docker簡(jiǎn)介

Docker 是一個(gè)開(kāi)源的應(yīng)用容器引擎,基于Go語(yǔ)言并遵從Apache2.0協(xié)議開(kāi)源扫腺。

Docker 可以讓開(kāi)發(fā)者打包他們的應(yīng)用以及依賴(lài)包到一個(gè)輕量級(jí)绞旅、可移植的容器中,然后發(fā)布到任何流行的 Linux 機(jī)器上多艇,也可以實(shí)現(xiàn)虛擬化逻恐。

容器是完全使用沙箱機(jī)制,相互之間不會(huì)有任何接口(類(lèi)似 iPhone 的 app),更重要的是容器性能開(kāi)銷(xiāo)極低墩蔓。

Ubuntu Docker 安裝

1梢莽、Docker官方安裝方法

Docker 要求 Ubuntu 系統(tǒng)的內(nèi)核版本高于 3.10 ,查看本頁(yè)面的前提條件來(lái)驗(yàn)證你的 Ubuntu 版本是否支持 Docker奸披。
獲取安裝包:

root@ubuntu:~# wget -qO- https://get.docker.com/ | sh

安裝完成后有提示:

 If you would like to use Docker as a non-root user, you should now consider
  adding your user to the "docker" group with something like:
 ?
   sudo usermod -aG docker runoob
  Remember that you will have to log out and back in for this to take effect! 

啟動(dòng)docker服務(wù)

root@ubuntu:~# sudo service docker start
2昏名、通過(guò)安裝URLOS獲得

URLOS基于Docker運(yùn)行,安裝了URLOS阵面,就等于安裝了Docker轻局,我們可以使用URLOS官方安裝命令:

curl -LO www.urlos.com/iu && sh iu

curl -O https://www.urlos.com/install && chmod 544 install && ./install

Docker容器使用
Docker客戶(hù)端
Docker 客戶(hù)端非常簡(jiǎn)單 ,可以直接輸入 Docker 命令來(lái)查看到 Docker 客戶(hù)端的所有命令選項(xiàng)洪鸭。

 root@ubuntu:~# docker

在這里插入圖片描述

可以通過(guò)命令docker command --help更深入的了解指定的 Docker 命令使用方法。
例如我們要查看docker stats指令的具體使用方法:

 root@ubuntu:~# docker stats --help

在這里插入圖片描述

啟動(dòng)容器(交互模式)
我們?nèi)绻褂冒姹緸?6.04的ubuntu系統(tǒng)鏡像來(lái)運(yùn)行容器時(shí)仑扑,命令如下:

 root@ubuntu:~# docker run -it ubuntu:16.04 sh

如果要使用版本為15.04的ubuntu系統(tǒng)鏡像览爵,則命令如下:

root@ubuntu:~# docker run -it ubuntu:15.04 sh

各個(gè)參數(shù)解析:

  • docker: Docker 的二進(jìn)制執(zhí)行文件。
  • run:與前面的 docker 組合來(lái)運(yùn)行一個(gè)容器镇饮。
  • -it:其實(shí)是兩個(gè)參數(shù)組成蜓竹, -i 和 -t,-i:允許你對(duì)容器內(nèi)的標(biāo)準(zhǔn)輸入 (STDIN) 進(jìn)行交互储藐。-t:在新容器內(nèi)指定一個(gè)偽終端或終端俱济。
  • ubuntu:15.04:指定要運(yùn)行的鏡像,Docker首先從本地主機(jī)上查找鏡像是否存在钙勃,如果不存在蛛碌,Docker 就會(huì)從鏡像倉(cāng)庫(kù) Docker Hub 下載公共鏡像。
  • sh:執(zhí)行命令辖源。

將上面的命令稍作修改蔚携,在結(jié)尾處加上一句命令,執(zhí)行后:

root@ubuntu:~# docker run -it ubuntu:16.04 sh -c "while true; do echo hello urlos; sleep 1; done"
hello urlos
hello urlos
hello urlos
hello urlos
hello urlos
hello urlos
^Croot@ubuntu:~#

我們可以看到終端上不斷輸出 hello urlos 克饶,這時(shí)按鍵盤(pán)Ctrl+c來(lái)終止輸出酝蜒。
啟動(dòng)容器(后臺(tái)模式)
我們將上面的命令再稍作修改,把 -it 替換為 -d 看看結(jié)果:

root@ubuntu:~# docker run -d ubuntu:16.04 sh -c "while true; do echo hello urlos; sleep 1; done"
0cf141fd0745fb4dc104bec1a3238a1bd8dad7aa72926dea0a39ddc7ba54fe32

在輸出中彤路,我們沒(méi)有看到期望的"hello world"秕硝,而是一串長(zhǎng)字符
0cf141fd0745fb4dc104bec1a3238a1bd8dad7aa72926dea0a39ddc7ba54fe32

這個(gè)長(zhǎng)字符串叫做容器ID,對(duì)每個(gè)容器來(lái)說(shuō)都是唯一的洲尊,我們可以通過(guò)容器ID來(lái)查看對(duì)應(yīng)的容器發(fā)生了什么远豺。
首先,我們需要確認(rèn)容器有在運(yùn)行坞嘀,可以通過(guò) docker ps來(lái)查看:

root@ubuntu:~# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                     NAMES
0cf141fd0745        ubuntu:16.04        "sh -c 'while true; …"   2 minutes ago       Up 2 minutes                                  hopeful_matsumoto

然后使用 docker logs [ID或者名字]命令躯护,查看容器內(nèi)的標(biāo)準(zhǔn)輸出:

root@ubuntu:~# docker logs hopeful_matsumoto
hello urlos
hello urlos
hello urlos
hello urlos
hello urlos
hello urlos
hello urlos
hello urlos

我們可以看到,在容器內(nèi)部已經(jīng)輸出了非常多的hello urlos丽涩,這說(shuō)明容器處于后臺(tái)運(yùn)行模式棺滞。

運(yùn)行一個(gè)WEB應(yīng)用容器
現(xiàn)在我們將在docker容器中運(yùn)行一個(gè) nginx 應(yīng)用來(lái)運(yùn)行一個(gè)web應(yīng)用。

首先從Docker Hub公共鏡像源中拉取鏡像:

root@ubuntu:~# docker pull nginx

然后運(yùn)行這個(gè)鏡像:

root@ubuntu:~# docker run -d -p 8080:80 nginx

參數(shù)說(shuō)明:

  • -d:讓容器在后臺(tái)運(yùn)行矢渊。
  • -p:讓宿主機(jī)的8080端口映射給容器內(nèi)部的80端口继准。

查看WEB應(yīng)用容器

使用 docker ps 來(lái)查看我們正在運(yùn)行的容器:

root@ubuntu:~# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                     NAMES
b394756b6c5d        nginx               "nginx -g 'daemon of…"   3 seconds ago       Up 2 seconds        0.0.0.0:8080->80/tcp                elastic_babbage

我們看到端口信息 0.0.0.0:8080->80/tcp,意思是宿主機(jī)的8080端口映射給容器內(nèi)部的80端口矮男。

這時(shí)我們可以通過(guò)瀏覽器訪(fǎng)問(wèn)WEB應(yīng)用:

在這里插入圖片描述

查看端口的快捷方法
通過(guò)docker ps命令可以查看到容器的端口映射移必,docker還提供了另一個(gè)快捷方式 docker port,使用 docker port 可以查看指定 (ID 或者名字)容器的某個(gè)確定端口映射到宿主機(jī)的端口號(hào)毡鉴。

上面我們創(chuàng)建的 web 應(yīng)用容器 ID 為 b394756b6c5d 容器名為 elastic_babbage崔泵。

我可以使用 docker port b394756b6c5ddocker port elastic_babbage 來(lái)查看容器端口的映射情況秒赤。

root@ubuntu:~# docker port b394756b6c5d
80/tcp -> 0.0.0.0:8080
root@ubuntu:~# docker port affectionate_montalcini
80/tcp -> 0.0.0.0:8080

查看 WEB 應(yīng)用程序日志
使用docker logs [ID或者名字]可以查看容器內(nèi)部的標(biāo)準(zhǔn)輸出。

root@ubuntu:~# docker logs b394756b6c5d
192.168.43.131 - - [04/Jun/2019:06:28:42 +0000] "GET / HTTP/1.1" 200 612 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:67.0) Gecko/20100101 Firefox/67.0" "-"
2019/06/05 06:28:42 [error] 6#6: *1 open() "/usr/share/nginx/html/favicon.ico" failed (2: No such file or directory), client: 192.168.43.131, server: localhost, request: "GET /favicon.ico HTTP/1.1", host: "192.168.43.122:8080"
192.168.43.131 - - [04/Jun/2019:06:28:42 +0000] "GET /favicon.ico HTTP/1.1" 404 153 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:67.0) Gecko/20100101 Firefox/67.0" "-"

查看WEB應(yīng)用程序容器的進(jìn)程
我們還可以使用 docker top 來(lái)查看容器內(nèi)部運(yùn)行的進(jìn)程

root@ubuntu:~# docker top b394756b6c5d
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                2069                2050                0                   23:24               ?                   00:00:00            nginx: master process nginx -g daemon off;
systemd+            2100                2069                0                   23:24               ?                   00:00:00            nginx: worker process

停止 WEB 應(yīng)用容器
使用 docker stop [ID或者名字] 命令停止容器

root@ubuntu:~# docker stop b394756b6c5d
b394756b6c5d

啟動(dòng) WEB 應(yīng)用容器
使用 docker start [ID或者名字] 命令啟動(dòng)已經(jīng)停止的容器

root@ubuntu:~# docker start b394756b6c5d
b394756b6c5d

重新啟動(dòng)WEB應(yīng)用容器
我們能還可以使用 docker restart [ID或者名字] 命令重新啟動(dòng)正在運(yùn)行的容器

root@ubuntu:~# docker restart b394756b6c5d
b394756b6c5d

docker ps -l 查詢(xún)最后一次創(chuàng)建的容器:

root@ubuntu:~# docker ps -l
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
b394756b6c5d        nginx               "nginx -g 'daemon of…"   12 minutes ago      Up 12 minutes       0.0.0.0:8080->80/tcp   elastic_babbage

刪除WEB應(yīng)用容器
我們可以使用 docker rm [ID或者名字] 命令來(lái)刪除不需要的容器

注意:刪除容器時(shí)憎瘸,容器必須是停止?fàn)顟B(tài)入篮,否則會(huì)報(bào)如下錯(cuò)誤:

root@ubuntu:~# docker rm b394756b6c5d
Error response from daemon: You cannot remove a running container b394756b6c5d95f1d43f11393c169cc73de40938d8f09db81077c8bce6e5881a. Stop the container before attempting removal or force remove

如果要?jiǎng)h除正在運(yùn)行的容器,這時(shí)我們只需要加入 -f 參數(shù)即可:

root@ubuntu:~# docker rm -f b394756b6c5d
b394756b6c5d

接下來(lái)我們學(xué)習(xí):
Docker入門(mén)基礎(chǔ)之鏡像使用
Docker入門(mén)基礎(chǔ)之應(yīng)用實(shí)戰(zhàn)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末幌甘,一起剝皮案震驚了整個(gè)濱河市潮售,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌含潘,老刑警劉巖饲做,帶你破解...
    沈念sama閱讀 219,110評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異遏弱,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)塞弊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)漱逸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人游沿,你說(shuō)我怎么就攤上這事饰抒。” “怎么了诀黍?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,474評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵袋坑,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我眯勾,道長(zhǎng)枣宫,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,881評(píng)論 1 295
  • 正文 為了忘掉前任吃环,我火速辦了婚禮也颤,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘郁轻。我一直安慰自己翅娶,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,902評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布好唯。 她就那樣靜靜地躺著竭沫,像睡著了一般。 火紅的嫁衣襯著肌膚如雪骑篙。 梳的紋絲不亂的頭發(fā)上蜕提,一...
    開(kāi)封第一講書(shū)人閱讀 51,698評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音替蛉,去河邊找鬼贯溅。 笑死拄氯,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的它浅。 我是一名探鬼主播译柏,決...
    沈念sama閱讀 40,418評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼姐霍!你這毒婦竟也來(lái)了鄙麦?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,332評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤镊折,失蹤者是張志新(化名)和其女友劉穎胯府,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體恨胚,經(jīng)...
    沈念sama閱讀 45,796評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡骂因,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,968評(píng)論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了赃泡。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片寒波。...
    茶點(diǎn)故事閱讀 40,110評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖升熊,靈堂內(nèi)的尸體忽然破棺而出俄烁,到底是詐尸還是另有隱情,我是刑警寧澤级野,帶...
    沈念sama閱讀 35,792評(píng)論 5 346
  • 正文 年R本政府宣布页屠,位于F島的核電站,受9級(jí)特大地震影響蓖柔,放射性物質(zhì)發(fā)生泄漏辰企。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,455評(píng)論 3 331
  • 文/蒙蒙 一渊抽、第九天 我趴在偏房一處隱蔽的房頂上張望蟆豫。 院中可真熱鬧,春花似錦懒闷、人聲如沸十减。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,003評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)帮辟。三九已至,卻和暖如春玩焰,著一層夾襖步出監(jiān)牢的瞬間由驹,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,130評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蔓榄,地道東北人并炮。 一個(gè)月前我還...
    沈念sama閱讀 48,348評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像甥郑,于是被迫代替她去往敵國(guó)和親逃魄。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,047評(píng)論 2 355

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