很久以前尼荆,大概是2015年的時候烛亦,就開始想學學Python了诈泼。。煤禽。
為此铐达,興致沖沖的買了樹莓派2B+ 。檬果。瓮孙。。
然后汁汗,衷畦,然后,知牌,吃灰了好久。斤程。角寸。
然而隨著工作時間變成,它慢慢成為了我 Linux實驗環(huán)境的好助手忿墅。各種玩的扁藕,實驗的全丟在上面。
最近幾個月疚脐,也在慢慢接觸Docker亿柑。
還好,Docker這個東東棍弄,也支持 Raspberry 呢望薄。讓它繼續(xù)發(fā)揮它的優(yōu)勢吧疟游。。免得埋沒了這么好的一塊板子痕支。
有時間再整理關(guān)于 玩樹莓派的這些年的一些東西吧颁虐。
現(xiàn)在這是開始玩 Docker 時間。卧须。另绩。
開始主題
官方鏡像(docker Registry):docker hub
還有 Quay.io 存儲著 CoreOS,Google的Google Container Registry,Kubernetes鏡像都在這里
國內(nèi)Docker HUb的鏡像 (docker Registry)
提供 docker Registry 鏡像儲存服務的國內(nèi)廠商
網(wǎng)易云鏡像服務 ( https://c.163.com/hub#/m/library/ )
DaoCloud鏡像市場 (https://hub.daocloud.io)
阿里云鏡像庫 (https://cr.console.aliyun.com)
還可以搭建私有的 Docker Registry
Docker官方提供了搭建私有的 Docker Registry 的鏡像 https://store.docker.com/images/registry
官方鏡像只是實現(xiàn)了 私有docker注冊的 服務端實現(xiàn)(https://docs.docker.com/registry/spec/api),只是支持 docker 命令花嘶。沒有實現(xiàn)圖形界面笋籽、鏡像維護、用戶管理椭员、訪問控制等高級功能车海。
但是有第三方軟件不僅實現(xiàn)了這些基礎(chǔ)的 api,還實現(xiàn)了一些高級功能拆撼。
比如: VMWare Harbor (https://) 和 Sonatype Nexus (https://www.sonatype.com/docker)
以上這些都是用于存儲 Docker 鏡像的地方容劳。
==================================================
添加 Docker 源
Dokcer 分為 Docker CE(社區(qū)版) 和 Docker EE(企業(yè)版) 兩個版本。
官方安裝指南: https://docs.docker.com/engine/installation
Ubuntu
切忌:切勿在沒有給 APT 配置 Docker 源的情況下直接使用 apt 命令安裝Docker闸度。
卸載舊版本竭贩,舊版本Docker稱為 docker 或者 docker-engine 。使用:
sudo apt-get remove docker docker-engine docker.io
來卸載
Ubuntu14.04 安裝 AUFS 內(nèi)核驅(qū)動模塊
有一部分發(fā)行版的沒有安裝 AUFS可選內(nèi)核模塊莺禁,它作為 Docker 的儲存層驅(qū)動存在留量。
命令:
sudo apt-get install linux-image-extra-$(uname -r) linux-image-extra-virtual
強烈建議使用國內(nèi)源。國外源太慢了哟冬。
添加 APT HTTPS的 CA 證書 sudo apt-get update sudo apt-get install apt-transport-https ca-certificates curl software-properties-common //添加 國內(nèi)源 GPG 密鑰 curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo apt-key add - //官方源 密鑰: //curl -fsSL https://download.docker.com/linux/ubuntu/gpg | grep sudo apt-key add -
然后楼熄,向 source.list 中添加Docker 軟件源
//給 apt 添加 國內(nèi) docker 源 sudo add-apt-repository "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu (lsb_release -cs) stable)"
安裝 Docker-ce
1、手動安裝:
先更新軟件包
sudo apt-get update sudo apt-get install docker-ce
2浩峡、也可以可岂,使用 腳本自動安裝
主要用于測試和開發(fā)環(huán)境,Ubuntu上可以使用腳本安裝翰灾,簡化安裝流程
curl -fsSL get.docker.com -o get-docker.sh sudo sh get-docker.sh --mirror Aliyun
這個自動化的腳本安裝的是 Docker Edge 版本缕粹。
腳本亦會將所有的準備工作做好,不用任何操心纸淮。
啟動Docker CE
sudo systemctl enable docker sudo systemctl start docker
ubuntu 14.04 比較特殊平斩,使用下面命令啟動
sudo service docker start
建立 docker 用戶組
默認情況下,docker 命令行 使用 Unix socket 與 Docker 引擎進行通訊咽块。
所以绘面,在設(shè)計上,為了安全考慮,只有 docker 組 和 root 用戶揭璃,才能和 docker 引擎通訊晚凿。
而,一般情況下塘辅,我們又不直接使用 root 用戶進行操作晃虫,所以,很有必要建立一個 docker 用戶組扣墩。
建立 docker 組
sudo groupadd docker
將當前用戶 加入 docker 組
sudo usermod -aG docker $USER
然后哲银,退出當前終端。再重新連接呻惕。測試 Docker 安裝是否正確
docker run hello-world xxxx 它會從 Docker 倉庫 上面去拉取鏡像荆责。
[圖片上傳失敗...(image-9a1508-1562989772615)]
出現(xiàn)這句話,證明亚脆,安裝沒有任何問題
==================插入 樹莓派的安裝方法========================
Docker CE 支持 Raspberry Stretch 和 Raspberry Jessie 操作系統(tǒng)做院。
1、安裝 CA 證書
sudo apt-get update sudo apt-get install apt-transport-https ca-certificates curl gnupg2 lsb-release software-properties-common
2 添加軟件源的 GPG 密鑰
//國內(nèi)源 密鑰 curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/raspbian/gpg | sudo apt-key add - //官方源密鑰 curl -fsSL https://download.docker.com/linux/raspbian/gpg | sudo apt-key add -
3 向 source.list 中添加 Docker CE 軟件源
// 國內(nèi)源 sudo add-apt-repository "deb [arch=armhf] https://mirrors.ustc.edu.cn/docker-ce/linux/raspbian (lsb_release -cs) stable"
4 安裝 Docker CE
//更新 apt 緩存 sudo apt-get update sudo apt-get install docker-ce
使用腳本自動安裝
curl -fsSL get.docker.com -o get-docker.sh sudo sh get-docker.sh --mirror Aliyun
5 啟動 Docker
sudo systemctl enable docker sudo systemctl start docker
6 建立 Docker 用戶組
sudo groupadd docker
將當前用戶加入 Docker 用戶組
sudo usermod -aG docker $USER
7 測試 Docker 是否安裝正確
docker run arm32v7/hello-world
[圖片上傳失敗...(image-1dd78a-1562989772615)]
安裝成功
docker run -it ubuntu bash
注意:ARM 平臺不能使用 x86鏡像
查詢 Raspbian 可使用鏡像訪問 arm32v7 (https://hub.docker.com/u/arm32v7)
==================== 樹莓派的安裝方法 結(jié)束=====================
鏡像加速
Docker 官方的國內(nèi)鏡像: https://registry.docker-cn.com
七牛云加速器 https://reg-mirror.qiniu.com
在配置時濒持,若發(fā)現(xiàn)拉取不到鏡像键耕,就馬上切換另一個加速器地址
Ubuntu 14.04 和 Debian 7 Wheezy 配置方法
編輯 /etc/default/docker 文件,在
DOCKER_OPT="--registry-mirror=https://registry.docker-cn.com"
然后重啟服務
sudo service docker restart
Ubuntu 16.04 柑营、Debian8+屈雄、 CentOS 7
在 /etc/docker/daemon.json 中(如果文件不存在,就新建該文件)官套,寫入
{ "registory-mirror":[ "https://registry.docker-cn.com" ] }
注意:該文件內(nèi)酒奶,一定要保持 JSON的規(guī)范。否則 docker 不能啟動
重啟服務
sudo systemctl daemon-reload sudo systemctl restart docker
注意:如果已經(jīng)按照舊的教程奶赔,修改了 docker.service 文件內(nèi)容惋嚎,那么就需要去掉 docker.service 中添加的內(nèi)容(--registry-mirror=https://registry.docker-cn.com)。
檢查是否配置成功
docker info
[圖片上傳失敗...(image-3cd049-1562989772615)]
如果換源后站刑,還是拉取緩慢另伍,就可以繼續(xù)換。
獲取鏡像
docker pull
命令格式
[圖片上傳失敗...(image-919192-1562989772615)]
例如:
docker pull ubuntu:16.04
下載的過程中绞旅,我們可以看到鏡像的存儲质况,是分層的。所以玻靡,下載的時候,也是分層進行下載的中贝。
運行
啟動 ubuntu:16.04里面的bash囤捻,進行交互式操作
docker run -it --rm ubuntu:16.04 bash //如果進來了 cat /etc/os-release
docker run 是運行容器的命令
-it :是兩個參數(shù). -i 是交互式操作, -t 是終端
--rm :這個參數(shù)是說,容器退出后隨之將其刪除邻寿。
一般情況下蝎土,退出的容器并不會立即刪除视哑,除非手動 docker rm 。
這里誊涯,我們執(zhí)行這個命令只是看看效果挡毅,不需要排障等操作。因此 --rm 可以避免浪費空間
ubuntu:16.04 : 是指使用 ubuntu16.04 鏡像為基礎(chǔ)來啟動容器
bash : 放在鏡像后的是命令暴构,這里我們需要使用的交互式 shell跪呈,因此使用的 bash
最后,可以通過 exit 命令取逾,退出容器
列出鏡像
要想看看耗绿,已經(jīng)下載下來的鏡像,可以使用
docker image ls 命令
[圖片上傳失敗...(image-ffca51-1562989772614)]
查看砾隅,鏡像误阻、容器、數(shù)據(jù)卷 所占用的空間
docker system df
[圖片上傳失敗...(image-fa27cd-1562989772614)]
虛懸鏡像 (特殊的鏡像)
[圖片上傳失敗...(image-fc7d60-1562989772614)]
是因為晴埂,在版本跌代的過程中究反,老版本升級了,當官方發(fā)布新版本后儒洛,重新 docker pull 鏡像名 精耐,這時,新下載的鏡像使用了老的鏡像的名字晶丘,而老的鏡像名字就會變成 <none>
除了 docker pull 會出現(xiàn)這種情況黍氮,docker build 也會出現(xiàn)。
新舊鏡像同名浅浮,舊鏡像名字被取消沫浆,從而出現(xiàn)倉庫名、標簽均為 <none> 的鏡像滚秩。
這類無標簽鏡像就被稱為 虛懸鏡像(dangling image)
這類鏡像专执,是沒有啥價值的,可以隨意刪除郁油。
查看這類鏡像
docker image ls -f dangling=true
[圖片上傳失敗...(image-8bf2d0-1562989772614)]
刪除 虛懸鏡像
docker image prune
中間層鏡像
為了加速鏡像構(gòu)建本股、重復利用資源,Docker 會利用 中間層鏡像桐腌。所以拄显,使用一段時間后,可能會看到一些依賴的中間層鏡像案站。
docker image ls 只會顯示頂層的鏡像躬审。看不到中間層鏡像。
如果想要看到的話,只需要再加上 -a 參數(shù)
docker image ls -a
[圖片上傳失敗...(image-3d49e9-1562989772614)]
列出部分鏡像
docker image ls 默認情況下承边,會列出所有的頂級鏡像遭殉,但是當只需要列出部分鏡像的情況下,就需要加上 額外的 參數(shù)博助。
- 根據(jù)倉庫名列出鏡像
docker image ls ubuntu
[圖片上傳失敗...(image-302d4-1562989772614)]
- 列出特定的某個鏡像险污,指定 倉庫名和標簽
docker image ls ubuntu:16.04
[圖片上傳失敗...(image-13b63d-1562989772614)]
docker image ls 還支持強大的過濾器參數(shù) --filter 或者簡寫 -f .我們之前的,過濾虛懸鏡像就是用的 --filter 的簡寫方法富岳。
[圖片上傳失敗...(image-7c699a-1562989772614)]
[圖片上傳失敗...(image-c863ac-1562989772614)]
以特定格式顯示
[圖片上傳失敗...(image-2a0a54-1562989772614)]
[圖片上傳失敗...(image-a87f1a-1562989772614)]
[圖片上傳失敗...(image-ce65ee-1562989772613)]
[圖片上傳失敗...(image-e4dc12-1562989772613)]
刪除本地鏡像
docker image rm 命令
命令格式
[圖片上傳失敗...(image-1b1508-1562989772613)]