Docker容器之鏡像管理,端口映射,容器互聯(lián)

docker鏡像的分層

  • Dockerfile 中的每個(gè)指令都會(huì)創(chuàng)建一個(gè)新的鏡像層;
  • 鏡像層將會(huì)被緩存和復(fù)用;
  • 當(dāng) Dockerfile 的指令修改了,復(fù)制的文件變化了,或者構(gòu)建鏡像時(shí)指定的變量不同了,對(duì)應(yīng)的鏡像層緩存就會(huì)失效;
  • 某一層的鏡像緩存失效之后,它之后的鏡像層緩存都會(huì)失效;
  • 鏡像層是不變的,如果在某一層中添加一個(gè)文件,然后在下一層中刪除它,則鏡像中依然包含該文件

docker鏡像

  • 是應(yīng)用發(fā)布的標(biāo)準(zhǔn)格式
  • 可支撐一個(gè)docker容器的運(yùn)行

docker鏡像的創(chuàng)建方法

  • 基于已有鏡像創(chuàng)建
  • 基于本地模板創(chuàng)建
  • 基于dockerfile創(chuàng)建

基于已有鏡像創(chuàng)建

將容器里面運(yùn)行的程序及運(yùn)行環(huán)境打包生成新的鏡像

docker commit [選項(xiàng)] 容器ID/名稱(chēng) 倉(cāng)庫(kù)名稱(chēng):[標(biāo)簽]
-m:說(shuō)明信息
-a:作者信息
-p:生成過(guò)程中停止容器的運(yùn)行

基于本地模板創(chuàng)建

  • 通過(guò)導(dǎo)入操作系統(tǒng)模板文件生成新的鏡像
  • 使用wget命令導(dǎo)入為本地鏡像
  • 導(dǎo)入成功后可查看本地鏡像信息

基于 Dockerfile 創(chuàng)建

  • Dockerfile 是由一組指令組成的文件
  • Dockerfile 結(jié)構(gòu)的四部分
    • 基礎(chǔ)鏡像信息
    • 維護(hù)者信息
    • 鏡像操作指令
    • 容器啟動(dòng)時(shí)執(zhí)行指令
  • 使用 Dockerfile 創(chuàng)建鏡像并在容器中運(yùn)行

dockerfile操作指令

Docker容器之鏡像管理,端口映射,容器互聯(lián)

讓客戶(hù)滿(mǎn)意是我們工作的目標(biāo),不斷超越客戶(hù)的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛(ài)。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶(hù),將通過(guò)不懈努力成為客戶(hù)在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:申請(qǐng)域名、虛擬主機(jī)、營(yíng)銷(xiāo)軟件、網(wǎng)站建設(shè)、南寧網(wǎng)站維護(hù)、網(wǎng)站推廣。

基于已有鏡像創(chuàng)建

[root@localhost ~]# docker pull centos        //下載鏡像
[root@localhost ~]# docker create -it centos /bin/bash      //基于centos鏡像創(chuàng)建容器
30d395e63fc32b9dcf96029869f40a8002990f689410cca2660af4056ed2614f
[root@localhost ~]# docker ps -a      //查看容器信息
CONTAINER ID    IMAGE   COMMAND     CREATED     STATUS      PORTS               NAMES
30d395e63fc3        centos              "/bin/bash"         7 seconds ago       Created                                 inspiring_germain
[root@localhost ~]# docker commit -m "new" -a "daoke" 30d395e63fc3 daoke:centos    //將容器里面運(yùn)行的程序及運(yùn)行環(huán)境打包生成新的鏡像
sha256:66d76f9225b94ce6156db953bd16c384f74067f981d45bee99340f3a965506d3
[root@localhost ~]# docker images    //查看鏡像
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
daoke               centos              66d76f9225b9        10 seconds ago      220MB
centos              latest              0f3e07c0138f        3 months ago        220MB

基于本地模板創(chuàng)建

[root@localhost ~]# mount.cifs //192.168.100.3/LNMP-C7 /mnt/     //將本地模板掛載到Linux上
Password for root@//192.168.100.3/LNMP-C7:  
[root@localhost ~]# cd /mnt          //切換目錄到/mnt  
[root@localhost docker]# ls
debian-7.0-x86-minimal.tar.gz
[root@localhost mnt]# cat debian-7.0-x86-minimal.tar.gz | docker import - daoke:new            //基于本地模板創(chuàng)建一個(gè)鏡像
sha256:487145d2411f0440c50fd93d0e8a9e27610d2de745a25d06955f21c80e65753a
[root@localhost mnt]# docker images        //查看鏡像
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
daoke               new                 487145d2411f        8 seconds ago       215MB
centos              latest              0f3e07c0138f        3 months ago        220MB

