當前位置:首頁 » 存儲配置 » docker鏡像存儲位置

docker鏡像存儲位置

發布時間: 2022-09-01 02:51:37

⑴ 怎麼修改docker images的存儲目錄

第一種方式更改docker的配置文件
Ubuntu/Debian: edit your /etc/default/docker file with the -g option: DOCKER_OPTS="-dns 8.8.8.8 -dns 8.8.4.4 -g /mnt"
Fedora/Centos: edit /etc/sysconfig/docker, and add the -g option in the other_args variable: ex. other_args="-g /var/lib/testdir". If there's more than one option, make sure you enclose them in " ". After a restart, (service docker restart) Docker should use the new directory.
第二種方式使用連接
1) Stop docker: service docker stop. Verify no docker process is running ps faux
2) Double check docker really isn't running. Take a look at the current docker directory: ls /var/lib/docker/
2b) Make a backup - tar -zcC /var/lib docker > /mnt/pd0/var_lib_docker-backup-$(date +%s).tar.gz
3) Move the /var/lib/docker directory to your new partition: mv /var/lib/docker /mnt/pd0/docker
4) Make a symlink: ln -s /mnt/pd0/docker /var/lib/docker
5) Take a peek at the directory structure to make sure it looks like it did before the mv: ls /var/lib/docker/ (note the trailing slash to resolve the symlink)
6) Start docker back up service docker start
7) restart your containers

⑵ 如何更改Docker默認的images存儲位置

Docker的鏡像以及一些數據都是在/var/lib/docker目錄下,它佔用的是Linux的系統分區,也就是下面的/dev/vda1,當有多個鏡像時,/dev/vda1的空間可能不足,我們可以把docker的數據掛載到數據盤,例如:/dev/vdb目錄下。
[root@10-10-63-106 docker]# df -lhT
Filesystem Type Size Used Avail Use% Mounted on
/dev/vda1 xfs 20G 3.8G 16G 20% /
devtmpfs devtmpfs 916M 0 916M 0% /dev
tmpfs tmpfs 921M 0 921M 0% /dev/shm
tmpfs tmpfs 921M 43M 878M 5% /run
tmpfs tmpfs 921M 0 921M 0% /sys/fs/cgroup
/dev/vdb xfs 100G 11G 90G 11% /data
其中主要的步驟如下:
(1) 首先,備份fstab文件
sudo cp /etc/fstab /etc/fstab.$(date +%Y-%m-%d)
(2) 停止docker, 用rsync同步/var/lib/docker到新位置.
如果rsync沒有安裝,則使用yum -y intall rsync 進行安裝,停止docker ,service docker stop,在數據分區中建立要掛載的目錄,mkdir /data/docker 使用rsync工具同步,rsync -aXS /var/lib/docker/. /data/docker/,這可能需要花費的較長的時間,取決於/var/lib/docker的大小,
(3) 修改fstab
在該文件中把下面一行添加到fstab里,將新位置掛載到 /var/lib/docker
/data/docker /var/lib/docker none bind 0 0
文件的內如如下:
[root@10-10-63-106 docker]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Thu Jul 31 07:50:13 2014
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/vda1 / xfs errors=remount-ro 0 1
/swapfile none swap defaults 0 0
/dev/vdb /data xfs defaults,noatime 0 0
/data/docker /var/lib/docker none bind 0 0
(4) 重新掛載
mount –a
(5) 使用下面的命令檢查一下
df /var/lib/docker/
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/vdb 104806400 47204 104759196 1% /var/lib/docker
(6)進入Container查看我們的空間
bash-4.1# df -lhT
Filesystem Type Size Used Avail Use% Mounted on
rootfs rootfs 9.8G 1.4G 7.9G 15% /
tmpfs tmpfs 921M 0 921M 0% /dev
shm tmpfs 64M 0 64M 0% /dev/shm
/dev/vdb xfs 100G 2.1G 98G 3% /etc/resolv.conf
/dev/vdb xfs 100G 2.1G 98G 3% /etc/hostname
/dev/vdb xfs 100G 2.1G 98G 3% /etc/hosts
tmpfs tmpfs 921M 0 921M 0% /run/secrets
tmpfs tmpfs 921M 0 921M 0% /proc/kcore
沒有更改/var/lib/docker路徑之前的情況:
bash-4.1# df -lhT
Filesystem Type Size Used Avail Use% Mounted on
rootfs rootfs 9.8G 1.4G 7.9G 15% /
tmpfs tmpfs 921M 0 921M 0% /dev
shm tmpfs 64M 0 64M 0% /dev/shm
/dev/vda1 xfs 20G 13G 6.9G 66% /etc/resolv.conf
/dev/vda1 xfs 20G 13G 6.9G 66% /etc/hostname
/dev/vda1 xfs 20G 13G 6.9G 66% /etc/hosts
tmpfs tmpfs 921M 0 921M 0% /run/secrets
tmpfs tmpfs 921M 0 921M 0% /proc/kcore
宿主機中的分區大小信息:
[root@10-10-63-106 ~]# df -lhT
Filesystem Type Size Used Avail Use% Mounted on
/dev/vda1 xfs 20G 13G 6.9G 65% /
devtmpfs devtmpfs 916M 0 916M 0% /dev
tmpfs tmpfs 921M 0 921M 0% /dev/shm
tmpfs tmpfs 921M 89M 832M 10% /run
tmpfs tmpfs 921M 0 921M 0% /sys/fs/cgroup
/dev/vdb xfs 100G 33M 100G 1% /data

