角色 1 -- index
index負責並維護有關使用者帳戶、映象的校驗以及公共命名空間的資訊。它使用以下元件維護這些資訊:
角色 2 --registry
registry
是映象和圖表的倉庫。然而,它沒有乙個本地資料庫,也不提供使用者的身份認證,由s3、雲檔案和本地檔案系統提供資料庫支援。此外,通過index auth service的token方式進行身份認證。
角色 3 --registry client
docker充當registry客戶端來負責維護推送和拉取的任務,以及客戶端的授權。
docker registry:192.168.1.201
docker clinent:192.168.1.200
首先保證兩台宿主機上都已安裝docker
1:docker hub 公共映象中有 registry 的映象,直接從docker hub拉取。此操作在192.168.1.201上執行
1 mkdir /registry注:registry容器啟動時,會在容器內/var/lib/下面建立乙個registry目錄,用於儲存作為私有倉庫接受docker client 上傳的映象。-v:將宿主機/registry/目錄掛載到容器內/var/lib/registry目錄。2 docker run -p 5000:5000 --restart=always --name registry -v /registry/:/var/lib/registry -d registry
--restart 容器重啟方式
2:驗證私有倉庫是否搭建成功,使用瀏覽器訪問192.168.1.201:5000/v2/
介面顯示{},表示docker registry搭建成功
上篇文件中使用docker-compose建立了兩個容器mariadb和wordpress ,宿主機為192.168.1.200,這裡使用這兩個容器作為實驗物件。
1 cat >>/etc/hosts <注:registry和client都要解析。2 192.168.1.201hub.com
3 eof
cat >>/etc/docker/daemon.json<注:registry和client都要配置,配置完後需要重啟docker,再啟動registry。eof
docker映象命名格式為:提交者/映象名:版本號
例如:danny/wordpress:1.0 表示這個映象由danny使用者建立,如果沒有使用者名稱,預設為docker hub 官方建立,名稱為wordpress,版本號為1.0。如果沒有版本號,預設為最新版。
提交使用者必須和私有倉庫ip:port,可以做hosts解析,不然會提交失敗。
例如:你的倉庫ip為192.168.1.201,registry對映到宿主機上的埠為5000,映象名為nginx,你的client提交映象須為:192.168.1.201:5000/nginx
現在將已儲存資料的wordpress專案提交為hub.com使用者的映象。
現有wordpress專案mariadb資料庫又資料:使用者名稱,密碼,頁面等等資料。
1:檢視正在執行的容器
2:提交當前執行專案為新的映象。
3:上傳映象到私有倉庫
4:檢視私有倉庫映象,用瀏覽器訪問
可以看到有db,wordpress兩個映象。
docker-compose配置檔案
我是用的映象是有資料的映象commit後的映象,按理介面因該是我配置好的wordpress介面。現在還是沒有資料,說明commit沒有把mariadb的資料提交到新的映象內。
為此我去查了文件:
就只有一種可能,就是容器內的mariadb資料儲存的目錄是以掛載卷方式掛載的。
通過 docker inspect wordpress_db_1 檢視到"mounts"中有如下資訊:
我將宿主機/docker-compose/mysql/目錄掛載到容器內的/var/lib/mysql,儲存資料全部寫到掛載宿主機目錄下。
如果我啟動不掛載目錄的話,他還是將宿主機的目錄掛載到容器內用於儲存資料儲存目錄中。
到這裡,原因知道了。
192.168.1.200資料庫是掛載到宿主機上的,我把它拷到192.168.1.201掛載的目錄上應該就行了吧。
192.168.1.201:關閉wordpress和mariadb
192.168.1.200:將資料庫掛載目錄中檔案scp到192.168.1.201資料庫掛載目錄。
然後啟動192.168.1.201的wordpress專案
測試
Docker registry 私有倉庫
registry node mkdir p home registry 宿主機建立registry目錄 docker tag registry latest registry 1.0 為本地映象新增新標籤 docker run d p 5000 5000 privileged true v home...
Docker registry私服搭建
1 拉取私服映象 docker pull registry 2 啟動私服 docker run d p 5000 5000 v mtn docker registry var lib registry registry 3 檢視私服狀態 netstat an grep 5000 tcp6 0 0 5...
docker registry相關知識
官方的docker hub是乙個用於管理公共映象的好地方,我們可以在上面找到我們想要的映象,也可以把我們自己的映象推送上去。但是,有時候,我們的使用場景需要我們擁有乙個私有的映象倉庫用於管理我們自己的映象。這個可以通過開源軟體registry來達成目的。registry在github上有兩份 老 庫...