docker 學(xué)習(xí)基本操作一

可寫的容器層

  • 當(dāng)容器啟動(dòng)時(shí)搅幅,一個(gè)新的可寫層被加載到鏡像的頂部;
  • 新增加的這一層叫做“容器層”堪置,“容器層”之下的叫做“鏡像層”躬存;
  • 所有多容器的改動(dòng),無論是增加舀锨、刪除岭洲、還是修改文件都只會(huì)發(fā)生在容器層;
  • 容器層保存的是鏡像變化的部分坎匿,不會(huì)對(duì)鏡像本身進(jìn)行任何修改盾剩,這個(gè)操作叫做copy-on-write

構(gòu)建鏡像:

方法:  
docker commit命令構(gòu)建鏡像  
docker-file構(gòu)建鏡像

docker commit

  • 運(yùn)行容器:
    ?docker run -it 鏡像名稱
  • 安裝需要的軟件:
    ?在運(yùn)行的容器的內(nèi)部
  • 使用docker ps命令:
    ?查看當(dāng)前正在運(yùn)行的容器,主要是查看容器名稱
  • 使用docker commit 運(yùn)行容器名稱 新的鏡像名稱
    ?創(chuàng)建鏡像

docker file

1.創(chuàng)建dockerfile文件:

vim Dockerfile  
FROM ubuntu  
RUN apt-get update && apt-get -y install vim  

2.運(yùn)行命令使用Dockerfile文件創(chuàng)建鏡像:

[root@localhost ~]# docker build -t  ubuntu-dockerfile .
Sending build context to Docker daemon 4.055 MB
Step 1/2 : FROM ubuntu
Trying to pull repository docker.io/library/ubuntu ... 
latest: Pulling from docker.io/library/ubuntu
84ed7d2f608f: Pull complete 
be2bf1c4a48d: Pull complete 
a5bdc6303093: Pull complete 
e9055237d68d: Pull complete 
Digest: sha256:868fd30a0e47b8d8ac485df174795b5e2fe8a6c8f056cc707b232d65b8a1ab68
Status: Downloaded newer image for docker.io/ubuntu:latest
 ---> 1d9c17228a9e
Step 2/2 : RUN apt-get update && apt-get install -y vim
 ---> Running in c0eb0a550442
Get:1 http://security.ubuntu.com/ubuntu bionic-security InRelease [83.2 kB]
Processing triggers for libc-bin (2.27-3ubuntu1) ...
 ---> f24a4faf7b23
Removing intermediate container c0eb0a550442
Successfully built f24a4faf7b23

命令解釋:
docker build :
-t :
ubuntu-dockerfile :
. :

3.查看創(chuàng)建成功的鏡像文件

[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu-dockerfile   latest              f24a4faf7b23        8 minutes ago       170 MB

4.查看鏡像的構(gòu)建歷史替蔬,也就是dockfile的執(zhí)行過程

[root@localhost ~]# docker history ubuntu-dockerfile
IMAGE               CREATED             CREATED BY                                      SIZE                COMMENT
f24a4faf7b23        2 hours ago         /bin/sh -c apt-get update && apt-get insta...   83.8 MB             
1d9c17228a9e        4 days ago          /bin/sh -c #(nop)  CMD ["/bin/bash"]            0 B                 
<missing>           4 days ago          /bin/sh -c mkdir -p /run/systemd && echo '...   7 B                 
<missing>           4 days ago          /bin/sh -c rm -rf /var/lib/apt/lists/*          0 B                 
<missing>           4 days ago          /bin/sh -c set -xe   && echo '#!/bin/sh' >...   745 B               
<missing>           4 days ago          /bin/sh -c #(nop) ADD file:c0f17c7189fc11b...   86.7 MB 

鏡像的緩存特性:

  • Docker 會(huì)緩存已有鏡像的鏡像層告私,構(gòu)建新鏡像時(shí),如果某鏡像層已經(jīng)存在承桥,就直接使用驻粟,無需重新創(chuàng)建。
  • 如果不想使用緩存凶异,可以在docker build 命令中添加--no-cache命令選項(xiàng)
  • 如果改變Dockfile中命令的執(zhí)行順序格嗅,但由于docker分層的結(jié)構(gòu)特性,Docker 必須重建受影響的鏡像層

1.修改原有的Dockerfile文件唠帝,添加復(fù)制一個(gè)文件到/

vim Dockerfile
FROM ubuntu
RUN apt-get update && apt-get install -y vim
COPY testfile /

2.創(chuàng)建需要被復(fù)制的文件

[root@localhost ~]# touch testfile

3.執(zhí)行命令進(jìn)行新鏡像的構(gòu)建

[root@localhost ~]# docker build -t  ubuntu-dockerfile2 .
Sending build context to Docker daemon 4.059 MB
Step 1/3 : FROM ubuntu
 ---> 1d9c17228a9e
Step 2/3 : RUN apt-get update && apt-get install -y vim
 ---> Using cache     #使用了緩存
 ---> f24a4faf7b23
Step 3/3 : COPY testfile /
 ---> ae5a3ec0f33a
Removing intermediate container 5461a0ed5c9a #移除創(chuàng)建鏡像時(shí)啟動(dòng)的中間容器
Successfully built ae5a3ec0f33a #成功創(chuàng)建新的鏡像

鏡像的保存和分發(fā):

docker hub是docker公司開發(fā)的和維護(hù)的公共倉庫,用戶可以注冊(cè)賬號(hào)后將自己構(gòu)建的鏡像通過docker push 用戶名/倉庫名:tag
命令將鏡像上傳到自己的倉庫玄柏。

  • 首相使用docker images m 命令查看本地已經(jīng)構(gòu)建的鏡像:
root@jyq-virtual-machine:/home/jyq# docker  images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
httpd               latest              d3a13ec4a0f1        2 weeks ago         132MB
root@jyq-virtual-machine:/home/jyq# 

  • 然后使用docker tag命令對(duì)存在的鏡像進(jìn)行重新的命名:
root@jyq-virtual-machine:/home/jyq# docker  tag httpd:latest jiyongqiang0310/learn-test:v1
root@jyq-virtual-machine:/home/jyq# docker images
REPOSITORY                   TAG                 IMAGE ID            CREATED             SIZE
jiyongqiang0310/learn-test   v1                  d3a13ec4a0f1        2 weeks ago         132MB
httpd                        latest              d3a13ec4a0f1        2 weeks ago         132MB

  • 登錄已經(jīng)申請(qǐng)的docker hub賬號(hào):
# 使用 -u 選項(xiàng)指定自己的用戶名
root@jyq-virtual-machine:/home/jyq# docker login -u jiyongqiang0310
Password: 
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded
root@jyq-virtual-machine:/home/jyq#

  • 登錄成功后上傳自己已經(jīng)構(gòu)建好的鏡像文件:
root@jyq-virtual-machine:/home/jyq# docker push jiyongqiang0310/learn-test:v1
The push refers to repository [docker.io/jiyongqiang0310/learn-test]
32d58e8790a5: Layer already exists 
15c7c3e3b182: Layer already exists 
bc313b7c45f1: Layer already exists 
7fb2893e5a45: Layer already exists 
0a07e81f5da3: Layer already exists 
v1: digest: sha256:214019bfc77677ac1f0c86b3a96e2b91600de7e2224f195b446cb13572cebb6b size: 1367
root@jyq-virtual-machine:/home/jyq# 

  • 登錄 [https://hub.docker.com就可以看到自己上產(chǎn)的鏡像文件
    企業(yè)微信截圖_15517653131553.png

構(gòu)建自己的倉庫:

  • 首先在自己本地的根目錄創(chuàng)建一個(gè)用于存儲(chǔ)鏡像文件的目錄: root@jyq-virtual-machine:/# mkdir myregistry
  • 然后使用docker開源的倉庫軟件啟動(dòng)一個(gè)容器:
# 啟動(dòng)一個(gè)倉庫容器
root@jyq-virtual-machine:/# docker  run -d -p 5000:5000 -v /myregistry:/var/lib/registry registry:2
Unable to find image 'registry:2' locally
2: Pulling from library/registry
169185f82c45: Pull complete 
046e2d030894: Pull complete 
188836fddeeb: Pull complete 
832744537747: Pull complete 
7ceea07e80be: Pull complete 
Digest: sha256:870474507964d8e7d8c3b53bcfa738e3356d2747a42adad26d0d81ef4479eb1b
Status: Downloaded newer image for registry:2
83936c63e2488a40170f8c1afc42cce5f444f0b73f699ea4a5f4293a6633c1f8
#查看容器是否已經(jīng)運(yùn)行成功
root@jyq-virtual-machine:/# docker  ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
83936c63e248        registry:2          "/entrypoint.sh /etc…"   54 seconds ago      Up 53 seconds       0.0.0.0:5000->5000/tcp   xenodochial_noyce
35eaaec97f0b        httpd               "httpd-foreground"       24 hours ago        Up 24 hours         0.0.0.0:8080->80/tcp     goofy_swartz

  • 將本地已經(jīng)存在的鏡像進(jìn)行重命名襟衰,使其滿足[registry-host]:[port]/[username]/xxx的格式:
root@jyq-virtual-machine:/# docker tag httpd:latest 192.168.100.128:5000/jiyongqiang/httpd:v1
root@jyq-virtual-machine:/# docker images
REPOSITORY                               TAG                 IMAGE ID            CREATED             SIZE
192.168.100.128:5000/jiyongqiang/httpd   v1                  d3a13ec4a0f1        2 weeks ago         132MB

  • 然后使用docker push 命令將已經(jīng)構(gòu)建好的容器上傳到自己的私有倉庫。

命令回顧:

  • docker run 運(yùn)行容器
  • docker commit 將運(yùn)行的容器提交生成新的鏡像
  • docker build 使用DockerFile文件構(gòu)建鏡像
  • docker history 查看某鏡像構(gòu)建時(shí)執(zhí)行的命令
  • docker images 查看本地已經(jīng)存在的鏡像文件
  • docker ps -a 查看所有狀態(tài)的容器
  • docker container ls -a 同上
  • docker tag 給本地鏡像重新鏡像tag命名
  • docker pull 從倉庫拉取鏡像
  • docker push 將鏡像上傳到倉庫
  • docker rmi 刪除沒有被啟動(dòng)容器使用的鏡像文件
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末粪摘,一起剝皮案震驚了整個(gè)濱河市瀑晒,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌徘意,老刑警劉巖苔悦,帶你破解...
    沈念sama閱讀 221,406評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異椎咧,居然都是意外死亡玖详,警方通過查閱死者的電腦和手機(jī)把介,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,395評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蟋座,“玉大人拗踢,你說我怎么就攤上這事∠蛲危” “怎么了巢墅?”我有些...
    開封第一講書人閱讀 167,815評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)券膀。 經(jīng)常有香客問我君纫,道長(zhǎng),這世上最難降的妖魔是什么芹彬? 我笑而不...
    開封第一講書人閱讀 59,537評(píng)論 1 296
  • 正文 為了忘掉前任蓄髓,我火速辦了婚禮,結(jié)果婚禮上雀监,老公的妹妹穿的比我還像新娘双吆。我一直安慰自己,他們只是感情好会前,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,536評(píng)論 6 397
  • 文/花漫 我一把揭開白布好乐。 她就那樣靜靜地躺著,像睡著了一般瓦宜。 火紅的嫁衣襯著肌膚如雪蔚万。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,184評(píng)論 1 308
  • 那天临庇,我揣著相機(jī)與錄音反璃,去河邊找鬼。 笑死假夺,一個(gè)胖子當(dāng)著我的面吹牛淮蜈,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播已卷,決...
    沈念sama閱讀 40,776評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼梧田,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了侧蘸?” 一聲冷哼從身側(cè)響起裁眯,我...
    開封第一講書人閱讀 39,668評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎讳癌,沒想到半個(gè)月后穿稳,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,212評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡晌坤,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,299評(píng)論 3 340
  • 正文 我和宋清朗相戀三年逢艘,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了旦袋。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,438評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡埋虹,死狀恐怖猜憎,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情搔课,我是刑警寧澤胰柑,帶...
    沈念sama閱讀 36,128評(píng)論 5 349
  • 正文 年R本政府宣布,位于F島的核電站爬泥,受9級(jí)特大地震影響柬讨,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜袍啡,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,807評(píng)論 3 333
  • 文/蒙蒙 一踩官、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧境输,春花似錦蔗牡、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,279評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至信粮,卻和暖如春黔攒,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背强缘。 一陣腳步聲響...
    開封第一講書人閱讀 33,395評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工督惰, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人旅掂。 一個(gè)月前我還...
    沈念sama閱讀 48,827評(píng)論 3 376
  • 正文 我出身青樓赏胚,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親商虐。 傳聞我的和親對(duì)象是個(gè)殘疾皇子栅哀,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,446評(píng)論 2 359

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