Docker配置容器位置和小技巧

Docker使用小技巧


  1. 清理所有中止的docker容器html

    有時候咱們會有不少已經中止的容器或者因爲錯誤強制退出不能用的容器,那咱們就須要刪除了,可是咱們一個一個的rm刪除很麻煩,有多少容器就要rm多少次,咱們能夠根據docker ps -qa 查出全部容器的id,一次性所有刪除,不用擔憂會刪除正在運行的容器,運行中的容器rm沒法刪除,這樣咱們就一次性把全部中止的容器刪除了前端

    # 只適用於Linux環境下
    docker rm $(docker ps -qa)
  2. 查看鏡像中得環境變量nginx

    當咱們製做好一個鏡像或者獲取到一個鏡像以後若是咱們想知道他的環境變量,咱們首先想到的就是建立容器看看就知道了,其實沒必要,咱們能夠直接經過env查看docker

    docker run nginx env

  3. Windows上和Linux的區別json

    這兩種環境的區別主要緣由仍是docker的支持問題,咱們都知道docker最開始是在Linux上發行的,依賴於Linux內核,可是Windows上沒有,那麼咱們如今是怎麼用的呢,虛擬機,若是是win10如下版本基本上裝的都是VirtualBox,win10的不少都會選擇桌面版的,使用的Hyper-V ,也是虛擬機的一種。只有有了虛擬機以後docker才能在windows上使用,到這裏咱們應該知道兩種不一樣之處了windows

    在Linux上docker直接就在Linux系統上的,可是在windows上不一樣,windows系統上是虛擬機,虛擬機上纔是docker數組

    Linux系統 << docker容器安全

    win系統 << 虛擬機 << docker容器網絡

    也就是這種緣由,致使咱們在使用的過程當中有略微的不一樣,最多見的就是開端口的時候工具

    Linux系統:docker容器端口直接映射到Linux系統

    windows系統:docker容器端口映射到虛擬機,再由虛擬機映射到咱們的windows

    注: 把咱們虛擬機中選擇網絡的時候選擇網絡地址轉換(NAT),這樣咱們就不用考慮中間虛擬機到windows這層的端口映射問題了

  4. 掛載

    在使用Docker的時候不少人都喜歡製做鏡像,把應用直接打包到鏡像中,直接啓動鏡像,一切OK,可是避免不了的是咱們有時候會作一些細微的修改,特別是配置文件或者是一些項目中微小的修改,這種時候咱們仍是要從新作鏡像嗎?答案是不須要的,沒有必要

    ​ 咱們前端使用nginx鏡像部署,可是發佈以後發現有一點樣式須要微調,那麼咱們是否是還須要從新制做一個鏡像呢,這樣咱們會不會感受很麻煩(至少我會感受很麻煩),想一想咱們只須要把修改過的文件把容器中的文件覆蓋就好了,怎麼樣才能直接把修改過的文件覆蓋容器中的文件,兩種辦法:第一直接把文件cp到容器中,這個過程咱們仍是要操做容器,怎麼才能不動容器呢?掛載 咱們能夠在啓動容器的時候直接把會在後面修改的東西掛載到宿主機上,這樣咱們就不用動容器了,啓動的時候使用-v參數掛載宿主機文件或目錄到容器

    docker run -d -p 80:80 -v /c/Users/SunArmy/Desktop/html:/usr/share/nginx/html nginx

咱們隨便寫一個index.html裏面寫上welcome nginx

把這個文件覆蓋/opt/docker/html/下的index.html

再訪問

重啓都不須要直接OK

爲何不選擇直接cp到容器中

​ 有這樣一種狀況,若是你須要修改的是配置文件,這確定是須要重啓的,可是在修改的時候不當心把配置文件寫錯了,這個時候你的容器就起不來了,想要修改容器中的配置,那也作不到了(除非從新建立容器),換種作法,若是咱們把配置文件掛載在外面當你啓動不起來的時候你能夠直接在宿主機上修改成正確配置重啓啓動便可,綜上,掛載的方式比cp到容器中的方式方便且安全

  1. jq工具

    最後介紹一個操做json的工具,這個是在查看容器配置的時候用的,咱們使用docker inspect ID查看容器配置,每每會過濾出來一些咱們關注的信息,通常狀況下咱們會選擇docker inspect --format= 或者使用grep

    可是不管使用哪種都沒有咱們最熟悉的操做json的方式來過濾用着爽

    jq工具須要單獨安裝yum install jq

    使用jq過濾docker inspect 獲取地址

    docker inspect ac |jq -r .[0].NetworkSettings.IPAddress

    . 表明管道前面的輸出,以後的[0]就是數組的第1個元素,後面的 . 就是相似於點出對象中的屬性同樣,跟咱們平時使用json是同樣的,jq還能方便的格式化查看json文件,對於在命令行下查看json文件簡直是利器

  2. 修改Docker本地鏡像和容器的存儲位置

    不少人都是隻知道建立了容器,歷來沒有關注過建立的容器在哪?本地鏡像在哪?

    可是,當你不得不關注的時候每每就是你的docker鏡像和容器把你的盤裝滿了

    查看Docker鏡像和容器存儲的位置

    docker info |greo Docker

    默認位置就是:/var/lib/docker

    修改存儲位置的方法有兩種:

    一):經過創建軟鏈接,把/var/lib/docker 移動到其餘地方,創建到這裏的軟鏈接

    # 中止docker
     service docker stop
    # 移動/var/lib/docker 到/usr/local/
     mv /var/lib/docker /usr/local/
    # 創建軟鏈接
     ln  -s /usr/local/docker /var/lib/docker
    # 啓動Docker
     service docker start

    這個時候咱們已經修改了,可是查看位置的時候看到的位置仍是/var/lib/docker

    可是這是個連接,能夠查看大小發現是空的,真實的存儲位置已經成爲了/usr/local/docker

    # 查看/var/lib/docker目錄大小
     du -dh /var/lib/docker

    二):修改配置文件

    默認配置文件/etc/docker/daemon.json

    若是沒有的話就本身建立

    {
      "registry-mirrors": ["http://hub-mirror.c.163.com"],
      "graph":"/opt/docker"
    }

    直接修改 graph 的值爲你的位置而後重啓,OK

    啓動

    service docker stop

    中止

    service docker start

    重啓

    service docker restart

    再查看docker的存儲位置,已經修改爲功

相關文章
相關標籤/搜索