超哥

https://www.cnblogs.com/pyyu/p/9485268.html#
Linux容器不是模擬一個完整的操作系統(tǒng)福扬,而是對進程進行隔離那槽。
容器里面的應用或听,直接就是底層系統(tǒng)的一個進程闽烙。
多個容器可以共享資源。
容器只包含他用到的組件候引。
docker創(chuàng)建的所有虛擬實例共有一個Linux內(nèi)核韧拒。
docker三大概念:鏡像楼眷,容器,倉庫
鏡像就是一個只讀模板斤富,鏡像可以用來創(chuàng)建容器膏潮。
union FS技術,分層存儲满力,
鏡像和容器的關系焕参,就像類和實例一樣屋谭,鏡像是靜態(tài)的定義,容器是鏡像運行時的實體龟糕。
容器可以被創(chuàng)建桐磁,啟動,停止讲岁,刪除我擂,暫停
docker利用容器來運行應用程序
容器是從鏡像創(chuàng)建的運行實例,每個容器之間是隔離的缓艳。
可以把容器看作一個簡易版的Linux環(huán)境和運行在其中的應用程序校摩。
倉庫是集中存放鏡像的地方,倉庫分為公開倉庫public和私有倉庫private阶淘。最大的公開倉庫是docker hub衙吩,存放了數(shù)量龐大的鏡像供用戶下載。
當用戶創(chuàng)建的了自己的鏡像后就可以使用push命令將他上傳到公有或私有倉庫溪窒。
國內(nèi)的一些云服務商提供了針 對 Docker Hub 的鏡像服務(Registry Mirror)坤塞,這些鏡像服務被稱為加速器。
使用加速器會直接從國內(nèi)的地址下載 Docker Hub 的鏡像澈蚌,比直接從官方網(wǎng)站下載速度會提高很多摹芙。
官方教程如下,最正確安裝docker姿勢

docker最低支持centos7且在64位平臺上宛瞄,內(nèi)核版本在3.10以上
[root@oldboy_python ~ 10:48:11]#uname -r
3.10.0-693.el7.x86_64

1.卸載舊版本
sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-selinux \
                  docker-engine-selinux \
                  docker-engine

2.設置存儲庫
sudo yum install -y yum-utils \
  device-mapper-persistent-data \
  lvm2
sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

3.安裝docker社區(qū)版
sudo yum install docker-ce
4.啟動關閉docker
systemctl start docker

Docker鏡像加速器

一條命令加速

curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://95822026.m.daocloud.io

docker基礎命令注釋

[root@docker ~]# docker --help

使用docker鏡像

從倉庫獲取鏡像
管理本地主機的鏡像
獲取鏡像
從docker registry獲取鏡像的命令是docker pull浮禾。命令格式是:
docker pull [選項][docker registry地址] 倉庫名:標簽
image文件是通用,可以共享的
列出所有的image文件
docker image ls
刪除image文件
docker image rm [imagename]
[root@docker ~]# docker search centos #搜索所有centos的docker鏡像
可以使用docker pull命令來從倉庫獲取所需要的鏡像份汗。
[root@docker ~]# docker pull centos #獲取centos鏡像
[root@docker ~]# docker run -it centos /bin/bash #完成后可以使用該鏡像創(chuàng)建一個容器
鏡像的ID唯一標識了鏡像盈电,如果ID相同,說明是同一鏡像。
TAG信息來區(qū)分不同發(fā)行版本杯活,如果不指定具體標記,默認使用latest標記信息匆帚。
[root@docker ~]# docker images #查看docker鏡像
如果要移除本地的鏡像,可以使用docker rmi命令(在刪除鏡像之前先用docker rm刪除依賴于這個鏡像的所有容器)。注意docker rm 命令是移除容器轩猩。
[root@docker ~]# docker rmi imageID #刪除docker鏡像
如果要導出鏡像到本地文件,可以使用docker save命令卷扮。
[root@docker ~]# docker save centos > /opt/centos.tar.gz #導出docker鏡像至本地
可以使用docker load從本地文件中導入到本地docker鏡像庫
[root@docker ~]# docker load < /opt/centos.tar.gz #導入本地鏡像到docker鏡像庫
[root@docker~]# docker images #查看鏡像導入情況
啟動容器有兩種方式,一種是基于鏡像新建一個容器并啟動均践,另外一個是將在停止狀態(tài)(stopped)的容器重新啟動晤锹。
[root@docker ~]# docker run centos /bin/echo "hehe"
[root@docker ~]# docker run --name mydocker -it centos /bin/bash#啟動一個終端,允許用戶進行交互。
--name:給容器定義一個名稱
-i:則讓容器的標準輸入保持打開彤委。
-t:讓Docker分配一個偽終端,并綁定到容器的標準輸入上
/bin/bash:執(zhí)行一個命令