基于dockefile文件創(chuàng)建

[root@localhost ~]# mkdir apache     //創(chuàng)建一個(gè)目錄
[root@localhost ~]# cd apache/
[root@localhost apache]# vim Dockerfile     //編寫(xiě)一個(gè)dockerfile文件
FROM centos                                   //基于的基礎(chǔ)鏡像
MAINTAINER The porject <xu>                //維護(hù)鏡像的用戶(hù)信息
RUN yum -y update                           //鏡像操作指令安裝Apache軟件
RUN yum -y install httpd                       //安裝Apache服務(wù)               
EXPOSE 80                                 //開(kāi)啟80端口
ADD index.html /var/www/html/index.html     //復(fù)制網(wǎng)址首頁(yè)文件
ADD run.sh /run.sh                       //將執(zhí)行腳本復(fù)制到鏡像中
RUN chmod 755 /run.sh
CMD ["/run.sh"]                           //啟動(dòng)容器時(shí)執(zhí)行腳本
[root@localhost apache]# vim run.sh       //編輯run.sh腳本
#!/bin/bash
rm -rf /run/httpd/*              //清除緩存
exec /usr/sbin/apachectl -D FOREGROUND            //執(zhí)行apache
[root@localhost apache]# echo "this is test web" > index.html     //創(chuàng)建頁(yè)面信息
[root@localhost apache]# ls
Dockerfile  index.html  run.sh
[root@localhost apache]# docker build -t httpd:centos .            //執(zhí)行創(chuàng)建鏡像
[root@localhost apache]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
httpd               centos              b267aaf2c395        22 seconds ago      401MB
[root@localhost apache]# docker ps -a       //此時(shí)沒(méi)有容器生成
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
[root@localhost apache]# docker run -d -p 1234:80 httpd:centos        //創(chuàng)建映射,創(chuàng)建容器
34c424efdab9e381116de697c4971200b1564b1e38644407cc58d5ba8923a0ea
[root@localhost apache]# docker ps -a         //容器開(kāi)啟,1234是外部端口,80是內(nèi)部端口
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                  NAMES
34c424efdab9        httpd:centos        "/run.sh"           9 seconds ago       Up 7 seconds        0.0.0.0:1234->80/tcp   great_williamson

Docker容器之鏡像管理,端口映射,容器互聯(lián)

公有倉(cāng)庫(kù)與私有倉(cāng)庫(kù)

  • 隨著創(chuàng)建的鏡像日志增多,就需要有一個(gè)保存鏡像的地方,這就是倉(cāng)庫(kù)。目前主要有兩種倉(cāng)庫(kù):公共倉(cāng)庫(kù)、私有倉(cāng)庫(kù)。最方便的就是使用公共倉(cāng)庫(kù)上傳和下載鏡像,下載公共倉(cāng)庫(kù)中的鏡像不需要注冊(cè),但是上傳是需要注冊(cè)的:公共倉(cāng)庫(kù)網(wǎng)址

公有倉(cāng)庫(kù)

//需要注冊(cè)docker賬號(hào)
//將創(chuàng)建好的 httpd:centos 鏡像。上傳到剛申請(qǐng)的公共倉(cāng)庫(kù)中:
docker tag httpd:centos xu/httpd:centos
docker push xu/httpd:centos

私有倉(cāng)庫(kù)

[root@localhost ~]# docker pull registry          //下載 registry鏡像
[root@localhost ~]# vim /etc/docker/daemon.json
{
    "insecure-registries": ["192.168.13.128:5000"],         //指定倉(cāng)庫(kù)地址和端口號(hào)
    "registry-mirrors": ["https://3a8s9zx5.mirror.aliyuncs.com"]      //鏡像加速
}
[root@localhost ~]# systemctl stop docker        //停止docker,開(kāi)啟docker
[root@localhost ~]# systemctl start docker
[root@localhost ~]# docker create -it registry /bin/bash   //創(chuàng)建registry鏡像容器
209dadd90f5c555ba328fae5763a61ae5fe4489acc4bfb945a99bb2307a9f139
[root@localhost ~]# docker ps -a      //查看容器
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                        PORTS               NAMES
209dadd90f5c        registry            "/entrypoint.sh /bin…"   4 seconds ago       Created                                           admiring_dewdney
34c424efdab9        httpd:centos        "/run.sh"                13 minutes ago      Exited (137) 35 seconds ago                       great_williamson
[root@localhost ~]# docker start 209dadd90f5c          //開(kāi)啟容器
209dadd90f5c
[root@localhost ~]# docker run -d -p 5000:5000 -v /data/registry:/tmp/registry registry          //創(chuàng)建映射端口和數(shù)據(jù)卷,宿主局的/data自動(dòng)掛載容器重點(diǎn)的/tmp
fd4185499dfa29f1a1133f59b706a5524572ae3f22140137214ab4c8212ea8a4
[root@localhost ~]# docker images        //查看一下當(dāng)前的鏡像
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
httpd               centos              b267aaf2c395        17 minutes ago      401MB
centos              latest              0f3e07c0138f        3 months ago        220MB
registry            latest              f32a97de94e1        10 months ago       25.8MB
[root@localhost ~]# docker tag httpd:centos 192.168.13.128:5000/httpd         //修改標(biāo)簽
[root@localhost ~]# docker push 192.168.13.128:5000/httpd  ##上傳鏡像
[root@localhost ~]# curl -XGET http://192.168.13.128:5000/v2/_catalog        //獲取私有倉(cāng)庫(kù)列表
{"repositories":["httpd"]}
[root@localhost ~]# docker pull 192.168.13.128:5000/httpd       //通過(guò)私有倉(cāng)庫(kù)下載

Docker 網(wǎng)絡(luò)通信

  • docker 提供了映射容器端口到宿主機(jī)和容器互聯(lián)機(jī)制來(lái)為容器提供網(wǎng)絡(luò)服務(wù)。

端口映射

  • Docker 提供端口映射機(jī)制來(lái)將容器內(nèi)的服務(wù)提供給外部網(wǎng)絡(luò)訪(fǎng)問(wèn),實(shí)質(zhì)上就是將宿主機(jī)的端口映射到容器中,使得外部網(wǎng)絡(luò)訪(fǎng)問(wèn)宿主機(jī)的端口便可訪(fǎng)問(wèn)容器內(nèi)的服務(wù)。
    [root@localhost ~]# docker run -d -P nginx       //隨機(jī)指定端口
    [root@localhost ~]# docker ps -a                 //查看容器
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                        PORTS                    NAMES
    bcd11c99804e        nginx               "nginx -g 'daemon of…"   13 seconds ago      Up 13 seconds                 0.0.0.0:32768->80/tcp

    利用瀏覽器訪(fǎng)問(wèn)32768端口

    Docker容器之鏡像管理,端口映射,容器互聯(lián)

容器互聯(lián)(使用centos鏡像)

[root@localhost ~]# docker run -itd -P --name web1 centos /bin/bash      //創(chuàng)建web1容器
87c58af3100fbc112bf344a421942dd53451c0c663b697a55a8d410868f314bf
[root@localhost ~]# docker run -itd -P --name web2 --link web1:web1 centos /bin/bash          //創(chuàng)建web2連接web1容器
7a84075802b5689912c323196b5af398fb5912316efda014921c0e23d3e9cdd2
[root@localhost ~]# docker ps -a           //查看容器信息
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                        PORTS                    NAMES
7a84075802b5        centos              "/bin/bash"              6 seconds ago       Up 5 seconds                                           web2
87c58af3100f        centos              "/bin/bash"              42 seconds ago      Up 41 seconds                                          web1
[root@localhost ~]# docker exec -it 7a84075802b5 /bin/bash      //進(jìn)入web2容器
[root@7a84075802b5 /]# ping web1     //pingweb1看是否互聯(lián)互通
PING web1 (172.17.0.5) 56(84) bytes of data.
64 bytes from web1 (172.17.0.5): icmp_seq=1 ttl=64 time=0.090 ms
64 bytes from web1 (172.17.0.5): icmp_seq=2 ttl=64 time=0.089 ms

文章題目:Docker容器之鏡像管理,端口映射,容器互聯(lián)
鏈接分享:http://muchs.cn/article12/ipjjgc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作微信公眾號(hào)、手機(jī)網(wǎng)站建設(shè)、自適應(yīng)網(wǎng)站、網(wǎng)站設(shè)計(jì)、網(wǎng)站排名

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)