⑶ docker-machine 安裝的docker 鏡像 存儲在哪

方案1, 使用參數-g 來修改 Docker 的鏡像存儲文件夾.
修改方法如下:
在 Ubuntu/Debian 系統下:
編輯 /etc/default/docker 文件, 添加-g 參數的設置, 如下:

DOCKER_OPTS="-dns 8.8.8.8 -dns 8.8.4.4 -g /mnt"
在 Fedora/Centos 系統下:

編輯 /etc/sysconfig/docker 文件, 添加-g 參數的設置, 如下:

other_args="-g /mnt"
重啟 Docker 服務, 問題就解決了.

方案2 使用鏈接
1) 停止 Docker: service docker stop.
2) 做個備份 tar -zcC /var/lib/docker > /mnt/var_lib_docker-backup-$(date + %s).tar.gz
3) 遷移/var/lib/docker目錄到met 目錄下: mv /var/lib/docker /mnt/docker
4) 建個 symlink: ln -s /mnt/docker /var/lib/docker
5) 確認文件夾類型為symlink 類型 ls /var/lib/docker
6) 啟動 docker service.

⑷ 本地鏡像保存在docker宿主機的什麼目錄下

docker鏡像存儲在本地機器中的哪個位置?
-
問答
-
雲+社區
-
騰訊雲
https://cloud.tencent.com/developer/ask/179262

⑸ 03-Docker存儲引擎

目前docker的默認存儲引擎為overlay2,不同的存儲引擎需要相應的文件系統支持,如需要磁碟分區的時候傳遞d-type穩健分層功能,即需要傳遞內核參數並開啟格式化磁碟的時候指定的功能

Docker 存儲引擎的核心思想是「層」的概念,理解了這個層,就基本可以理解它的設計思路。當我們拉取一個 Docker 鏡像的時候,可以看到如下:

一個鏡像被分成許多的「層」,每「層」包含了若乾的文件,而一層層堆疊起來就組成了我們的一個完整的鏡像。我們鏡像中的文件就是所有「層」文件的並集。 我們構建 Docker 鏡像一般採用 Dockerfile 的方式,而 Dockerfile 的每行命令,其實就會生成一個「層」,即使什麼文件都沒有添加。

文件的創建是在讀寫層增加文件,那修改和刪除呢?

這就要提一下 Docker 設計的 -on-write (CoW) 策略。

當我們試圖讀取一個文件時,Docker 會從上到下一層層去找這個文件,找到的第一個就是我們的文件。所以下面層相同的文件就被「覆蓋」了。而修改就是當我們找到這個文件時,將它「復制」到讀寫層並修改,這樣讀寫層的文件就是我們修改後的文件,並且「覆蓋」了鏡像中的文件了。而刪除就是創建了一個特殊的 whiteout 文件,這個 whiteout 文件覆蓋的文件即表示刪除了。

這樣的設計有什麼好處嗎?

第一個好處是減少了存儲空間,由於鏡像被分成了多個層,而各個層是靜態只讀的,是可以共享的。當你從一個鏡像構建另一個鏡像時,只需要添加新的層,原有的層不會被復制。

我們可以用 docker history 命令查看我們創建的鏡像,相同的層將共享且只保存一份。

