日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

全面认识Docker和基本指令

發(fā)布時間:2023/12/18 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 全面认识Docker和基本指令 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Docker逐漸成為虛擬化技術(shù)的佼佼者,Java架構(gòu)師之路接下來會推出一系列的Docker相關(guān)技術(shù)文章,Docker技術(shù)也是架構(gòu)師的必備技能。

什么是Docker

Docker 是一個開源的應(yīng)用容器引擎,基于Go語言,誕生于2013年初,最初發(fā)起者是dotCloud公司,開發(fā)者可以打包應(yīng)用到一個輕量級、可移植的容器中,然后發(fā)布到主流Linux系統(tǒng)上運行。

為什么用Docker

    • 持續(xù)交付和部署:使用Docker可以通過定制應(yīng)用鏡像來實現(xiàn)持續(xù)集成,持續(xù)交付,部署。開發(fā)人員構(gòu)建后的鏡像,結(jié)合持續(xù)集成系統(tǒng)進(jìn)行集成測試,而運維人員則可以在生產(chǎn)環(huán)境中快速部署該鏡像,也可以結(jié)合持續(xù)部署系統(tǒng)進(jìn)行自動部署。

    • 更高效的資源利用:Docker是基于內(nèi)核級的虛擬化,可以實現(xiàn)更高效的性能,同時對資源的額外需求很低,相比傳統(tǒng)虛擬機(jī)方式,相同配置的主機(jī)能夠運行更多的應(yīng)用。

    • 更輕松的遷移和擴(kuò)展:Docker容器幾乎可以在任何平臺上運行,同時支持主流的操作系統(tǒng)發(fā)行版本。

    • 更快速的啟動時間:傳統(tǒng)的虛擬機(jī)技術(shù)啟動應(yīng)用服務(wù)往往需要數(shù)分鐘,而Docker容器應(yīng)用,由于直接運行于宿主內(nèi)核,無需啟動完整的操作系統(tǒng),因此可以做到妙級,甚至毫秒級的啟動時間,大大的節(jié)約了開發(fā),測試,部署的時間。

                            Docker與傳統(tǒng)虛擬機(jī)差異

                      

                              傳統(tǒng)虛擬化方式

                      

                            Docker虛擬化方式

傳統(tǒng)虛擬化是在硬件層面實現(xiàn)虛擬化,需要有額外的虛擬機(jī)管理應(yīng)用和虛擬機(jī)操作系統(tǒng)層,而Docker容器是在操作系統(tǒng)層面實現(xiàn)虛擬化,直接復(fù)用本地主機(jī)操作系統(tǒng),更加輕量級。

 核心概念

    • Docker鏡像:類似于虛擬機(jī)里的鏡像,是一個只讀的模板,一個獨立的文件系統(tǒng),使用鏡像可以創(chuàng)建容器,可以理解為鏡像是容器的基石。

    • Docker容器:是由Docker鏡像創(chuàng)建的運行實例,類似于輕量級的沙箱,每個容器之間都是相互隔離的。支持的操作有啟動,停止,刪除等。

    • Docker倉庫:類似于經(jīng)常使用的代碼倉庫,如github,它是Docker集中存放鏡像文件的倉所,國內(nèi)也有網(wǎng)易,阿里等鏡像倉庫。??????????

