標籤: 南投搬家費用

  • Tesla Model S 遭爆有瑕疵,完美形象破功

    Tesla Model S 遭爆有瑕疵,完美形象破功

        特斯拉當家電動車 Model S 不再完美無缺,去年給予 Model S 最高評級的消費者評鑒雜誌《Consumer Reports》點出 Model S 仍許多有小缺陷待改進。   《Consumer Reports》指出,Model S 多在跑超過一萬哩後出現問題,例如里程數超過 1.2 萬哩後,中央控制螢幕在會有反白的狀況,使多項功能無法操作。此外,還有車頂會發出異常噪音,前置行李箱蓋會自動開啟等問題。   Model S 去年 5 月在《Consumer Reports》評鑑中拿下 99 分(滿分 100 分),創史上最高分,之後並在 11 月獲選為年度 10 大好車第一名。   對此,特斯拉執行長 Elon Musk 7 月 31 日曾坦承,較早一批出廠的 Model S 的確有些生產上的瑕疵,但目前出廠的新車多已作修正。     (圖片來源:)

    本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

    網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

    網頁設計公司推薦不同的風格,搶佔消費者視覺第一線

    ※想知道購買電動車哪裡補助最多?台中電動車補助資訊懶人包彙整

    南投搬家公司費用,距離,噸數怎麼算?達人教你簡易估價知識!

    ※教你寫出一流的銷售文案?

    ※超省錢租車方案

  • 網絡虛擬化之linux虛擬網絡基礎

    網絡虛擬化之linux虛擬網絡基礎

    linux虛擬網絡基礎

    1 Device

    在linux裏面devic(設備)與傳統網絡概念里的物理設備(如交換機、路由器)不同,Linux所說的設備,其背後指的是一個類似於數據結構、內核模塊或設備驅動這樣的含義。就是說device可能只是軟件系統里的一個驅動,一個函數接口。

    2 Tap

    Tap位於二層數據鏈路層,tun位於三層網絡層,兩者在linux里的函數結構幾乎一致,除了一個flag值區分tap/tun。在linux中二層特指以太網(Ethernet)(傳統網絡里二層分Ethernet,P2P,HDLC,FR,ATM),因此有時tap也叫“虛擬以太設備”。有意思的是linux創建tap需要用到tun模塊。Linux創建tap/tun都使用tun模塊。

     

    3 Namespace

    Namespace類似傳統網絡里的VRF,與VRF不同的是:VRF做的是網絡層三層隔離。而namespace隔離的更徹底,它做的是整個協議棧的隔離,隔離的資源包括:UTS(UnixTimesharing  System的簡稱,包含內存名稱、版本、 底層體繫結構等信息)、IPS(所有與進程間通信(IPC)有關的信息)、mnt(當前裝載的文件系統)、PID(有關進程ID的信息)、user(資源配額的信息)、net(網絡信息)。

    從網絡角度看一個namespace提供了一份獨立的網絡協議棧(網絡設備接口、IPv4/v6、IP路由、防火牆規則、sockets等),而一個設備(Linux Device)只能位於一個namespace中,不同namespace中的設備可以利用vethpair進行橋接。

     

    4 veth pair

    veth pair不是一個設備,而是一對設備,以連接兩個虛擬以太端口。操作vethpair,需要跟namespace一起配合,不然就沒有意義。如圖

     

    5 Bridge

    在Linux的語境里,Bridge(網橋)與Switch(交換機)是一個概念。因為一對veth pair只能連接兩台device,因此如果需要多台設備互聯則需要bridge。

    如圖:4個namespace,每個namespace都有一個tap,每個tap與網橋vb1的tap組成一對veth pair,這樣,這4個namespace就可以二層互通了。

     

    6 Router

    Linux創建Router並沒有像創建虛擬Bridge那樣,有一個直接的命令brctl,而且它間接的命令也沒有,不能創建虛擬路由器……因為它就是路由器(Router) !

    如圖:我們需要在router(也就是我們的操作系統linux上增加去往各NS的路由)。

     

    7 tun

    tun是一個網絡層(IP)的點對點設備,它啟用了IP層隧道功能。Linux原生支持的三層隧道。支持隧道情況:ipip(ipv4 in ipv4)、gre(ipv4/ipv6 over ipv4)、sit(ipv6 over ipv4)、isatap(ipv6/ipv4隧道)、vti(ipsec接口)。

    學過傳統網絡GRE隧道的人更容易理解,如圖:

    NS1的tun1的ip 10.10.10.1與NS2的tun2的ip 10.10.20.2建立tun

    NS1的tun的ip是10.10.10.1,隧道的外層源ip是192.168.1.1,目的ip是192.168.2.1,是不是跟GRE很像。

     

    8 iptable

    我們通常把iptable說成是linux的防火牆,實際上這種說法並不準確。實際上iptable只是一個運行在用戶空間的命令行工具,真正實現防火牆功能的是內核空間的netfilter模塊。

    這裏我們先知道防火牆執行模塊netfilter位於內核空間,命令行iptable位於用戶空間。我們在通過iptable配置的防火牆策略(包括NAT)會在netfilter執行。

    iptables有5個鏈:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING

    l  PREROUTING:報文進入網絡接口尚未進入路由之前的時刻;

    l  INPUT:路由判斷是本機接收的報文,準備從內核空間進入到用戶空間的時刻;

    l  FORWARD:路由判斷不是本機接收的報文,需要路由轉發,路由轉發的那個時刻;

    l  OUTPUT:本機報文需要發出去 經過路由判斷選擇好端口以後,準備發送的那一刻;

    l  POSTROUTING:FORWARD/OUTPUT已經完成,報文即將出網絡接口的那一刻。

     DNAT用的是PREROUTING,修改的是目的地址,SNAT用的是POSTROUTING,修改的是源地址。

    Iptable有5個表:filter,nat,mangle,raw, security,raw表和security表不常用。主流文檔都是說5鏈4表,沒有包括security表。

    l  Raw表——決定數據包是否被狀態跟蹤機制處理

    l  Mangle表——修改數據包的服務類型、TTL、並且可以配置路由實現QOS

    l  Nat表——用於網絡地址轉換(IP、端口)

    l  filter表——過濾數據包

    l  security 表(用於強制訪問控制網絡規則,例如:SELinux)

    4個表的優先級由高到低的順序為:raw–>mangle–>nat–>filter。RAW表,在某個鏈上,RAW表處理完后,將跳過NAT表和 ip_conntrack處理,即不再做地址轉換和數據包的鏈接跟蹤處理了。RAW表可以應用在那些不需要做nat的情況下,以提高性能。如大量訪問的web服務器,可以讓80端口不再讓iptables做數據包的鏈接跟蹤處理,以提高用戶的訪問速度。

    下面講下數據包流向與處理:

    1. 如果是外部訪問的目的是本機,比如用戶空間部署了WEB服務,外部來訪問。數據包從外部進入網卡—–>PREROUTING處理—–>INPUT處理—–>到達用戶空間程序接口,程序處理完成后發出—–>OUTPUT處理—–>POSTROUTING處理。每個處理點都有對應的表,表的處理順序按照raw–>mangle–>nat–>filter處理。
    2. 如果用戶訪問的目的不是本機,linux只是一个中轉(轉發)設備,此時需要開啟ip forward功能,數據流就是進入網卡—–> PREROUTING處理—–> FORWARD處理—–> POSTROUTING處理。

     

    8.2 NAT

    Netfilter中的NAT有三個點做處理,

    (1)   NAT-PREROUTING (DNAT)

    數據報文進入PREROUTING,NAT模塊就會處理,比如用戶空間的WEB服務私網地址192.168.0.1,對外提供公網ip是220.1.1.1。

    當外部ip訪問220.1.1.1時,PREROUTING接受數據包,NAT模塊處理將目的ip 220.1.1.1轉換為私網ip192.168.0.1,這就是DNAT。

    (2)   NAT-POSTROUTING (SNAT)

    用戶空間應用程序訪問外部網絡,比如用戶空間應用程序訪問114.114.114.144,私網ip 192.168.0.1,此時數據包流經POSTROUTING,NAT模塊會處理,將192.168.0.1轉換為220.2.2.2,對於目的ip114.114.114.114來說,就是220.2.2.2訪問它,這就是SNAT。

    (3)   NAT-OUTPUT (DNAT)

    我們把內核空間想象成一台防火牆,防火牆自身對外發送報文訪問外部時,就在OUTPUT做DNAT,此時不需要再POSTROUTING點再做NAT。因為此時從OUTPUT出來的源IP已經是公網地址了

    8.3  Firewall

    防火牆根據規則執行accept/reject動作,防火牆規則的元素如下:

    入接口、出接口、協議、源地址/子網、目的地址/子網、源端口、目的端口。

    Netfilter中的Firewall會在這三個點進行處理:INPUT/FORWARD/OUTPUT

    8.4 Mangle

    mangle表主要用於修改數據包的ToS(  Type of Service,服務類型)、 TTL(Time to Live,生存周期)以及為數據包設置Mark標記,以實現QoS(Qualityof Service,服務質量)調整以及策略路由等應用。Netfilter每個點都可以做mangle。

    9 總結

    tap、tun、vethpair在Linux中都被稱為設備,但是在與日常概念的類比中,常常被稱作接口。而bridge和router這些日常稱為設備的再linux中反而不稱為設備。linux利用namespace做隔離,Bridge提供二層轉發功能,Router提供三層轉發功能。Router還常常藉助iptable提供SNAT/DNAT功能。Bridge也常常藉助iptable提供Firewall功能。

    本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

    網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

    網頁設計公司推薦不同的風格,搶佔消費者視覺第一線

    ※想知道購買電動車哪裡補助最多?台中電動車補助資訊懶人包彙整

    南投搬家公司費用,距離,噸數怎麼算?達人教你簡易估價知識!

    ※教你寫出一流的銷售文案?

    ※超省錢租車方案

  • Lens —— 最炫酷的 Kubernetes 桌面客戶端

    Lens —— 最炫酷的 Kubernetes 桌面客戶端

    原文鏈接:https://fuckcloudnative.io/posts/lens/

    Kubernetes 的桌面客戶端有那麼幾個,曾經 Kubernetic 應該是最好用的,但最近有個叫 Lens 的 APP 改變了這個格局,功能比 Kubernetic 多,使用體驗更好,適合廣大系統重啟工程師裝逼。它有以下幾個亮點:

    Lens 就是一個強大的 IDE,可以實時查看集群狀態,實時查看日誌流,方便排查故障。有了 Lens,你可以更方便快捷地使用你的集群,從根本上提高工作效率和業務迭代速度。

    日誌流界面可以選擇显示或隱藏時間戳,也可以指定显示的行數:

    Lens 可以管理多集群,它使用內置的 kubectl 通過 kubeconfig 來訪問集群,支持本地集群和外部集群(如EKS、AKS、GKE、Pharos、UCP、Rancher 等),甚至連 Openshift 也支持:

    只是與 Openshift 的監控還不太兼容。也可以很輕鬆地查看並編輯 CR:

    有了 Lens,你就可以統一管理所有的集群。

    ③ Lens 內置了資源利用率的儀錶板,支持多種對接 Prometheus 的方式:

    ④ Lens 內置了 kubectl,它的內置終端會確保集群的 API Server 版本與 kubectl 版本兼容,所以你不需要在本地安裝 kubectl。可以驗證一下:

    你會看到本地安裝的 kubectl 版本和 Lens 裏面打開的終端里的 kubectl 版本信息是不一樣的,Lens 確實內置了 kubectl。

    ⑤ Lens 內置了 helm 模板商店,可直接點擊安裝:

    現在 Lens 迎來了最新版 3.5.0,換上了全新的 Logo

    穩定性也提升了很多,快去試試吧。

    Kubernetes 1.18.2 1.17.5 1.16.9 1.15.12離線安裝包發布地址http://store.lameleg.com ,歡迎體驗。 使用了最新的sealos v3.3.6版本。 作了主機名解析配置優化,lvscare 掛載/lib/module解決開機啟動ipvs加載問題, 修復lvscare社區netlink與3.10內核不兼容問題,sealos生成百年證書等特性。更多特性 https://github.com/fanux/sealos 。歡迎掃描下方的二維碼加入釘釘群 ,釘釘群已經集成sealos的機器人實時可以看到sealos的動態。

    本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

    網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

    網頁設計公司推薦不同的風格,搶佔消費者視覺第一線

    ※想知道購買電動車哪裡補助最多?台中電動車補助資訊懶人包彙整

    南投搬家公司費用,距離,噸數怎麼算?達人教你簡易估價知識!

    ※教你寫出一流的銷售文案?

    ※超省錢租車方案

  • 日產瞄準中國電動車市場 目標拿下 20% 市占

    日產瞄準中國電動車市場 目標拿下 20% 市占

      日本汽車大廠日產汽車(Nissan)10 日宣佈,旗下中國大陸合資公司東風汽車有限公司的乘用車部門「東風日產乘用車公司(以下稱東風日產)」自 10 日起將在大陸開賣東風日產自有品牌電動車「Venucia e30」,售價為 26 萬 7,800 元人民幣,目標為在 2018 年於中國電動車市場拿下 20% 市佔率。   Venucia e30 是以日產於 2010 年在日本開賣的電動車「Leaf」的車台、技術為根基,由日產與東風日產所攜手研發的車款,而日產也將成為第一家進軍中國電動車市場的日系車廠。   Venucia e30 初期將在北京、上海、廣州、深圳、大連、武漢、天津、鄭州和杭洲等 9 個都市販售,並計劃在 2015 年將販售區域擴及至中國全國。   據日本媒體共同通信指出,Venucia e30 約 4 小時可充飽電、充飽電狀態下的行駛距離為 175km;Venucia e30 將在廣州生產、2018 年銷售目標為 5 萬台。     (圖片來源:)

    本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

    網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

    網頁設計公司推薦不同的風格,搶佔消費者視覺第一線

    ※想知道購買電動車哪裡補助最多?台中電動車補助資訊懶人包彙整

    南投搬家公司費用,距離,噸數怎麼算?達人教你簡易估價知識!

    ※教你寫出一流的銷售文案?

    ※超省錢租車方案

  • 深入理解JVM(③)虛擬機的類加載時機

    深入理解JVM(③)虛擬機的類加載時機

    前言

    Java虛擬機把描述類的數據從Class文件加載到內存,並對數據進行校驗、轉換解析和初始化,最終形成可以被虛擬機直接使用的Java類型,這個過程被稱為虛擬機的類加載機制。

    類加載的時機

    一個類型從被加載到虛擬機內存中開始,到卸載除內存為止,它的生命周期將會經歷加載(Loading)、驗證(Verification)、準備(Preparation)、解析(Resolution)、初始化(Initialization)、使用(Using)和 卸載(Unloading)、七個階段,其中驗證、準備、解析三個部分統稱為連接(Linking)。
    類的生命周期如下圖:

    其實加載、驗證、準備、初始化和卸載這五個階段的順序是確定的,類型的加載過程必須按照這種順序按部就班地開始,而解析階段則不一定:它在某些情況下可以在初始化階段之後再開始,這是為了支持Java語音的運行時綁定特性(也稱為動態綁定或晚期綁定)。
    在什麼情況下需要開始類加載過程的第一個階段“加載”,《Java虛擬機規則》中並沒有進行強制約束,但是對於初始化階段《Java虛擬機規範》則是嚴格規定了有且只有以下六種情況必須立即對類進行“初始化”。

    1. 遇到newgetstaticputstaticinvokestatic這四條字節碼指令時,如果類型沒有進行過初始化,則需要先觸發其初始化階段。
      涉及到這四條指令的典型場景有:
    • 使用new關鍵字實例化對的時候。
    • 讀取或設置一個類型的靜態字段(被final修飾、已在編譯期把結果放入常量池的靜態字段除外)的時候。
    • 調用一個類型的靜態方法的時候。
    1. 使用 java.lang.reflect 包的方法對類型進行反射調用的時候,如果類型沒有進行過初始化,則需要先觸發其初始化。
    2. 當初始化類型的時候,如果發現其父類還沒有進行過初始化,則需要先觸發其父類的初始化。
    3. 當虛擬機啟動時,用戶需要指定一個要執行的主類(包含main()方法的那個類),虛擬機會先初始化這個主類。
    4. 當使用JDK7新加入的動態語言支持時,如果一個java.lang.invoke.MethodHandle實例最後的解析結果為REF_getStatic、REF_putStatic、REF_invokeStatic、REF_newInvokeSpecial四種類型的方法句柄,並且這個方法句柄對應的類沒有進行過初始化,則需要先觸發其初始化。
    5. 當一個接口中定義了JDK8新加入的默認方法(被default關鍵字修飾的接口方法)時,如果這個接口的實現類發生了初始化,那該接口要在其之前被初始化。
      除了以上的這個六種場景外,所有引用類型的方式都不會觸發初始化,稱為被動引用。
      下面來看一下哪些是被動引用:

    例子1:

    父類

    package com.jimoer.classloading;
    
    /**
     * @author jimoer
     * @date Create in 2020/06/24 16:08
     * @description 通過子類引用父類的靜態字段,不會導致子類初始化。
     */
    public class FatherClass {
    
        static {
            System.out.println("FatherClass init!!!!!");
        }
    
        public static int value = 666;
    
    }
    

    子類

    package com.jimoer.classloading;
    
    public class SonClass extends FatherClass{
    
        static {
            System.out.println("SonClass init!!!");
        }
    
    }
    

    測試類

    @Test
    public void testInitClass(){
        System.out.println(SonClass.value);
    }
    

    運行結果:

    FatherClass init!!!!!
    666
    

    通過運行結果我們看到,只輸出了“FatherClass init!!!!!”,並沒有輸出“SubClass init!!!”,這是因為對於使用靜態字段,只有直接定義這個字段的類才會被初始化,因此通過子類來引用父類中定義的靜態字段,並不會初始化子類。

    例子2:

    /**
     * 通過數組定義來引用類,不會觸發此類的初始化
     */
    @Test
    public void testInitClass2(){
        FatherClass[] fathers = new FatherClass[5];
    }
    

    運行結果:未打印任何信息。
    通過運行結果我們發現,並沒有打印出 FatherClass init!!!!! ,這說明並沒有觸發Father類的初始化階段。但是這段代碼裏面觸發了另一個名為“[Lcom.jimoer.classloading.FatherClass”的類的初始化階段,它是一個由虛擬機自動生成的、直接繼承與java.lang.Object的子類,創建動作由字節碼newarray觸發。這個類代表了一個元素類型為FatherClass的一維數組,數組中應用的屬性和方法(length屬性和clone()方法)都實現在這個類里。

    例子3:

    /**
     * @author jimoer
     * 常量在編譯階段會存入調用類的常量池中,
     * 本質上沒有直接引用到定義常量的類,
     * 因此不會觸發定義常量的類的初始化。
     */
    public class ConstantClass {
        
        static {
            System.out.println("ConstantClass init !!!");
        }
        
        public static final String CLASS_LOAD = "class load test !!!";
        
    }
    

    使用

    /**
     * 使用常量
     */
    @Test
    public void testInitClass3(){
        System.out.println(ConstantClass.CLASS_LOAD);
    }
    

    運行結果:

    class load test !!!
    

    通過運行結果,我們看到當在使用一個類的常量時,並不會初始化定義了常量的類。這是因為雖然在Java源碼中確實引用了ConstatClass的類的常量CLASS_LOAD,但其實在編譯階段通過常量傳播優化,已經將此常量的值“class load test !!!”直接存儲在使用常量的類中的常量池中了,所以在使用ConstantClass.CLASS_LOAD時候,實際上都被轉化為在使用類自身的常量池的引用了。

    接口也是有初始化過程的,上面的代碼都是用靜態語句塊“static {}”來輸出初始化信息的,而接口中不能使用static{}語句塊,但編譯器仍然會為接口生成“ ()”類構造器,用於初始化接口中所定義的成員變量。
    還有一點接口與類不同,當一個類在初始化時,要求其父類全部都已經初始化過了,但是在一個接口初始化時,並不要求其父接口全部都完成了初始化,只有在真正使用到父接口的時候(例如引用接口中的常量)才會初始化。

    本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

    網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

    網頁設計公司推薦不同的風格,搶佔消費者視覺第一線

    ※Google地圖已可更新顯示潭子電動車充電站設置地點!!

    ※廣告預算用在刀口上,台北網頁設計公司幫您達到更多曝光效益

    ※別再煩惱如何寫文案,掌握八大原則!

  • 高盛:再下60億美元資本 特斯拉就能顛覆汽車界

    上周,高盛分析師派翠克•阿爾尚博(Patrick Archambault)指出,特斯拉或許需要再投入60億美元現金(尤其在2017年至2025年之間),才能實現“到2020年電動汽車的年產量達到50萬輛”的目標,從而顛覆汽車市場。   而特斯拉希望在明年年底前交付10萬輛電動汽車,其中包括Model S和即將推出的Model X。阿爾尚博預測,特斯拉要實現既定目標,到2025年為止將需要生產180萬至320萬輛電動汽車。但是,屆時如果特斯拉未能實現這些生產目標,電池工廠所生產的多餘電池將可能最終由太陽能公司SolarCity所消化。   特斯拉已經為SolarCity生產了少量的蓄電元件,超級電池工廠竣工後將滿足SolarCity部分或全部的耗電需求。馬斯克表示,兩家公司能以獨特的方式相互相容。如果更多的美國人能接受太陽能用於住宅和商業供電,特斯拉及其電池製造合作夥伴松下就能把超級電池工廠過剩產能所餘下的蓄電元件提供給SolarCity。超級電池工廠每年將為特斯拉生產50萬件電池組,因此,特斯拉不打算成為SolarCity蓄電組件的主要供應商。但如果特斯拉達不到生產目標,超級電池工廠就可能為SolarCity多出出力。

    本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

    網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

    網頁設計公司推薦不同的風格,搶佔消費者視覺第一線

    ※想知道購買電動車哪裡補助最多?台中電動車補助資訊懶人包彙整

    南投搬家公司費用,距離,噸數怎麼算?達人教你簡易估價知識!

    ※教你寫出一流的銷售文案?

    ※超省錢租車方案

  • Docker(三)Docker常用命令

    Docker(三)Docker常用命令

    Docker常用命令

    幫助命令

    # 显示 Docker 版本信息
    docker version  
    
    # 显示系統信息,包括鏡像和容器的數量
    docker info 
    
    # 查看幫助文檔 幫助文檔地址:https://docs.docker.com/reference/
    docker [命令] --help  
    

    鏡像命令

    查看最近創建的鏡像

    docker images 查看最近創建的鏡像

    docker images [OPTIONS] [REPOSITORY[:TAG]]
    
    # 幫助文檔
    [root@hwh1 ~]# docker images --help 
    Usage:	docker images [OPTIONS] [REPOSITORY[:TAG]]
    List images
    Options:
      -a, --all             Show all images (default hides intermediate images)    显示所有鏡像
          --digests         Show digests                                           显示摘要
      -f, --filter filter   Filter output based on conditions provided             根據提供的條件過濾輸出
          --format string   Pretty-print images using a Go template                用 Go 模板打印出一個圖像
          --no-trunc        Don't truncate output                                  不截斷輸出
      -q, --quiet           Only show numeric IDs                                  只显示数字 ID
    
    # 查看最近創建的鏡像
    # REPOSITORY  鏡像的倉庫源
    # TAG  鏡像的標籤
    # IMAGE ID  鏡像的id
    # CREATED  鏡像的創建時間
    # SIZE  鏡像的大小
    [root@hwh1 ~]# docker images   
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    hello-world         latest              bf756fb1ae65        5 months ago        13.3kB
    
    # 查看所有鏡像
    [root@hwh1 ~]# docker images -a
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    hello-world         latest              bf756fb1ae65        5 months ago        13.3kB
    
    # 只显示数字 ID
    [root@hwh1 ~]# docker images -q
    bf756fb1ae65
    

    搜索鏡像

    docker search 搜索鏡像

    docker search [OPTIONS] TERM
    
    [root@hwh1 ~]# docker search --help 
    Usage:	docker search [OPTIONS] TERM
    Search the Docker Hub for images
    Options:
      -f, --filter filter   Filter output based on conditions provided   根據提供的條件過濾輸出
          --format string   Pretty-print search using a Go template      用 Go 模板打印出一個圖像
          --limit int       Max number of search results (default 25)    搜索結果的最大值限制
          --no-trunc        Don't truncate output                       不截斷輸出
    
    
    [root@hwh1 ~]# docker search mysql
    NAME                              DESCRIPTION                                     STARS    OFFICIAL            AUTOMATED
    mysql                             MySQL is a widely used, open-source relation…   9626
    

    下載鏡像

    docker pull 下載鏡像

    docker pull [OPTIONS] NAME[:TAG|@DIGEST]
    
    [root@hwh1 ~]# docker pull --help 
    Usage:	docker pull [OPTIONS] NAME[:TAG|@DIGEST]
    Pull an image or a repository from a registry
    Options:
      -a, --all-tags                Download all tagged images in the repository      下載倉庫中標記所有的鏡像,拿來選擇版本
          --disable-content-trust   Skip image verification (default true)            跳過圖像驗證       
          --platform string         Set platform if server is multi-platform capable  如果服務器支持多平台,則設置平台
     -q, --quiet                   Suppress verbose output                           禁止詳細輸出              
    
    # 下載鏡像
    [root@hwh1 ~]# docker pull mysql
    Using default tag: latest                     # 版本信息(默認不設置tag,則為最新版)
    latest: Pulling from library/mysql           
    8559a31e96f4: Pull complete                   # 分層下載,docker image 的核心,聯合文件系統
    d51ce1c2e575: Pull complete 
    c2344adc4858: Pull complete 
    fcf3ceff18fc: Pull complete 
    16da0c38dc5b: Pull complete 
    b905d1797e97: Pull complete 
    4b50d1c6b05c: Pull complete 
    c75914a65ca2: Pull complete 
    1ae8042bdd09: Pull complete 
    453ac13c00a3: Pull complete 
    9e680cd72f08: Pull complete 
    a6b5dc864b6c: Pull complete 
    Digest: sha256:8b7b328a7ff6de46ef96bcf83af048cb00a1c86282bfca0cb119c84568b4caf6          # 簽名
    Status: Downloaded newer image for mysql:latest 
    docker.io/library/mysql:latest                 # 真實地址
    

    刪除鏡像

    docker rmi 刪除鏡像

    docker rmi [OPTIONS] IMAGE [IMAGE...]
    
    [root@hwh1 ~]# docker rmi --help 
    Usage:	docker rmi [OPTIONS] IMAGE [IMAGE...]
    Remove one or more images
    Options:
      -f, --force      Force removal of the image        強制刪除鏡像
          --no-prune   Do not delete untagged parents    不刪除未標記的父類
    
    
    # 刪除指定鏡像
    [root@hwh1 ~]# docker rmi mysql 
    Untagged: mysql:latest
    Untagged: mysql@sha256:8b7b328a7ff6de46ef96bcf83af048cb00a1c86282bfca0cb119c84568b4caf6
    Deleted: sha256:be0dbf01a0f3f46fc8c88b67696e74e7005c3e16d9071032fa0cd89773771576
    Deleted: sha256:086d66e8d1cb0d52e9337eabb11fb9b95960e2e1628d90100c62ea5e8bf72306
    Deleted: sha256:f37c61ee1973b18c285d0d5fcf02da4bcdb1f3920981499d2a20b2858500a110
    Deleted: sha256:e40b8bca7dc63fc8d188a412328e56caf179022f5e5d5b323aae57d233fb1069
    Deleted: sha256:339f6b96b27eb035cbedc510adad2560132925a835f0afddbcc1d311c961c14b
    Deleted: sha256:d38b06cdb26a5c98857ddbc6ef531d3f57b00e325c0c314600b712efc7ff6ab0
    Deleted: sha256:09687cd9cdf4c704fde969fdba370c2d848bc614689712bef1a31d0d581f2007
    Deleted: sha256:b704a4a65bf536f82e5d8b86e633d19185e26313de8380162e778feb2852011a
    Deleted: sha256:c37206160543786228aa0cce738e85343173851faa44bb4dc07dc9b7dc4ff1c1
    Deleted: sha256:12912c9ec523f648130e663d9d4f0a47c1841a0064d4152bcf7b2a97f96326eb
    Deleted: sha256:57d29ad88aa49f0f439592755722e70710501b366e2be6125c95accc43464844
    Deleted: sha256:b17c024283d0302615c6f0c825137da9db607d49a83d2215a79733afbbaeb7c3
    Deleted: sha256:13cb14c2acd34e45446a50af25cb05095a17624678dbafbcc9e26086547c1d74
    
    # 遞歸刪除(批量刪除)
    [root@hwh1 ~]# docker rmi -f $(docker images -aq)
    Untagged: hello-world:latest
    Untagged: hello-world@sha256:6a65f928fb91fcfbc963f7aa6d57c8eeb426ad9a20c7ee045538ef34847f44f1
    Deleted: sha256:bf756fb1ae65adf866bd8c456593cd24beb6a0a061dedf42b26a993176745f6b
    # 已全部刪除
    [root@hwh1 ~]# docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    
    

    容器命令

    注:下載一個 centos 鏡像測試

    新建容器並啟動

    docker run 新建容器並啟動

    [root@hwh1 ~]# docker pull centos
    Using default tag: latest
    latest: Pulling from library/centos
    8a29a15cefae: Pull complete 
    Digest: sha256:fe8d824220415eed5477b63addf40fb06c3b049404242b31982106ac204f6700
    Status: Downloaded newer image for centos:latest
    docker.io/library/centos:latest
    
    docker run
    
    [root@hwh1 ~]# docker run --help 
    Usage:	docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
    Run a command in a new container
    Options:
          -d, --detach                     Run container in background and print 
                                              container ID                           後台方式運行
          --name string                    Assign a name to the container            容器名字,來區分容器
          -i, --interactive                Keep STDIN open even if not attached      使用交互方式,進入容器查詢內容
          -t, --tty                        Allocate a pseudo-TTY                     使用交互方式,進入容器查詢內容
          -p, --publish list               Publish a container's port(s) to the host 指定容器端口 
              -p 主機端口:容器端口
              -p 容器端口
              -p ip:主機端口:容器端口
              容器端口
          -P, --publish-all                Publish all exposed ports to random ports 隨機端口
          
    
    # 啟動並進入容器,相當於一個小型虛擬機
    [root@hwh1 ~]# docker run  -it centos /bin/bash
    [root@af833bdd3acf /]# ls      # 基礎版 centos 很多命令都不完善
    bin  etc   lib	  lost+found  mnt  proc  run   srv  tmp  var
    dev  home  lib64  media       opt  root  sbin  sys  usr
    [root@af833bdd3acf /]# exit    # 退出命令
    exit
    

    列出所有正在運行的容器

    docker ps 列出所有正在運行的容器

    docker ps [OPTIONS]
    
    [root@hwh1 ~]# docker ps --help
    Usage:	docker ps [OPTIONS]
    List containers
    Options:
      -a, --all             Show all containers (default shows just running)           列出所有的容器,包括正在運行和停止的
      -f, --filter filter   Filter output based on conditions provided                 
          --format string   Pretty-print containers using a Go template
      -n, --last int        Show n last created containers (includes all states)       列出最近運行的容器
                            (default -1)
      -l, --latest          Show the latest created container (includes all states)    显示最後創建的容器
          --no-trunc        Don't truncate output                                      不截斷輸出
      -q, --quiet           Only display numeric IDs                                   只显示数字 ID
      -s, --size            Display total file sizes                                   显示文件總大小
    
    
    [root@hwh1 ~]# docker ps
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    a0f986785f33        centos              "/bin/bash"         7 seconds ago       Up 5 seconds                            nervous_agnesi
    [root@hwh1 ~]# docker ps -n=1
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
    a0f986785f33        centos              "/bin/bash"         6 minutes ago       Up 6 minutes                            nervous_agnesi
    [root@hwh1 ~]# docker ps -q
    a0f986785f33
    

    退出容器

    exit             # 直接容器停止並退出
    Ctrl + P + Q     # 不停止容器退出(快捷鍵)
    

    刪除容器

    docker rm 刪除容器

    docker rm [OPTIONS] CONTAINER [CONTAINER...]
    
    [root@hwh1 ~]# docker rm --help 
    Usage:	docker rm [OPTIONS] CONTAINER [CONTAINER...]
    Remove one or more containers
    Options:
      -f, --force     Force the removal of a running container (uses SIGKILL)      強制刪除正在運行的容器
      -l, --link      Remove the specified link                                    刪除指定的鏈接
      -v, --volumes   Remove anonymous volumes associated with the container       刪除與容器關聯的匿名卷
    
    [root@hwh1 ~]# docker rm af833bdd3acf      刪除已經停止的
    af833bdd3acf
    [root@hwh1 ~]# docker rm -f a0f986785f33   刪除正在運行的容器
    a0f986785f33
    
    # docker ps -a -q|xargs docker rm    # 刪除所有的容器,使用管道符
    

    啟動和停止容器操作

    docker start id       # 啟動
    docker restart id     # 重啟
    docker stop id        # 停止當前正在運行的容器
    docker kill id        # 強制停止當前容器
    
    [root@hwh1 ~]# docker start 7b28015cd7f6
    7b28015cd7f6
    [root@hwh1 ~]# docker restart 7b28015cd7f6
    7b28015cd7f6
    [root@hwh1 ~]# docker ps -a
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                   PORTS               NAMES
    7b28015cd7f6        centos              "/bin/bash"         46 seconds ago      Up 9 seconds                                 unruffled_wiles
    e2ff2fee0669        bf756fb1ae65        "/hello"            12 days ago         Exited (0) 12 days ago                       amazing_nightingale
    690a9f41c7a8        bf756fb1ae65        "/hello"            12 days ago         Exited (0) 12 days ago                       zealous_blackwell
    [root@hwh1 ~]# docker stop 7b28015cd7f6
    7b28015cd7f6
    [root@hwh1 ~]# docker ps -a
    CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS              NAMES
    7b28015cd7f6        centos              "/bin/bash"         57 seconds ago      Exited (0) 2 seconds ago                      unruffled_wiles
    e2ff2fee0669        bf756fb1ae65        "/hello"            12 days ago         Exited (0) 12 days ago                         amazing_nightingale
    690a9f41c7a8        bf756fb1ae65        "/hello"            12 days ago         Exited (0) 12 days ago       
    

    常用的其他命令

    後台啟動容器

    # docker run -d 鏡像名
    [root@hwh1 ~]# docker run -d centos
    9e34ebe17e41fb762f535ab21d81240b5fb4b105a44ed13c8813a8a8978f9b27
    # 問題:
    # docker ps -a,發現服務停止了
    # 常見的坑:
    # docker 容器使用後台運行,就必須要有要一個前台進程,docker發現沒有應用,就會自動停止
    

    查看日誌

    docker logs [OPTIONS] CONTAINER
    
    [root@hwh1 ~]# docker logs --help
    Usage:	docker logs [OPTIONS] CONTAINER
    Fetch the logs of a container
    Options:
          --details        Show extra details provided to logs                         显示額外的詳細信息
      -f, --follow         Follow log output                                           跟蹤日誌輸出
          --since string   Show logs since timestamp (e.g. 2013-01-02T13:23:37) or     從時間戳開始显示
                           relative (e.g. 42m for 42 minutes)
          --tail string    Number of lines to show from the end of the logs (default   日誌显示行數
                           "all")
      -t, --timestamps     Show timestamps                                             显示時間戳
          --until string   Show logs before a timestamp (e.g. 2013-01-02T13:23:37)     在時間戳之前显示日誌
                           or relative (e.g. 42m for 42 minutes)
    

    查看容器中進程信息

    docker top CONTAINER [ps OPTIONS]
    
    [root@hwh1 ~]# docker top --help 
    Usage:	docker top CONTAINER [ps OPTIONS]
    Display the running processes of a container
    
    # docker top 容器id
    [root@hwh1 ~]# docker top 147f08710d27
    UID                 PID                 PPID                C                   STIME   
    root                76123               76105               0                   21:13  
    

    查看鏡像的元數據

    docker inspect [OPTIONS] NAME|ID [NAME|ID...]
    
    [root@hwh1 ~]# docker inspect --help 
    Usage:	docker inspect [OPTIONS] NAME|ID [NAME|ID...]
    Return low-level information on Docker objects
    Options:
      -f, --format string   Format the output using the given Go template          用 Go 模板打印出一個圖像
      -s, --size            Display total file sizes if the type is container      如果類型是容器的話,就显示容器大小
          --type string     Return JSON for specified type                         返回指定類型的 JSON 字符串
    
    # 查看 centos 的元數據
    [root@hwh1 ~]# docker inspect 147f08710d27
    [
        {
            "Id": "147f08710d2732d81ee9ce2680a7cfad48cbd186e87e27b081d82c103a29f084",
            "Created": "2020-06-15T13:13:13.783652979Z",
            "Path": "/bin/bash",
            "Args": [],
            "State": {
                "Status": "running",
                "Running": true,
                "Paused": false,
                "Restarting": false,
                "OOMKilled": false,
                "Dead": false,
                "Pid": 76123,
                "ExitCode": 0,
                "Error": "",
                "StartedAt": "2020-06-15T13:13:15.632825635Z",
                "FinishedAt": "0001-01-01T00:00:00Z"
            },
            "Image": "sha256:470671670cac686c7cf0081e0b37da2e9f4f768ddc5f6a26102ccd1c6954c1ee",
            "ResolvConfPath": "/var/lib/docker/containers/147f08710d2732d81ee9ce2680a7cfad48cbd186e87e27b081d82c103a29f084/resolv.conf",
            "HostnamePath": "/var/lib/docker/containers/147f08710d2732d81ee9ce2680a7cfad48cbd186e87e27b081d82c103a29f084/hostname",
            "HostsPath": "/var/lib/docker/containers/147f08710d2732d81ee9ce2680a7cfad48cbd186e87e27b081d82c103a29f084/hosts",
            "LogPath": "/var/lib/docker/containers/147f08710d2732d81ee9ce2680a7cfad48cbd186e87e27b081d82c103a29f084/147f08710d2732d81ee9ce2680a7cfad48cbd186e87e27b081d82c103a29f084-json.log",
            "Name": "/dazzling_benz",
            "RestartCount": 0,
            "Driver": "overlay2",
            "Platform": "linux",
            "MountLabel": "",
            "ProcessLabel": "",
            "AppArmorProfile": "",
            "ExecIDs": null,
            "HostConfig": {
                "Binds": null,
                "ContainerIDFile": "",
                "LogConfig": {
                    "Type": "json-file",
                    "Config": {}
                },
                "NetworkMode": "default",
                "PortBindings": {},
                "RestartPolicy": {
                    "Name": "no",
                    "MaximumRetryCount": 0
                },
                "AutoRemove": false,
                "VolumeDriver": "",
                "VolumesFrom": null,
                "CapAdd": null,
                "CapDrop": null,
                "Capabilities": null,
                "Dns": [],
                "DnsOptions": [],
                "DnsSearch": [],
                "ExtraHosts": null,
                "GroupAdd": null,
                "IpcMode": "private",
                "Cgroup": "",
                "Links": null,
                "OomScoreAdj": 0,
                "PidMode": "",
                "Privileged": false,
                "PublishAllPorts": false,
                "ReadonlyRootfs": false,
                "SecurityOpt": null,
                "UTSMode": "",
                "UsernsMode": "",
                "ShmSize": 67108864,
                "Runtime": "runc",
                "ConsoleSize": [
                    0,
                    0
                ],
                "Isolation": "",
                "CpuShares": 0,
                "Memory": 0,
                "NanoCpus": 0,
                "CgroupParent": "",
                "BlkioWeight": 0,
                "BlkioWeightDevice": [],
                "BlkioDeviceReadBps": null,
                "BlkioDeviceWriteBps": null,
                "BlkioDeviceReadIOps": null,
                "BlkioDeviceWriteIOps": null,
                "CpuPeriod": 0,
                "CpuQuota": 0,
                "CpuRealtimePeriod": 0,
                "CpuRealtimeRuntime": 0,
                "CpusetCpus": "",
                "CpusetMems": "",
                "Devices": [],
                "DeviceCgroupRules": null,
                "DeviceRequests": null,
                "KernelMemory": 0,
                "KernelMemoryTCP": 0,
                "MemoryReservation": 0,
                "MemorySwap": 0,
                "MemorySwappiness": null,
                "OomKillDisable": false,
                "PidsLimit": null,
                "Ulimits": null,
                "CpuCount": 0,
                "CpuPercent": 0,
                "IOMaximumIOps": 0,
                "IOMaximumBandwidth": 0,
                "MaskedPaths": [
                    "/proc/asound",
                    "/proc/acpi",
                    "/proc/kcore",
                    "/proc/keys",
                    "/proc/latency_stats",
                    "/proc/timer_list",
                    "/proc/timer_stats",
                    "/proc/sched_debug",
                    "/proc/scsi",
                    "/sys/firmware"
                ],
                "ReadonlyPaths": [
                    "/proc/bus",
                    "/proc/fs",
                    "/proc/irq",
                    "/proc/sys",
                    "/proc/sysrq-trigger"
                ]
            },
            "GraphDriver": {
                "Data": {
                    "LowerDir": "/var/lib/docker/overlay2/74794286462edce8a73f8e74239c0229d6cec3afac92f052951245d91e05c7cd-init/diff:/var/lib/docker/overlay2/ae0a1afad34903571dd0df8a39bc4bea93ccd793ae2f6185fa95385c18d56f05/diff",
                    "MergedDir": "/var/lib/docker/overlay2/74794286462edce8a73f8e74239c0229d6cec3afac92f052951245d91e05c7cd/merged",
                    "UpperDir": "/var/lib/docker/overlay2/74794286462edce8a73f8e74239c0229d6cec3afac92f052951245d91e05c7cd/diff",
                    "WorkDir": "/var/lib/docker/overlay2/74794286462edce8a73f8e74239c0229d6cec3afac92f052951245d91e05c7cd/work"
                },
                "Name": "overlay2"
            },
            "Mounts": [],
            "Config": {
                "Hostname": "147f08710d27",
                "Domainname": "",
                "User": "",
                "AttachStdin": true,
                "AttachStdout": true,
                "AttachStderr": true,
                "Tty": true,
                "OpenStdin": true,
                "StdinOnce": true,
                "Env": [
                    "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
                ],
                "Cmd": [
                    "/bin/bash"
                ],
                "Image": "centos",
                "Volumes": null,
                "WorkingDir": "",
                "Entrypoint": null,
                "OnBuild": null,
                "Labels": {
                    "org.label-schema.build-date": "20200114",
                    "org.label-schema.license": "GPLv2",
                    "org.label-schema.name": "CentOS Base Image",
                    "org.label-schema.schema-version": "1.0",
                    "org.label-schema.vendor": "CentOS",
                    "org.opencontainers.image.created": "2020-01-14 00:00:00-08:00",
                    "org.opencontainers.image.licenses": "GPL-2.0-only",
                    "org.opencontainers.image.title": "CentOS Base Image",
                    "org.opencontainers.image.vendor": "CentOS"
                }
            },
            "NetworkSettings": {
                "Bridge": "",
                "SandboxID": "dcbcaf21dc6395481ce4c27bd58e83b306aee13216f852b4ac92edab13dc6698",
                "HairpinMode": false,
                "LinkLocalIPv6Address": "",
                "LinkLocalIPv6PrefixLen": 0,
                "Ports": {},
                "SandboxKey": "/var/run/docker/netns/dcbcaf21dc63",
                "SecondaryIPAddresses": null,
                "SecondaryIPv6Addresses": null,
                "EndpointID": "1b8456cbbb162e74762144d5a13305ba84acb45db92ce2467c0bc15724077b72",
                "Gateway": "172.17.0.1",
                "GlobalIPv6Address": "",
                "GlobalIPv6PrefixLen": 0,
                "IPAddress": "172.17.0.2",
                "IPPrefixLen": 16,
                "IPv6Gateway": "",
                "MacAddress": "02:42:ac:11:00:02",
                "Networks": {
                    "bridge": {
                        "IPAMConfig": null,
                        "Links": null,
                        "Aliases": null,
                        "NetworkID": "23077e8fffbf9407b9d83e492e05cc11904b4dbf7fd3ab3a4b84c36c1a7ee4a5",
                        "EndpointID": "1b8456cbbb162e74762144d5a13305ba84acb45db92ce2467c0bc15724077b72",
                        "Gateway": "172.17.0.1",
                        "IPAddress": "172.17.0.2",
                        "IPPrefixLen": 16,
                        "IPv6Gateway": "",
                        "GlobalIPv6Address": "",
                        "GlobalIPv6PrefixLen": 0,
                        "MacAddress": "02:42:ac:11:00:02",
                        "DriverOpts": null
                    }
                }
            }
        }
    ]
    

    進入當前正在運行的容器

    # 我們通常容器都是使用後台方式運行的,需要進入容器,修改一些配置
    # 方式一 :docker exec -it 容器id bashShell
    # 進入容器后開啟一個新的終端,可以在裏面操作(常用)
    # docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
    
    [root@hwh1 ~]# docker exec --help 
    Usage:	docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
    Run a command in a running container
    Options:
      -d, --detach               Detached mode: run command in the background             在後台運行命令
          --detach-keys string   Override the key sequence for detaching a container      重寫用於分離容器的鍵序列
      -e, --env list             Set environment variables                                設置環境變量
      -i, --interactive          Keep STDIN open even if not attached                     即使沒有連接,也保持STDIN打開
          --privileged           Give extended privileges to the command                  授予命令擴展權限
      -t, --tty                  Allocate a pseudo-TTY                                    分配一個偽TTY
      -u, --user string          Username or UID (format: <name|uid>[:<group|gid>])       用戶名或者 id
      -w, --workdir string       Working directory inside the container                   容器內的工作目錄
      
    
    [root@hwh1 ~]# docker exec -it a41c80fd6d1c /bin/bash
    [root@a41c80fd6d1c /]# ls
    bin  etc   lib	  lost+found  mnt  proc  run   srv  tmp  var
    dev  home  lib64  media       opt  root  sbin  sys  usr
    
    
    # 方式二 :docker attach 容器id
    # 進入容器正在執行的終端,不會啟動新的終端
    # docker attach [OPTIONS] CONTAINER
    
    [root@hwh1 ~]# docker attach --help 
    Usage:	docker attach [OPTIONS] CONTAINER
    Attach local standard input, output, and error streams to a running container
    Options:
          --detach-keys string   Override the key sequence for detaching a container       重寫用於分離容器的鍵序列
          --no-stdin             Do not attach STDIN                                       不要附加STDIN
          --sig-proxy            Proxy all received signals to the process (default true)  將所有接收到的信號代理到進程(默認為true)
    
    
    [root@hwh1 ~]# docker attach a41c80fd6d1c
    [root@a41c80fd6d1c /]# ls
    bin  etc   lib	  lost+found  mnt  proc  run   srv  tmp  var
    dev  home  lib64  media       opt  root  sbin  sys  usr
    

    拷貝文件

    # 從容器被拷貝文件到主機上
    # docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-               docker cp 容器id:容器內路徑 目的的主機路徑
    
    # 從主機上拷貝文件到容器
    # docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH               docker cp 主機路徑 容器id:目的的容器內路徑
    
    [root@hwh1 ~]# docker cp --help 
    Usage:	docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
        	docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH
    Copy files/folders between a container and the local filesystem
    
    Use '-' as the source to read a tar archive from stdin
    and extract it to a directory destination in a container.
    Use '-' as the destination to stream a tar archive of a
    container source to stdout.
    
    Options:
      -a, --archive       Archive mode (copy all uid/gid information)  存檔模式(複製所有uid/gid信息)
      -L, --follow-link   Always follow symbol link in SRC_PATH        始終遵循容器內路徑中的符號鏈接
    
    # 從容器被拷貝文件到主機上
    [root@hwh1 home]# docker attach a41c80fd6d1c
    [root@a41c80fd6d1c /]# cd /home
    [root@a41c80fd6d1c home]# ls
    [root@a41c80fd6d1c home]# touch hwh.java               # 在 home 目錄下創建一個  hwh.java
    [root@a41c80fd6d1c home]# ls
    hwh.java
    [root@hwh1 home]# ls
    hwh  hwh1  hwh2  user01  user02
    [root@hwh1 home]# docker cp a41c80fd6d1c:/home/hwh.java /home           # 將 hwh.java 複製到主機上
    [root@hwh1 home]# ls
    hwh  hwh1  hwh2  hwh.java  user01  user02
    
    

    本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

    網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

    網頁設計公司推薦不同的風格,搶佔消費者視覺第一線

    ※想知道購買電動車哪裡補助最多?台中電動車補助資訊懶人包彙整

    南投搬家公司費用,距離,噸數怎麼算?達人教你簡易估價知識!

    ※教你寫出一流的銷售文案?

    ※超省錢租車方案

  • 菲南民答那峨島規模6.3強震

    摘錄自2019年10月17日中央社報導

    菲律賓南部民答那峨島北可塔巴托省(North Cotabato)杜路南鎮(Tulunan)東南方約22公里處,16日7時37分發晚間發生規模6.3強震,震源深度僅15公里,附近省份都感受到地震震波。已知造成2人死亡,至少20多人受傷。ABS-CBN新聞網報導,根據菲律賓火山暨地震研究所(Phivolcs)資訊,這起地震沒有海嘯風險。美國地質研究所測得地震規模為6.4。

    本站聲明:網站內容來源環境資訊中心https://e-info.org.tw/,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

    網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

    網頁設計公司推薦不同的風格,搶佔消費者視覺第一線

    ※想知道購買電動車哪裡補助最多?台中電動車補助資訊懶人包彙整

    南投搬家公司費用,距離,噸數怎麼算?達人教你簡易估價知識!

    ※教你寫出一流的銷售文案?

    ※超省錢租車方案

  • Model S 買氣縮 特斯拉急推租賃促銷方案

    美國豪華電動車製造商特斯拉 (Tesla) 執行長 Elon Musk 於 10 月 25 日透過官網宣佈美國專屬的「Model S」電動轎車月租金優惠,可將價格下砍最多 25%,另外還提供客戶 90 天的試用期,車主若不滿意可立即退貨。   Musk 25 日表示,資金成本遠低於特斯拉的 US Bank 現在將為特斯拉車主提供融資租賃優惠,一台全新的 Model S 每個月的租金可因此減少最多 25%。另外,特斯拉將開始為租車的客戶提供滿意保證,若車主在把 Model S 開回家後覺得不滿意,只要在 3 個月內把車交還,特斯拉就會解除雙方的租賃義務。   Model S 現在一台的售價介於 71,000 美元至超過 100,000 美元之間,而融資租賃方案每個月的租金則介於 777 至 1,271 美元、對特斯拉營收的貢獻度相當高。   不過,根據華爾街日報27日報導,特斯拉的汽車銷售量在美國趨疲,似乎是該公司推出促銷優惠的主因。WardsAuto.com 的數據顯示,2014 年截至 9 月底為止,Model S 僅在美國賣出 10,335 台,較 2013 年同期萎縮 26.3%。WardsAuto 產業分析師 Haig Stoddard 表示,Model S 是一款利基型產品,也許市場需求已經暫時獲滿足,而油價下挫更讓局勢更加惡化。  

    本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

    網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

    網頁設計公司推薦不同的風格,搶佔消費者視覺第一線

    ※想知道購買電動車哪裡補助最多?台中電動車補助資訊懶人包彙整

    南投搬家公司費用,距離,噸數怎麼算?達人教你簡易估價知識!

    ※教你寫出一流的銷售文案?

    ※超省錢租車方案

  • 穩當國內新能源車銷售冠軍 比亞迪今年前10月售逾13000輛

    10日,比亞迪官方公佈了新能源汽車的銷量情況。比亞迪秦10月銷售1702輛,1-10月累計11175輛。e6電動車銷售199輛,1-10月累計2203輛。今年1-10比亞迪新能源乘用車累計銷量達13378輛,穩居國內新能源汽車銷量冠軍寶座。   受免購置稅政策和電池產能釋放的雙重效應,比亞迪秦9月銷量環比增加29%,其中在上海的上牌量達1212台,上海已成為比亞迪秦在全國最大的市場。10月銷量增長速度放緩,可見目前其電池產能仍不能滿足新能源汽車發展的需求。比亞迪副總經理李雲飛透露,第二個電池廠9月建成後,能逐步消化以前累計近萬輛的秦訂單和新增訂單要求。   面向公共領域的純電動車型e6每月銷量保持在200輛左右。根據比亞迪總裁王傳福公佈的戰略計畫,比亞迪將在e6的基礎上新增E3/E5兩款產品,並推出e6的行政版,主打私家車市場。另外,比亞迪唐插電式混動SUV車型將於12月上市。

    本站聲明:網站內容來源於EnergyTrend https://www.energytrend.com.tw/ev/,如有侵權,請聯繫我們,我們將及時處理

    【其他文章推薦】

    網頁設計一頭霧水該從何著手呢? 台北網頁設計公司幫您輕鬆架站!

    網頁設計公司推薦不同的風格,搶佔消費者視覺第一線

    ※想知道購買電動車哪裡補助最多?台中電動車補助資訊懶人包彙整

    南投搬家公司費用,距離,噸數怎麼算?達人教你簡易估價知識!

    ※教你寫出一流的銷售文案?

    ※超省錢租車方案