本文介紹如何在MAC下搭建docker的registry,我們在國內下載docker的鏡像非常慢,因此為團隊搭建一個基礎的registry是非常有必要的,而在MAC中的docker實際上是基於虛擬機器啟動並執行,因此如果想要持久化registry內的東西就要經過幾個步驟,首先要將虛擬機器和主機的磁碟做關聯,其次是docker的registry的image儲存要和虛擬機器掛載的磁碟做關聯,這樣才能讓docker中的檔案穿透到主機,本文比較完整的介紹了整個安裝部署過程。安裝homebrew
如果已經安裝請略過, 詳情請見 http://brew.sh/
請大家確認已經安裝過了XCode的Command line Tools以及VirtualBox
ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"
更新homebrew
為了確保有boot2docker的安裝指令碼
brew update
安裝boot2dockerbrew install boot2docker
初始化 boot2dockerboot2docker init
初始化完成後需要將DOCKER_HOST的地址設定為tcp://127.0.0.1:4243
export DOCKER_HOST=tcp://127.0.0.1:4243
為了方便,可以將這個資訊直接加入到 ~/.bash_profile,這樣就不用每次都export
將虛擬機器中的連接埠映射到主機連接埠在命令列中運行
VBoxManage modifyvm "boot2docker-vm" --natpf1 "tcp-port5000,tcp,,5000,,5000";
啟動 boot2dockerboot2docker start
啟動後會提示需要export docker的變數參數
掛載主機磁碟為了保證資料不丟失,還是盡量將有用的資料對應到真實的磁碟,這樣即使是虛擬機器磁碟損壞,以後還可以恢複倉庫資料
1.在Mac主機上安裝osxfuse和sshfs
:http://osxfuse.github.io
2.在Mac主機上建立檔案~/.boot2docker/b2d-passwd,並將boot2docker的ssh密碼儲存在這個檔案裡,預設為tcuser
3.在boot2docker的虛擬機器中執行如下命令
可以通過 boot2docker ssh 進入
sudo mkdir /mnt/sda1/sharesudo chown -R docker:docker /mnt/sda1/share
4.在Mac主機上執行如下指令
sshfs docker@localhost:/mnt/sda1/share /docker/share -oping_diskarb,volname=share -p 2022 -o reconnect -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o password_stdin < ~/.boot2docker/b2d-passwd
5.在boot2docker的虛擬機器中執行如下命令建立兩個目錄,用於儲存倉庫資料配置資訊
可根據您的實際情況修改
mkdir /mnt/sda1/share/registrymkdir /mnt/sda1/share/registry-config
如果想要取消掛載,則在Mac上執行
umount -f /docker/share
關於磁碟的映射方法來自https://github.com/boot2docker/boot2docker/issues/188
使用docker下載registry鏡像docker pull registry
下載鏡像最好先VPN,你懂的
設定registry的config檔案dev: loglevel: info storage: local storage_path: /mnt/registry
啟動registrydocker run -d -p 5000:5000 -v /mnt/sda1/share:/mnt -e DOCKER_REGISTRY_CONFIG=/mnt/registry-config/config.yml registry