docker倉庫Harbor的搭建教程

docker專題(四)

故事凌 故事凌 2月27日

6. 管理容器的資源

6.1 基礎知識: linux control groups

Linux Cgroup 可讓您為系統中所運行任務(進程)的用戶定義組 群分配資源— 比如 CPU 時間、系統內存、網絡帶寬或者這些資源 的組合。您可以監控您配置的cgroup,拒絕cgroup 訪問某些資源, 甚至在運行的系統中動態配置您的 cgroup。所以,可以將 controll groups 理解為 controller (system resource) (for) (process) groups,也就是是說它以一組進程為目標進行系統資源分配和控 制。

6.1.1 Linux control groups主要提供瞭如下功能

  • Resource limitation: 限制資源使用,比如內存使用上限以及文件系統的緩存限制。
  • Prioritization: 優先級控制,比如:CPU利用和磁盤IO吞吐。
  • Accounting: 一些審計或一些統計,主要目的是為了計費。
  • Control: 掛起進程,恢復執行進程。

6.1.2 查看linux內核中是否啟用了cgroup

docker倉庫Harbor的搭建教程

6.2 docker對cpu的使用

6.2.1 dockefile構建一個鏡像

保存下面的文件命名為: Dockerfile

<code>FROM centos:lates
RUN yum install -y epel-release && yum install -y stress
ENTRYPOINT["stress"]/<code>

Docker能夠指定(通過運行命令的-c或者--cpu-shares開關)給一個容器的可 用的CPU分配值。這是一個相對權重,與實際的處理速度無關。每個新的容 器默認的將有1024CPU配額,當我們單獨講它的時候,這個值並不意味著什 麼。但是如果我們啟動兩個容器並且兩個都將使用 100%CPU,CPU時間將在 這兩個容器之間平均分割,因為它們兩個都有同樣的CPU配額(為了簡單起 見,假設沒有任何其他進程在運行)

使用下面的方式啟動兩個容器,運行之前創建好的mycentos

<code>docker run -itd -c 1024 --cpus 4 centos:7

docker run -itd -c 512 --cpus 4 centos:7 /<code>

注意:第一個容器佔用CPU的權重是1024;第二個容器是512

<code>systemctl set-property docker- a92daccba6983f210bf28c4f4f6e2c4c579d58f91a16d4702ee8e4ae7f8a0f5f.sc ope CPUShares=1024/<code>


6.3 docker對內存的使用

  • 第一件事需要注意的是,默認一個容器可以使用主機上的所有內存。
  • 如果你想為容器中的所有進程限制內存,使用docker run命令的 -m開 關即可。你可以使用bytes值定義它的值或是添加後綴(k,m或g)。• 例如:docker run -it -m 128m centos
  • 為了顯示限制的實際情況,我將再次使用我的mycentos鏡像.
  • docker run -it --rm -m 128m mycentos --vm 1 --vm-bytes 128M --vm-hang 0-m128m:用於限制容器使用的內存大小 • --vm1:產生一個內存分配的進程 • --vm-bytes 128M:每次分配大小為128M--vm-hang 0:分配後立即釋放;如果為100,表示分配後不釋放,測試100

6.4 docker對I/O的使用

使用命令docker help run | grep -E 'bps|IO'得到Docker對I/O管理的 相關參數,如下:

docker倉庫Harbor的搭建教程

7. 搭建Harbor私有倉庫

7.1 什麼是Harbor

Docker容器應用的開發和運行離不開可靠的鏡像管理,雖然 Docker官方也提供了公共的鏡像倉庫,但是從安全和效率等方面 考慮,部署我們私有環境內的Registry也是非常必要的。Harbor是 由VMware公司開源的企業級的Docker Registry管理項目,它包括 權限管理(RBAC)、LDAP、日誌審核、管理界面、自我註冊、鏡像 複製和中文支持等功能。

7.2 安裝docker和docker compose

<code># 安裝docker
yum install docker

#安裝docker compose
curl -L https://github.com/docker/compose/releases/download/1.23.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
# 查看docker compose的版本
docker-compose --version/<code>

7.3 安裝Harbor

Harbor支持在線和離線安裝方式,這裡,我們使用離線方式,先下載Harbor安裝包:

<code>wget https://storage.googleapis.com/harbor-releases/harbor-offline-installer-v1.5.3.tgz/<code>

7.3.1 解壓離線安裝包

<code>tar xzvf harbor-offline-installer-v1.5.3.tgz
mv harbor /usr/local/harbor
cd /usr/local/harbor/<code>

7.3.2 配置Harbor

核心配置文件:$HARBOR_HOME/harbor.cfg

<code># 監聽地址
hostname = harbor主機的IP地址或者主機名 # 登錄密碼
harbor_admin_password = 123456
# 只允許管理員可以創建項目 project_creation_restriction = everyone/<code>

7.3.3 安裝Harbor

<code>./prepare #配置Harbor
./install.sh #安裝Harbor/<code>

7.3.4 訪問Harbor

輸入瀏覽器:主機ip, 如下:

默認的賬戶為 admin,密碼為 Harbor12345。

docker倉庫Harbor的搭建教程

7.4 在Docker客戶機上通過終端訪問harbor

  • vi /usr/lib/systemd/system/docker.serviceExecStart=/usr/bin/dockerd --insecure-registry my.harbor.com , 其中:my.harbor.com是harbor運行主機的hostname
  • 創建/etc/docker/daemon.json文件,在文件中指定倉庫地址
<code>cat > /etc/docker/daemon.json << EOF
{ "insecure-registries":["my.harbor.com"] }
EOF/<code>

重啟Docker

<code>systemctl daemon-reload
systemctl restart docker/<code>


重啟Docker

<code>systemctl daemon-reload
systemctl restart docker/<code>


重啟Docker

<code>systemctl daemon-reload
systemctl restart docker/<code>


重啟Docker



<code>systemctl daemon-reloadsystemctl restart docker/<code>

7.5 驗證環境

使用docker login登錄:

<code>docker login my.harbor.com/<code>
  • 創建Dockerfile
<code>FROM centos
ENV TZ "Asia/Shanghai"/<code>
  • 編譯Dockerfile
<code>docker build -t **my.harbor.com**/library/mycentos ./<code>
  • 使用docker images查看生產的鏡像
  • 將鏡像上傳到私有的harbor鏡像倉庫
<code>docker push **my.harbor.com**/library/mycentos/<code>


分享到:


相關文章: