?一、?官方鏡像倉庫介紹
鏡像倉庫分類
公有倉庫
私有倉庫
官方鏡像倉庫屬于公有倉庫
網(wǎng)址: hub.docker.com????????網(wǎng)站名稱:dockerhub
注冊郵箱
創(chuàng)建倉庫
創(chuàng)建自己的倉庫
登錄倉庫
?web界面登錄
linux命令行登錄
?直接docker login 輸入用戶名和密碼
這個(gè)自己創(chuàng)建的存儲庫一般只有pull時(shí)才會登錄
1.1 公有倉庫容器鏡像上傳和下載
push上傳
?把本地的centos容器鏡像打一個(gè)tag標(biāo)簽到自己的dockerhub存儲庫
然后會產(chǎn)生一個(gè)一模一樣的鏡像
登錄dockerhub,然后docker push 上傳到自己的存儲庫? ?v1是自定義的tag
?nginx應(yīng)用鏡像的 上傳
最好在自己dockerhub里面重新創(chuàng)建一個(gè)repository
上傳之前必須先給要上傳的鏡像打tag標(biāo)簽并指定自己的倉庫位置
docker tag centos-nginx:tag 用戶名/倉庫:tag
?pull下載
下載之前必須先退出登錄dockerhub? (hub.docker.com)
docker pull 用戶名稱/倉庫:tag
?二、鏡像加速器
鏡像加速器主要目的在于加快用戶下載容器鏡像速度
因?yàn)閐ockerhub存儲庫在國外,下載很慢
2.1 docker 中國鏡像加速器
官網(wǎng):
1.Docker中國區(qū)官方鏡像
https://registry.docker-cn.com
2.網(wǎng)易
http://hub-mirror.c.163.com
3.中國科技大學(xué)
https://docker.mirrors.ustc.edu.cn
永久配置方法
第一步 修改/usr/lib/systemd/system/docker.service
第二步 編輯/etc/docker/daemon.json
{
? ? ? ? "registry-mirrors": ["https://registry.docker-cn.com"]
? ? ? ? 可以加其他鏡像源也行
}
第三步 重啟docker daemon
??systemctl daemon-reload????????systemctl restart docker
pull下載鏡像會快一點(diǎn)
?2.2 阿里云鏡像加速器
?點(diǎn)擊工作臺之后直接搜索容器鏡像服務(wù),選擇鏡像工具里面的鏡像加速器
直接復(fù)制粘貼到daemon.json使用就行? 多個(gè)鏡像源可以用逗號隔開
?最后restart docker 就行
三、docker本地容器鏡像倉庫
作用
在局域網(wǎng)內(nèi)使用,避免無法連接外網(wǎng)
方便與其它系統(tǒng)進(jìn)行集成,例如自動安裝,自動上傳
上傳下載大鏡像時(shí)
3.1 使用registry容器鏡像實(shí)現(xiàn)本地非安全鏡像倉庫 ?
第一步:下載registry注冊表? 容器鏡像
第二步:創(chuàng)建目錄用于掛載registry鏡像啟動的容器,便于容器鏡像數(shù)據(jù)持久化
mkdir /opt/dockerregistry? 用于掛載registry鏡像啟動的容器
第三步:啟動容器獲取鏡像倉庫
?-d 后臺啟動? --restart 容器重啟策略,docker主機(jī)關(guān)機(jī)之后開機(jī)就會自動重啟容器 always 是重啟策略的值? -v 添加volume卷也就是把目錄當(dāng)成掛載卷了 :后面就是掛載的容器鏡像位置
第四步:驗(yàn)證是否可用
在daemon.json里面加上"insecure-registries":? ["http://192.168.122.33:5000"],
逗號是隔開鍵值對
私有倉庫添加完成之后restart docker
?之前是上傳鏡像需要給自己的公有倉庫打tag標(biāo)簽,私有倉庫也需要打tag標(biāo)簽才能上傳
?之前掛載目錄是沒有文件的,因?yàn)榇蛄藅ag標(biāo)記之后上傳了centos鏡像才有數(shù)據(jù)
?另外一臺主機(jī)可以ping -c 次數(shù)? docker服務(wù)器ip
在其他主機(jī)中下載使用私有倉庫中的鏡像很快
?下載容器鏡像一秒鐘就好
3.2? 使用Harbor實(shí)現(xiàn)本地通過web進(jìn)行管理的非安全倉庫 ?
vmware公司開源? ?良好的中文界面? ?web管理界面? 使用廣泛
3.2.1 工具準(zhǔn)備
使用docker-compose工具進(jìn)行啟動
準(zhǔn)備安裝docker-compose有工具-pip
pip類似于yum,用于批量安裝python模塊及解決python模塊依賴
pip工具準(zhǔn)備
?
先安裝epel源
yum -y install epel-release
yum -y install python2-pip
pip list 和yum list 一樣可查看軟件的version?
最后的說明是pip最新版是19.1可以考慮upgrade升級
docker-compose工具準(zhǔn)備
requests模板可以ignore忽略安裝
如果是centos7可以不用忽略直接pip install docker-compose
?gihub上的操作文檔readme.md? ? +號代表版本必須大于
?點(diǎn)擊release 可以查看版本主線? 推薦使用offline離線下載
?文章來源地址http://www.zghlxwxcb.cn/news/detail-481673.html
下載之后的壓縮包可以上傳到docker服務(wù)器并解壓
tar xf harbor.....
然后在cd到harbor目錄,vim harbor.cfg
配置只需要修改一下hostname=docker主機(jī)ip
默認(rèn)harbor密碼是Harbor12345
?啟動harbor
運(yùn)行prepare腳本
?./install.sh 運(yùn)行安裝腳本
如果想停止harbor可以
docker-compose stop
開啟harbor可以使用
docker-compose?up -d
都是通過docker-compose.yml文件啟動harbor的
web訪問harbor直接訪問docker主機(jī)ip之后輸入默認(rèn)密碼就行
3.2.2?上傳鏡像到harbor鏡像私有倉庫
第一步:在daemon.json中添加此倉庫地址
之后restart docker?
會發(fā)現(xiàn)health狀態(tài)都是starting正在啟動,需要等一會兒?
第二步:給需要上傳的鏡像打標(biāo)記
?根據(jù)harbor鏡像倉庫的提示打標(biāo)記
?打tag標(biāo)記? 資源鏡像? ?標(biāo)記用戶/library/鏡像名稱
第三步:上傳鏡像到harbor鏡像私有倉庫
上傳和dockerhub倉庫一樣,需要先登錄才能上傳
?在其他主機(jī)訪問私有harbor鏡像
訪問鏡像都必須修改daemon.json文件指定不安全的注冊表和容器鏡像源的ip
?pull容器鏡像到本地
?速度比加速器快很多
?
四、docker網(wǎng)絡(luò)
4.1 本地網(wǎng)絡(luò)
本地網(wǎng)絡(luò)類型
bridge? ? ? ? ? ? ? ? NAT模式,可使容器連接外網(wǎng)
host? ? ? ? ? ? ? ? ? 與主機(jī)共享網(wǎng)絡(luò),可使容器連接外網(wǎng)
none????????????????容器僅有l(wèi)o網(wǎng)卡,無法連接外網(wǎng)
聯(lián)盟網(wǎng)絡(luò)? ? ? ? ? 容器間共享同一個(gè)網(wǎng)絡(luò)命名空間,實(shí)現(xiàn)容器間數(shù)據(jù)傳輸(例如數(shù)據(jù)庫服務(wù)器和nginx服務(wù)器間的數(shù)據(jù)通信傳輸)
bridge? 橋接
?
?docker 查看網(wǎng)絡(luò) ls
?使用--network選項(xiàng)選擇容器網(wǎng)絡(luò)
?
?每一臺docker host上的docker0所在網(wǎng)段完全一樣。
host
所有的容器與docker host在同一網(wǎng)絡(luò)中,可以讓容器訪問,甚至可以讓外網(wǎng)主機(jī)訪問容器中的服務(wù)
?任何主機(jī)都可以隨時(shí)訪問docker? host的ip 就能訪問容器的運(yùn)行的服務(wù)
4.2 跨主機(jī)容器間網(wǎng)絡(luò)
容器的主機(jī)相當(dāng)于局域網(wǎng),所以不能跨主機(jī)去訪問容器
?其實(shí)就和vpn一樣,用戶要訪問局域網(wǎng),可以通過在客戶端安裝vpn之后覆蓋網(wǎng)絡(luò)直接連接局域網(wǎng)的vpn實(shí)現(xiàn)訪問
?etcd其實(shí)就路由表數(shù)據(jù)庫
?Flannel工作原理
是Overlay網(wǎng)絡(luò),即覆蓋型網(wǎng)絡(luò)
通過etcd保存子網(wǎng)信息及網(wǎng)絡(luò)分配信息
給每臺Docker Host分配置一個(gè)網(wǎng)段通過UDP傳輸數(shù)據(jù)包
部署flannel
環(huán)境說明
node1
安裝軟件etcd flannel docker
node2
安裝軟件flannel docker
主機(jī)配置
1、設(shè)置主機(jī)名
systemctl set-hostname node1
2、配置/etc/hosts
?
3、安全配置
?
4、安裝軟件
node1
安裝軟件etcd flannel docker
node2
安裝軟件flannel docker
5、配置etcd數(shù)據(jù)庫
主要就是添加2379和4001監(jiān)聽客戶端地址和通知客戶端地址
?設(shè)置開機(jī)自啟enable并啟動etcd數(shù)據(jù)庫
查看端口號和etcd進(jìn)程
測試etcd是否可以存取數(shù)據(jù)及cluster的healthy?
配置flanner
vim /etc/sysconfig/flanneld
etcd:2379
atomic.io/network
?
在etcd數(shù)據(jù)庫添加一個(gè)網(wǎng)段
?etcdctl mk 配置的ip可以隨意
?啟動flannel服務(wù)
?ip a s 查看ip會發(fā)現(xiàn)多了一個(gè)flannel0
?配置flannel和docker
?第一步:查看subnet子網(wǎng)信息
?MTU不能超過1500,flannel是覆蓋型網(wǎng)絡(luò)
第二步:配置docker daemon
修改docker的/etc/docker/daemon.json
?重啟docker之后會發(fā)現(xiàn)flannel0和docker0在同一網(wǎng)段
?啟動容器驗(yàn)證網(wǎng)絡(luò)
?
?node2? ?的docker host也是 這樣配置的
flannel自動覆蓋之前的docker0?并給多臺docker 主機(jī)中的容器分配ip
?
測試分別在node1、node2創(chuàng)建容器,觀察容器IP地址情況
?
可以ping 容器的ip a s
注意:flannel0的ip、docker0的ip 、容器的ip都是獨(dú)立的
唯一的關(guān)系是flannel0的ip和docker0的ip是同一網(wǎng)段
正常情況是node1和node2的容器ip和docker0網(wǎng)橋ip都可以 ping 通
node1? 中的容器 ip 172.20.22.2? ? ?docker0網(wǎng)橋ip 172.20.22.1
node2? 中的容器 ip 172.20.13.2?????docker0網(wǎng)橋ip 172.20.13.1
docker exec 容器id ping -c 3 node2? ? node1ping不通node2的容器ip
docker exec 容器id? ping -c 3 node1? node1ping通自己的docker0網(wǎng)橋
node1 ping node2的13.1網(wǎng)橋也能通
可以docker ps 查看容器id 之后再ping
?如果發(fā)現(xiàn)容器之間無法ping通就修改iptables策略
雖然firewalld防火墻關(guān)閉了,但是iptables還在
iptables策略配置
- 轉(zhuǎn)發(fā)策略開啟:iptables -P FORWARD ACCEPT
- 查看nat路由配置:iptables -t nat -L
-
iptables -F
?指令是用來清除所有規(guī)則的,線上環(huán)境慎用?。?!。使用的時(shí)候需要注意一下,如果策略模式不是 ACCEPT 的話,盲目使用可能會導(dǎo)致網(wǎng)絡(luò)立馬中斷或者其他不可預(yù)估的錯(cuò)誤。
?每臺主機(jī)都必須配置? 開啟轉(zhuǎn)發(fā)策略 把nat路由配置規(guī)則DROP修改成ACCEPT
文章來源:http://www.zghlxwxcb.cn/news/detail-481673.html
?
到了這里,關(guān)于Docker容器的官方鏡像倉庫的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!