鏡像操作指令

  • 獲取鏡像:

    docker pull centos? ? (默認(rèn)獲取centos最新的鏡像)

    docker pull centos:7 (獲取指定標(biāo)簽鏡像)

  • 查看本地鏡像:

    docker images

  • 查看鏡像詳細(xì)信息:

    docker inspect centos:7?

  • 查看鏡像歷史:

    docker history centos:7

  • 刪除鏡像:

    A:使用標(biāo)簽刪除:docker rmi centos

    B:使用ID刪除:docker rimi

  • 構(gòu)建鏡像:

    A:使用docker commit命令

    B:使用Dockerfile構(gòu)建

  • 使用docker commit

    例:構(gòu)建一個帶有jdk的鏡像

    按照如下步驟操作

    [root@localhost?~]#?docker?run?-it?centos:7?/bin/bash
    [root@060793baf536?/]#?yum?install?wget
    [root@060793baf536?/]#?wget?--no-check-certificate?--no-cookies?--header?"Cookie:?oraclelicense=accept-securebackup-cookie"?http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.rpm

    [root@060793baf536?/]#?rpm?-ivh?jdk-8u131-linux-x64.rpm
    Preparing...??????????????????????????#################################?[100%]
    Updating?/?installing...
    ???1:jdk1.8.0_131-2000:1.8.0_131-fcs??#################################?[100%]
    Unpacking?JAR?files...
    ????????tools.jar...
    ????????plugin.jar...
    ????????javaws.jar...
    ????????deploy.jar...
    ????????rt.jar...
    ????????jsse.jar...
    ????????charsets.jar...
    ????????localedata.jar...
    [root@060793baf536?/]#?exit
    [root@localhost?~]#?docker?commit?060793baf536?centos/jdk:2.0

    通過docker images命令可以看到新增了centos/jdk 標(biāo)簽為2.0的鏡像

  • 使用Dockerfile構(gòu)建

    實際使用中不推薦使用docker commit構(gòu)建,應(yīng)使用更靈活和強(qiáng)大的Dockerfile構(gòu)建docker鏡像,直接舉例來認(rèn)識Dockerfile。

    例:構(gòu)建一個帶有jdk的centos7鏡像

    [root@localhost?Dockerfile]#?mkdir?Dockerfile
    [root@localhost?Dockerfile]#?cd?Dockerfile

    編寫Dockerfile:

    FROM?centos:7
    MAINTAINER??Java-Road?"Java-Road@qq.com"

    RUN?mkdir?/usr/local/jdk
    COPY?jdk-8u171-linux-x64.rpm?/usr/local/jdk/
    RUN?rpm?-ivh?/usr/local/jdk/jdk-8u171-linux-x64.rpm

    執(zhí)行如下指令:

    [root@localhost?Dockerfile]#?docker?build?-t?centos/jdk?.

    運行結(jié)果如下:

  • docker images可以看到新生成的centos/jdk鏡像。

  • 容器操作指令
    • 創(chuàng)建啟動容器:

      [root@localhost?~]#?docker?run?centos:7?/bin/echo'hello?world'

    ????????容器運行完后直接退出

    ?

    • 交互形式創(chuàng)建啟動容器

      [root@localhost?~]#?docker?run?-it?centos:7?/bin/bash
      [root@802e3623e566 /]#?ps
      ???PID?TTY??????????TIME?CMD
      ?????1??????????00:00:00?bash
      ????13??????????00:00:00?ps
      [root@802e3623e566 /]#?exit

      執(zhí)行exit才能退出容器

      ?

    • 守護(hù)狀態(tài)運行容器

      ?

      [root@localhost?~]#?docker?run?-d?centos:7?/bin/sh?-c?"while?true;?do?echo?hello?world;?sleep?1;?done"

    ?

    • 啟動已有的容器:

      docker?start?容器ID
      例:
      [root@localhost?~]#?docker?start?802e3623e566

      ?

    • 停止運行的容器:

      docker?stop?容器ID
      例:
      [root@localhost?~]#?docker?stop?802e3623e566

      ?

    • 刪除容器:

      [root@localhost?~]#?docker?stop?89566e38c7fb
      [root@localhost?~]#?docker?rm?89566e38c7fb

      ?

    • 進(jìn)入運行的容器:

      [root@localhost?~]#?docker?exec?-it?cbd8b1f35dcc?/bin/bash

      ?

    • 導(dǎo)出容器:

      導(dǎo)出容器cbd8b1f35dcc到centos_test.tar文件

      [root@localhost ~]# docker export -o centos_test.tar cbd8b1f35dcc

      導(dǎo)出的tar文件可以在其他機(jī)器上,通過導(dǎo)入來重新運行

      ?

    • 導(dǎo)入容器:

      把導(dǎo)出的文件centos_test.tar通過docker?import導(dǎo)入變成鏡像

      [root@localhost?~]#?docker?import?centos_test.tar?test/centos

      通過docker?images命令可以看到增加了個test/centos鏡像

?

?

轉(zhuǎn)載于:https://www.cnblogs.com/starsyh/p/9243975.html

總結(jié)

以上是生活随笔為你收集整理的全面认识Docker和基本指令的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。