Docker 更改鏡像存儲位置


在使用 Docker 的過程中,如果我們一切都以默認的設置進行操作的話,在使用一段時間之后你應該會發現系統的根目錄空間越來越少,直到有一天發現空間都被占滿了,最后發現原來是被 Docker 占用了。所以這個時候就需要處理這個蛋疼的問題了,在傳統的 PC 時代我們可能會聽糾結的,因為就筆記本來說,你要加個硬盤往哪加啊。如果是台式機,倒是可以直接加,但是還得買一塊,所以此時,是時候推薦一波雲服務器了。

當然你會說,我的 xx 應用或者 xx 網站就是跑在雲服務器上,但是,這和我想說的還不太一樣,我想說的是將雲服務器作為平時的開發測試機器,這樣我們就不會遇到磁盤不足,內存不足這些問題了,因為一旦遇到不足,那就加嘛,硬盤 100G 不夠,那就加到 500G,內存 4G 不夠,那就加到 8G,還不夠,那你想要多少嘛,盡量滿足你,只是簡單幾個操作的問題。好吧,扯遠了,這里也不准備打廣告了,直接看一下當雲服務器遇到 Docker 導致根目錄滿了之后如何處理的問題吧。

解決問題的方式無外乎第一步:添加一個新硬盤,第二步遷移數據。對於雲服務來說,都很容易,下面就具體描述一下。

掛載雲磁盤

雲服務器添加磁盤很容易的,直接從控制面板將磁盤加入主機即可,一般的雲服務軟件都是支持主機自動識別的,接下來就是主機內部的操作了,我這里用的是 CentOS7,所以步驟中的一些特定命令也是在相應環境下執行的:

  1. 使用 fdisk 分區

    使用 fdisk 對數據盤進行分區,執行命令 fdisk /dev/vdb。根據提示,依次操作:

    a. 輸入 n,回車。
    b. 輸入 p,回車。
    c. 輸入 13 次回車。
    d. 輸入 wq 后,回車,開始創建分區。

  2. 使用 parted 分區

    使用 parted 對數據盤進行分區,執行命令 parted /dev/vdb。根據提示,依次操作如下:

    a. 輸入 mklabel gpt,如果有提示,輸入 Y,回車。
    b. mkpart primary 0 -1,如果有提示,輸入 I,回車。
    c. 輸入 quit,回車,退出 parted

  3. 格式化新分區。

    假設格式化為 "ext4" 格式,則輸入命令

    $ mkfs.ext4 /dev/sdb1
    

    格式化的時間長短根據雲磁盤大小變化,雲磁盤越大,格式化時間越長。

  4. 掛載磁盤

    $ echo '/dev/vdb1 /mnt ext4 defaults 0 0' >> /etc/fstab
    $ mount -a
    $ df -h
    

    這個時候就可以看到新掛載的磁盤的大小和位置了,這個時候,就可以開始轉移 Docker 的數據了。

修改 Docker 位置:

默認情況下docker的存放位置為: /var/lib/docker,一般根下分區我們不會給太大。所以這個時候我們要考慮掛載大分區到 /var/lib/docker,具體的操作步驟如下:

  1. 停掉 Docker
  2. 拷貝 Docker 文件到目錄 cp -r /var/lib/docker/* /mnt/
  3. 刪除 Docker 原始目錄 rm -rf /var/lib/docker
  4. 掛載分區為 Docker 目錄:mount /dev/vdb1 /var/lib/docker
  5. 啟動 Docker,使用 docker psdocker images 確定遷移成功


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM