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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

干货!全面认识Docker和基本指令

發布時間:2024/4/11 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 干货!全面认识Docker和基本指令 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

點擊上方“朱小廝的博客”,選擇“設為星標

回復”1024“獲取獨家整理的學習資料


Docker逐漸成為虛擬化技術的佼佼者,Java架構師之路接下來會推出一系列的Docker相關技術文章,Docker技術也是架構師的必備技能。


什么是Docker

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


為什么用Docker

  • 持續交付和部署:使用Docker可以通過定制應用鏡像來實現持續集成,持續交付,部署。開發人員構建后的鏡像,結合持續集成系統進行集成測試,而運維人員則可以在生產環境中快速部署該鏡像,也可以結合持續部署系統進行自動部署。

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

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

  • 更快速的啟動時間:傳統的虛擬機技術啟動應用服務往往需要數分鐘,而Docker容器應用,由于直接運行于宿主內核,無需啟動完整的操作系統,因此可以做到妙級,甚至毫秒級的啟動時間,大大的節約了開發,測試,部署的時間。


Docker與傳統虛擬機差異

傳統虛擬化方式


Docker虛擬化方式


傳統虛擬化是在硬件層面實現虛擬化,需要有額外的虛擬機管理應用和虛擬機操作系統層,而Docker容器是在操作系統層面實現虛擬化,直接復用本地主機操作系統,更加輕量級。


核心概念

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

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

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


鏡像操作指令

  • 獲取鏡像:

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

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

  • 查看本地鏡像:

    docker images

  • 查看鏡像詳細信息:

    docker inspect centos:7?

  • 查看鏡像歷史:

    docker history centos:7

  • 刪除鏡像:

    A:使用標簽刪除:docker rmi centos

    B:使用ID刪除:docker rimi

  • 構建鏡像:

    A:使用docker commit命令

    B:使用Dockerfile構建

使用docker commit

例:構建一個帶有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.rpmPreparing...??????????????????????????#################################?[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
[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 標簽為2.0的鏡像


使用Dockerfile構建

實際使用中不推薦使用docker commit構建,應使用更靈活和強大的Dockerfile構建docker鏡像,直接舉例來認識Dockerfile。

例:構建一個帶有jdk的centos7鏡像

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

編寫Dockerfile:

FROM?centos:7MAINTAINER??Java-Road?"Java-Road@qq.com"RUN?mkdir?/usr/local/jdkCOPY?jdk-8u171-linux-x64.rpm?/usr/local/jdk/RUN?rpm?-ivh?/usr/local/jdk/jdk-8u171-linux-x64.rpm
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

執行如下指令:

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

運行結果如下:

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


容器操作指令

  • 創建啟動容器:

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

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


  • 交互形式創建啟動容器

    [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
    [root@802e3623e566 /]#?ps
    ???PID?TTY??????????TIME?CMD
    ?????1??????????00:00:00?bash
    ????13??????????00:00:00?ps
    [root@802e3623e566 /]#?exit

    執行exit才能退出容器


  • 守護狀態運行容器


    [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
    例:
    [root@localhost?~]#?docker?start?802e3623e566

    ?

  • 停止運行的容器:

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


  • 刪除容器:

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


  • 進入運行的容器:

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


  • 導出容器:

    導出容器cbd8b1f35dcc到centos_test.tar文件[root@localhost ~]# docker export -o centos_test.tar cbd8b1f35dcc導出的tar文件可以在其他機器上,通過導入來重新運行
    [root@localhost ~]# docker export -o centos_test.tar cbd8b1f35dcc

    導出的tar文件可以在其他機器上,通過導入來重新運行


  • 導入容器:

    把導出的文件centos_test.tar通過docker?import導入變成鏡像[root@localhost?~]#?docker?import?centos_test.tar?test/centos通過docker?images命令可以看到增加了個test/centos鏡像

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

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




想知道更多?描下面的二維碼關注我

相關推薦:

  • 《科普 | 明星公司之Netflix》

  • 《看我如何作死 | 將CPU、IO打爆》

  • 《看我如何作死 | 網絡延遲、丟包、中斷一個都沒落下》


>>>Learn More<<


點個"在看"唄^_^

超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生

總結

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

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。