第七節:docker與虛擬機對比、私有倉庫的搭建和阿里雲容器鏡像服務介紹


一. docker容器和虛擬機對比

1. docker容器虛擬化

 (1). 容器就是將軟件打包成標准化單元,以用於開發、交付和部署。

 (2). 容器鏡像是輕量的、可執行的獨立軟件包 ,包含軟件運行所需的所有內容:代碼、運行時環境、系統工具、系統庫和設置。

 (3). 容器化軟件在任何環境中都能夠始終如一地運行。

 (4). 容器賦予了軟件獨立性,使其免受外在環境差異的影響,從而有助於減少團隊間在相同基礎設施上運行不同軟件時的沖突。

如圖:

2. docker容器和傳統虛擬機比較

(1). 相同點

 docker容器和虛擬機具有相同的資源隔離優勢和分配優勢。

(2). 不同點

 A. 容器虛擬化的是操作系統,虛擬機虛擬化的是硬件

 B. 傳統虛擬機可以運行不同的操作系統,容器只能運行同一類型操作系統。

二. 私有倉庫的搭建

1. 什么是私有倉庫

 Docker官方的Docker hub(https://hub.docker.com)是一個用於管理公共鏡像的倉庫,我們可以從上面拉取鏡像 到本地,也可以把我們自己的鏡像推送上去。但是,有時候我們的服務器無法訪問互聯網,或者你不希望將自己的鏡 像放到公網當中,那么我們就需要搭建自己的私有倉庫來存儲和管理自己的鏡像。

PS:像國內的阿里雲、騰訊雲等等都既提供公有倉庫,也提供私有倉庫。

2. 搭建自己的私有倉庫  

(1). 下載私有倉庫鏡像

docker pull registry

(2). 啟動私有倉庫容器

docker run -id --name=myRegistry -p 5000:5000 registry

PS:私有倉庫容器對外開放的端口為5000

(3). 打開瀏覽器 輸入地址http://私有倉庫服務器ip:5000/v2/_catalog

  看到   {"repositories":[]}    表示私有倉庫 搭建成功

(4). 配置私有倉庫的地址

 修改daemon.json ,【vim /etc/docker/daemon.json 】 在上述文件中添加一個key,保存退出。用於讓 docker 信任私有倉庫地址;

{
    "insecure-registries":["私有倉庫服務器ip:5000"]
}

如圖:

(5). 重啟docker 服務

systemctl restart docker   #重啟docker
docker start myRegistry      #啟動私有倉庫鏡像

3. 私有倉庫鏡像的上傳和下載

前提配置:

(1). 宿主機要先配置私有倉庫的地址為目標私有倉庫,必須是配置https

A. 指令:vi /etc/docker/daemon.json,  其中 https://119.45.174.249:5000 是私有倉庫地址

{
  "registry-mirrors": ["https://ijmr3it2.mirror.aliyuncs.com"],
  "insecure-registries": ["https://119.45.174.249:5000"]
}

B. 重啟

systemctl daemon-reload 
systemctl restart docker 

(2). 必須要登錄,后進行上傳和下載

docker login 119.45.174.249:5000

 如圖:

1. 上傳

# 1、標記鏡像為私有倉庫的鏡像     
docker tag redis:5.0 私有倉庫服務器IP:5000/redis:5.0
 
# 2、上傳標記的鏡像     
docker push 私有倉庫服務器IP:5000/redis:5.0

注意:只寫ip,不寫http://

如圖:

2. 下載

#拉取鏡像 
docker pull 私有倉庫服務器ip:5000/redis:5.0

 如圖:

 

 

三. 阿里雲容器鏡像服務

1. 鏡像加速服務

 centos和ubuntu系統直接復制下面代碼執行。

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://ijmr3it2.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

配置完成,進行查看,如下圖,說明配置成功。

 

2. 私有倉庫的配置

(1).  前提

A.  先配置一個倉庫密碼,此密碼不是案例雲的登錄密碼。(還要注意所在的地區)

 

 

 

B. 創建命名空間,后續上傳的鏡像可以位於不同的命名空間下。

  如:ypfstore為私有倉庫,ypfstore2為公有倉庫。

 

2. 上傳

(1). 登錄

sudo docker login --username=xxxxxx registry.cn-shenzhen.aliyuncs.com

上述指令來源於: 

 

如圖: 

同一個鏡像可以上傳多個不同版本:

 

 

 

(2)  把本機的redis:5.0鏡像上傳到阿里雲ypfstore命名空間下

A. 先做tag標記

sudo docker tag redis:5.0 registry.cn-shenzhen.aliyuncs.com/ypfstore/redis:5.0

B. push上傳

sudo docker push registry.cn-shenzhen.aliyuncs.com/ypfstore/redis:5.0

 如下圖:

去阿里雲平台查看上傳的鏡像,並且詳情中有完善的該鏡像操作指令,比如下載、修改等等。

 

 

3. 下載

(1). 登錄(同上)

sudo docker login --username=xxxxxx registry.cn-shenzhen.aliyuncs.com

(2). 執行下載指令

sudo docker pull registry.cn-shenzhen.aliyuncs.com/ypfstore/redis:5.0

 如下圖:

 

3. 公共倉庫的使用

 要求:上述ypfstore2命名空間對應的就是公共倉庫,現在我要把本機nginx:latest上傳到阿里雲的ypfstore2公共倉庫(要求阿里雲中顯示為1.0版本),不需要登錄,直接先標記,后上傳即可。

 (1). 上傳

#標記
sudo docker tag nginx:latest registry.cn-shenzhen.aliyuncs.com/ypfstore2/nginx:1.0
#上傳
sudo docker push registry.cn-shenzhen.aliyuncs.com/ypfstore2/nginx:1.0

 如下圖:

去阿里雲中查看:

 

 

(2). 下載

 無需登錄,直接執行下載指令

sudo docker pull registry.cn-shenzhen.aliyuncs.com/ypfstore2/nginx:1.0

 如下圖:

 

 

 

 

 

 

 

!

  • 作       者 : Yaopengfei(姚鵬飛)
  • 博客地址 : http://www.cnblogs.com/yaopengfei/
  • 聲     明1 : 如有錯誤,歡迎討論,請勿謾罵^_^。
  • 聲     明2 : 原創博客請在轉載時保留原文鏈接或在文章開頭加上本人博客地址,否則保留追究法律責任的權利。
 

 


免責聲明!

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



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