我們可以在系統的 /var/lib/docker/<存儲驅動>/ 下看到我們所有的層。
第二個好處是啟動容器就變得非常輕量和快速。因為我們的容器只是添加了一個「空」的讀寫層,其他的都是復用的只讀層,需要用時才會去搜索。

Docker 的存儲引擎針對不同的文件系統,是由不同的存儲驅動。

Docker 主要有一下幾類存儲驅動:

有條件的情況下,我們還是建議選擇 overlay2 的存儲驅動。

Linux 系統正常運行, 通常需要兩個文件系統:

OverlayFS 是從 aufs 之上改進和簡化而來的,比 aufs 和 devicemapper 有更好的性能,大部分情況下也比 btrfs 好。
OverlayFS 結構分為三個層: LowerDir 、 Upperdir 、 MergedDir

LowerDir、Upperdir、MergedDir 關系圖:

特性:

獲取鏡像存儲路徑

Lower層
LowerDir 層的存儲是不允許創建文件, 此時的LowerDir實際上是其他的鏡像的UpperDir層,也就是說在構建鏡像的時候, 如果發現構建的內容相同, 那麼不會重復的構建目錄,而是使用其他鏡像的Upper 層來作為本鏡像的Lower
Merged層
屬於對外展示層,只能在運行中的容器查看,鏡像是查看不了的

1)查看init層地址指向
容器在啟動的過程中, Lower 會自動掛載init的一些文件

2) init層主要內容是什麼?
init層是以一個uuid+-init結尾表示,放在只讀層(Lowerdir)和讀寫層(Upperdir)之間,
作用只是存放/etc/hosts、/etc/resolv.conf 等文件。
3) 為什麼需要init層?
(1) 容器在啟動以後, 默認情況下lower層是不能夠修改內容的, 但是用戶有需求需要修改主機名與域名地址, 那麼就需要添加init層中的文件(hostname, resolv.conf), 用於解決此類問題.
(2) 修改的內容只對當前的容器生效, 而在docker commit提交為鏡像時候,並不會將init層提交。
(3) init 文件存放的目錄為/var/lib/docker/overlay2/<init_id>/diff
4) 查看init層文件
hostname與resolv.conf 全部為空文件, 在系統啟動以後由系統寫入。

配置 Docker 存儲驅動非常簡單,只需要修改配置文件即可。

方法1

方法2

⑹ docker存儲驅動

一句話,docker 存儲驅動用於管理docker 鏡像和容器。

在了解docker存儲驅動之前,先了解下docker如何構建鏡像,以及容器如何使用這些鏡像。

下圖為docker鏡像的圖形表示。

鏡像為一系列只讀層,當啟動一個容器時,docker將讀取只讀鏡像,並在頂部增加一個可讀寫層,如果正在運行的容器修改了現有文件,則該文件將從基礎只讀層復制到應用更改的最高讀寫層,讀寫層的版本會隱藏基礎文件,但不會破壞它,它仍然處於基礎層中。刪除容器後,這些更改將丟失。

Docker使用存儲驅動程序來管理鏡像層和可寫容器層的內容。

每個存儲驅動程序處理實現的方式不同,但是所有驅動程序都使用可分層鏡像和即寫即拷(CoW)策略。

當使用docker pull拉取一個鏡像時,每一層都是單獨拉取的,並存儲在本地/var/lib/docker/<storage-driver>中。

注意,/var/lib/docker/<storage-driver>中的目錄名與層id不對應(自Docker 1.10以來一直如此)。

注意,多個容器可能共享部分或全部只讀鏡像數據。因此,不能只計算虛擬大小的總數。這可能過高估計了磁碟的總使用量。

如果一個文件或者目錄處於只讀層,而容器需要對其進行訪問時,那麼只使用現有文件。當容器需要修改文件時,那麼文件被復制到讀寫層並修改,這將最小化IO和讀寫層的大小。

docker存儲驅動分為兩類,一類是overlays(覆蓋),一類是Snapsshotting(快照)。

它們都使用可拔插的架構。

可以通過docker info查看當前使用的存儲器驅動。

區別之處:

overlays文件系統,它們有多個目錄,每層鏡像都有不同的文件。