當利用docker run來創(chuàng)建容器時鞭铆,Docker在后臺運行的標準操作包括

檢查本地是否存在指定的鏡像,不存在就從公有倉庫下載
利用鏡像創(chuàng)建并啟動一個容器
分配一個文件系統(tǒng),并在只讀的鏡像層外面掛在一層可讀寫層
從宿主主機配置的網(wǎng)橋接口中橋接一個虛擬接口到容器中去
從地址池配置一個ip地址給容器
執(zhí)行用戶指定的應用程序
執(zhí)行完畢后容器被終止

獲取鏡像 hello-world

docker pull hello-world

檢查鏡像

docker images

運行image文件,可以用容器id

docker run hello-world

檢查docker容器進程

docker ps

檢查所有運行過的容器

docker ps -a

運行一個Ubuntu容器

[root@oldboy_python ~ 11:52:22]#docker pull ubuntu:14.04
下載過程可以看出鏡像是由多層存儲構成的车遂。下載也是一層一層封断,并非單一的文件。
下載過程中給出每一層的前12位ID舶担。下載結(jié)束后會給出sha246的文件一致性校驗值坡疼。
運行Ubuntu容器
[root@oldboy_python ~ 12:18:53]#docker run -it --rm ubuntu:14.04 bash
root@3efbb2749d7c:/# cat /etc/os-release

使用exit退出容器

docker run就是運行容器的命令。
參數(shù)
-it : -i 是交互式操作衣陶,-t是終端
-rm : 容器退出后將其刪除柄瑰。也可以不指定參數(shù),手動docker rm剪况,使用-rm可以避免浪費空間教沾。
ubuntu:14.04 這指的是鏡像文件
bash : 指定用交互式的shell,因此需要bash命令
-d參數(shù):后臺運行容器译断,返回容器ID
[root@oldboy_python ~ 15:58:14]#docker run -d centos /bin/sh -c "while true;do echo hello centos; sleep 1;done"

docker start c02
docker stop c02
docker logs c02
docker rm c02
docker ps
docker images #列出所有本級鏡像
docker pull centos #獲取新的centos鏡像
docker search nginx #搜索nginx鏡像

構建鏡像

1.通過commit修改鏡像
2.編寫dockerfile

進入容器
使用-d參數(shù)時授翻,容器啟動后會進入后臺。某些時候需要進入容器進行操作,有很多種方法孙咪,包括使用docker attach命令或nsenter工具等堪唐。
docker exec -it 容器id
docker attach 容器id

提交創(chuàng)建自定義的鏡像(docker container commit)

1.我們進入交互式的centos容器中,發(fā)現(xiàn)沒有vim命令
docker run -it centos
2.在當前容器中该贾,安裝一個vim
yum install -y vim
3.安裝好vim之后羔杨,exit退出容器
exit
4.查看剛才安裝好vim的容器記錄
docker container ls -a
5.提交這個容器,創(chuàng)建新的image
docker commit 059fdea031ba chaoyu/centos-vim
6.查看鏡像文件
[root@master /home]docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
chaoyu/centos-vim latest fd2685ae25fe 5 minutes ago 348MB

外部訪問容器

容器中可以運行網(wǎng)絡應用杨蛋,但是要讓外部也可以訪問這些應用,可以通過-p或-P參數(shù)指定端口映射理澎。
-P 參數(shù)會隨機映射端口到容器開放的網(wǎng)絡端口
[root@oldboy_python ~ 16:31:37]#docker run -d -P training/webapp python app.py
檢查映射的端口

宿主機ip:32768 映射容器的5000端口

[root@oldboy_python ~ 16:34:02]#docker ps -l
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                     NAMES
cfd632821d7a        training/webapp     "python app.py"     21 seconds ago      Up 20 seconds       0.0.0.0:32768->5000/tcp   brave_fermi

也可以通過-p參數(shù)指定映射端口

指定服務器的9000端口逞力,映射到容器內(nèi)的5000端口

[root@oldboy_python ~ 16:46:13]#docker run -d -p 9000:5000 training/webapp python app.py
查看指定容器的端口映射
[root@oldboy_python ~ 16:49:01]#docker port c0b
5000/tcp -> 0.0.0.0:9000
查看容器內(nèi)的進程
[root@oldboy_python ~ 16:49:05]#docker top c0b

利用dockerfile定制鏡像

鏡像是容器的基礎,每次執(zhí)行docker run的時候都會指定哪個鏡像作為容器運行的基礎糠爬。我們之前的例子都是使用來自docker hub的鏡像寇荧,直接使用這些鏡像只能滿足一定的需求,當鏡像無法滿足我們的需求時执隧,就得自定制這些鏡像揩抡。
鏡像的定制就是定制每一層所添加的配置、文件镀琉。如果可以把每一層修改峦嗤、安裝、構建屋摔、操作的命令都寫入到一個腳本烁设,用腳本來構建、定制鏡像钓试,這個腳本就是dockerfile装黑。
Dockerfile 是一個文本文件副瀑,其內(nèi)包含了一條條的指令(Instruction),每一條指令 構建一層恋谭,因此每一條指令的內(nèi)容糠睡,就是描述該層應當如何構建。

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末疚颊,一起剝皮案震驚了整個濱河市铜幽,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌串稀,老刑警劉巖除抛,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異母截,居然都是意外死亡到忽,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進店門清寇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來喘漏,“玉大人,你說我怎么就攤上這事华烟◆媛酰” “怎么了?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵盔夜,是天一觀的道長负饲。 經(jīng)常有香客問我,道長喂链,這世上最難降的妖魔是什么返十? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮椭微,結(jié)果婚禮上洞坑,老公的妹妹穿的比我還像新娘。我一直安慰自己蝇率,他們只是感情好迟杂,可當我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著本慕,像睡著了一般排拷。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上间狂,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天攻泼,我揣著相機與錄音,去河邊找鬼。 笑死忙菠,一個胖子當著我的面吹牛何鸡,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播牛欢,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼骡男,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了傍睹?” 一聲冷哼從身側(cè)響起隔盛,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎拾稳,沒想到半個月后吮炕,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡访得,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年龙亲,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片悍抑。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡鳄炉,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出搜骡,到底是詐尸還是另有隱情拂盯,我是刑警寧澤,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布记靡,位于F島的核電站谈竿,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏簸呈。R本人自食惡果不足惜榕订,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蜕便。 院中可真熱鬧,春花似錦贩幻、人聲如沸轿腺。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽族壳。三九已至,卻和暖如春趣些,著一層夾襖步出監(jiān)牢的瞬間仿荆,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留拢操,地道東北人锦亦。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像令境,于是被迫代替她去往敵國和親杠园。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,577評論 2 353

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

  • 1.容器的生命周期: * 檢查本地是否存在鏡像舔庶,如果不存在即從遠端倉庫檢索 * 利用鏡像啟動容器 * 分配一個文件...
    你好樹洞先生閱讀 494評論 0 0
  • docker容器 1:什么是容器抛蚁? 容器就是在隔離的環(huán)境運行的一個進程,如果進程停止惕橙,容器就會銷毀瞧甩。 隔離的環(huán)境擁...
    Zh_bd92閱讀 284評論 0 0
  • docker容器 docker容器1:什么是容器?2:容器和虛擬化的區(qū)別3:容器技術的發(fā)展過程:1):chroot...
    青衫憶笙666閱讀 1,450評論 0 0
  • Docker => 1.31.1 Jenkins => 2.174 安裝Docker [root@localhos...
    唐潮_小五閱讀 1,185評論 0 0
  • 16宿命:用概率思維提高你的勝算 以前的我是風險厭惡者弥鹦,不喜歡去冒險肚逸,但是人生放棄了冒險,也就放棄了無數(shù)的可能惶凝。 ...
    yichen大刀閱讀 6,046評論 0 4