Snapsshottings包括devicemapper,btrfs和ZFS,它們在block級別上處理文件差異。

    ○ overlay2是當前支持的所有Linux發行版的首選存儲驅動程序,不需要額外配置。

    ○ 當運行在內核3.13上的Ubuntu 14.04上時,aufs是Docker 18.06和更老版本的首選存儲驅動程序,因為內核3.13不支持overlay2。

    ○ 支持devicemapper,但是在生產環境中需要直接lvm,因為環回lvm雖然是零配置,但性能非常差。devicemapper是CentOS和RHEL推薦的存儲驅動程序,因為它們的內核版本不支持overlay2。但是,CentOS和RHEL的當前版本現在支持overlay2,它現在是推薦的驅動程序。

    ○ 如果btrfs和zfs存儲驅動程序是後備文件系統(安裝Docker的主機的文件系統),則使用它們。這些文件系統允許高級選項,比如創建「快照」,但是需要更多的維護和設置。這些都依賴於備份文件系統的正確配置。

    ○ vfs存儲驅動程序用於測試目的,並用於不能使用即寫即拷文件系統的情況。這個存儲驅動程序的性能很差,一般不推薦用於生產。

所有這些存儲驅動程序,就是Union文件系統 的變體。

對於Docker,後備文件系統就是/var/lib/docker/所在的文件系統。有些存儲驅動程序只與特定的後備文件系統(宿主機的文件系統)一起工作。

    ○ overlay2、aufs和overlay都在文件層而不是塊層操作。這樣可以更有效地使用內存,但是容器的可寫層可能會在寫量大的工作負載中增長得相當大。

    ○ 塊級存儲驅動程序(如devicemapper、btrfs和zfs)對於寫量大的工作負載性能更好(盡管不如Docker卷)。

    ○ 對於許多小的寫操作或具有許多層的容器或深度文件系統,overlay的性能可能比overlay2好,但是消耗更多的inode,這可能導致inode耗盡。

    ○ btrfs和zfs需要大量內存。

○ zfs對於高密度的工作負載(如PaaS)是一個很好的選擇。

關於性能、適用性和最佳實踐的更多信息可以在每個存儲驅動程序的文檔中找到。

⑺ docker私有鏡像倉庫搭建和鏡像刪除

docker私有鏡像倉庫一般用來存放公司內部的鏡像,比如微服務中會有很多的服務需要放到自己公司內部的鏡像倉庫上,發布的時候直接從私有鏡像倉庫拉取。比如我公司的微服務部署在k8s環境上,微服務技術依然選擇熟悉的 Spring Cloud ,這樣每一個服務其實就是一個 Spring Boot 項目,我們通過Maven的插件會在項目編譯、打包之後推送到我們的私有鏡像倉庫,之後CI工具使用kubelet部署的時候會從私有鏡像倉庫拉取鏡像,最後完成部署,可以說私有鏡像倉庫是非常重要的一個環節。
接下來我會主要講述一下私有鏡像倉庫的搭建以及鏡像的管理,包括一些自己遇到的問題。
首先要保證自己的伺服器已經安裝了 docker 。具體的安裝教程可以看 官網 ,這里就不在贅述了。

首先我們需要創建一個自己的CA證書,

比如下圖是我自己創建時輸入的相關內容:

做好鏡像存儲目錄和證書目錄的掛載,運行即可

這一步需要在所有需要拉取鏡像的伺服器上執行。上月底我在部署正式環境時我就遇到了這個問題,k8s的節點上一直顯示拉取鏡像失敗,後來才發現忘了在k8s伺服器上配置證書。

hostname 即生成CA證書的時候最後輸入的 hostname , port 鏡像倉庫對外暴露的埠號。

如果是在鏡像倉庫所在的伺服器上,執行:

如果不是同一台伺服器,同樣需要存放創建證書目錄,執行:

之後將證書上傳到目標伺服器,且放在證書目錄下,名稱為 ca.crt 。

為了測試,我拉取一個 redis 鏡像,然後給它重新打一個 tag 。

推送到私有鏡像倉庫:

瀏覽器顯示:

表示剛才推送到私有鏡像倉庫是成功的。接下來我們測試從另一台伺服器拉取剛才的鏡像。當然這台伺服器一定要按照之前的描述配置好CA證書,還要修改伺服器 hosts 文件,配置好 ip 和 hostname 。
拉取鏡像:

拉取鏡像如下圖所示:

根據顯示可以看出拉取鏡像是成功的。
到這里鏡像倉庫的搭建、推送和拉取都講完了,接下來就看看怎麼刪除鏡像。

這里說的刪除鏡像是指從倉庫中刪除,即從伺服器上刪除。在構建倉庫的時候我們將鏡像的倉庫容器內的目錄掛載到了伺服器的目錄。鏡像倉庫內其實是沒有鏡像文件,都在伺服器對應的目錄下。在開發的時候我就遇到過這樣一個問題,因為是開發環境項目編譯、打包、鏡像構建和推送都非常頻繁,雖然新的鏡像會覆蓋老的鏡像,但是原有的鏡像文件本身並沒有被覆蓋,這樣的結果就是雖然鏡像倉庫上看鏡像只有一個,但是本地服務上存儲的是很多個鏡像文件(而且基本是沒啥用的),最終導致了服務磁碟空間不足的情況。

我們依然以 Redis 舉例,我將多不同版本的 Redis 多次像私有倉庫推送,不管是 Redis 4.0、5.0、6.0,最終我向倉庫推送的版本號都是 redis:v4 (過程省略),最終我們在鏡像倉庫目錄( /home/registry/ )下可以看到有多個 sha256 的值,詳細目錄:
/home/registry/docker/registry/v2/repositories/redis/_manifests/revisions/sha256

如下圖:

如果要刪除鏡像首先需要修改配置文件,進入到docker容器內:

保存之後退出容器。
我們進入到存放鏡像的目錄下,刪除一個鏡像的 sha256 的值

上面只是刪除了鏡像的 sha256 值,並沒有刪除鏡像本身,我們需要調用垃圾回收的命令:

這時候會看到一些輸出,比如:

這時候我們在查看下對應目錄的磁碟使用情況:

但是變化不明顯,那就在刪除一個試試。

除了手動刪除之外還可以通過API來刪除,這個方法我沒有測試,感興趣的小夥伴可以測試一下。在實際過程中我也是使用上述方法刪除的,因為我一般都是磁碟使用率到一定比例才進行批量刪除的,另外網上也有人通過腳本,感興趣的小夥伴都可以嘗試一下。

刪除可以使用使用官方API刪除:

查詢鏡像的 sha256 的值:

今天關於docker私有鏡像倉庫的內容就講到這里,如果對上面內容有什麼疑問歡迎大家交流探討,也歡迎大家多多點贊、分享、轉發,謝謝大家~~~​

⑻ docker image是什麼,存儲在什麼位置

image是鏡像,位置在/var/lib/docker,裡面有鏡像,容器和分層,都存儲在這里

⑼ docker windows 拉下來鏡像在什麼位置

docker的鏡像默認存放位置是 / var / lib / docker 下,要把這個掛到數據盤下本身不是什麼難事,不過要平滑移動就麻煩了。於是先去分區,掛載。我把數據盤掛載到了 / data 下,然後開始研究......
# df -lhT
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda1 ext4 29G 2.0G 26G 8% /
none tmpfs 4.0K 0 4.0K 0% /sys/fs/cgroup
udev devtmpfs 834M 12K 834M 1% /dev
tmpfs tmpfs 168M 428K 168M 1% /run
none tmpfs 5.0M 0 5.0M 0% /run/lock
none tmpfs 839M 0 839M 0% /run/shm
none tmpfs 100M 0 100M 0% /run/user
none tmpfs 64K 0 64K 0% /etc/network/interfaces.dynamic.d
/dev/sdb1 ext4 69G 52M 66G 1% /mnt
/dev/sdc1 ext4 1007G 156M 956G 1% /data
備份&文件同步
首先,備份 fstab 文件,文件位於 / etc / fstab
Shell

熱點內容
安卓蘋果通訊錄怎麼同步 發布:2025-03-17 09:58:12 瀏覽:173
ai緩存 發布:2025-03-17 09:48:27 瀏覽:921
翹嘴水滴輪什麼配置 發布:2025-03-17 09:47:34 瀏覽:582
小蟻攝像機如何雲存儲 發布:2025-03-17 09:42:42 瀏覽:817
如何修改自己的名字和密碼 發布:2025-03-17 09:32:20 瀏覽:788
寶馬3系槍灰色輪轂是哪個配置 發布:2025-03-17 09:28:17 瀏覽:514
鴻蒙系統退回安卓系統怎麼備份 發布:2025-03-17 09:14:33 瀏覽:615
資料庫服務公司 發布:2025-03-17 08:56:43 瀏覽:496
我的世界伺服器載入不了區塊 發布:2025-03-17 08:56:39 瀏覽:818
如何給無線路由器設置密碼 發布:2025-03-17 08:51:40 瀏覽:887