Docker

阿里云服務(wù)器3折開售(點(diǎn)此直達(dá))

image

很久以前,大概是2015年的時(shí)候,就開始想學(xué)學(xué)Python了。。。
為此,興致沖沖的買了樹莓派2B+ 。。。。
然后,,然后,,吃灰了好久。。。

然而隨著工作時(shí)間變成,它慢慢成為了我 Linux實(shí)驗(yàn)環(huán)境的好助手。各種玩的,實(shí)驗(yàn)的全丟在上面。
最近幾個(gè)月,也在慢慢接觸Docker。

還好,Docker這個(gè)東東,也支持 Raspberry 呢。讓它繼續(xù)發(fā)揮它的優(yōu)勢(shì)吧。。免得埋沒了這么好的一塊板子。


沒圖說JJ 所以此處有圖 哈哈.png

有時(shí)間再整理關(guān)于 玩樹莓派的這些年的一些東西吧。
現(xiàn)在這是開始玩 Docker 時(shí)間。。。

zhuanzhu.png

開始主題

官方鏡像(docker Registry):docker hub

還有 Quay.io 存儲(chǔ)著 CoreOS,Google的Google Container Registry,Kubernetes鏡像都在這里

國內(nèi)Docker HUb的鏡像 (docker Registry)

提供 docker Registry 鏡像儲(chǔ)存服務(wù)的國內(nèi)廠商

網(wǎng)易云鏡像服務(wù) ( 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

官方鏡像只是實(shí)現(xiàn)了 私有docker注冊(cè)的 服務(wù)端實(shí)現(xiàn)(https://docs.docker.com/registry/spec/api),只是支持 docker 命令。沒有實(shí)現(xiàn)圖形界面、鏡像維護(hù)、用戶管理、訪問控制等高級(jí)功能。

但是有第三方軟件不僅實(shí)現(xiàn)了這些基礎(chǔ)的 api,還實(shí)現(xiàn)了一些高級(jí)功能。

比如: VMWare Harbor (https://) 和 Sonatype Nexus (https://www.sonatype.com/docker)

以上這些都是用于存儲(chǔ) Docker 鏡像的地方。

==================================================

添加 Docker 源

Dokcer 分為 Docker CE(社區(qū)版) 和 Docker EE(企業(yè)版) 兩個(gè)版本。

官方安裝指南: 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ū)動(dòng)模塊

有一部分發(fā)行版的沒有安裝 AUFS可選內(nèi)核模塊,它作為 Docker 的儲(chǔ)存層驅(qū)動(dòng)存在。

命令:

sudo apt-get install linux-image-extra-$(uname -r) linux-image-extra-virtual

強(qiáng)烈建議使用國內(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" //官方源 //sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu(lsb_release -cs) stable)"

安裝 Docker-ce

1、手動(dòng)安裝:

先更新軟件包

sudo apt-get update sudo apt-get install docker-ce

2、也可以,使用 腳本自動(dòng)安裝

主要用于測試和開發(fā)環(huán)境,Ubuntu上可以使用腳本安裝,簡化安裝流程

curl -fsSL get.docker.com -o get-docker.sh sudo sh get-docker.sh --mirror Aliyun

這個(gè)自動(dòng)化的腳本安裝的是 Docker Edge 版本。

腳本亦會(huì)將所有的準(zhǔn)備工作做好,不用任何操心。

啟動(dòng)Docker CE

sudo systemctl enable docker sudo systemctl start docker

ubuntu 14.04 比較特殊,使用下面命令啟動(dòng)

sudo service docker start

建立 docker 用戶組

默認(rèn)情況下,docker 命令行 使用 Unix socket 與 Docker 引擎進(jìn)行通訊。

所以,在設(shè)計(jì)上,為了安全考慮,只有 docker 組 和 root 用戶,才能和 docker 引擎通訊。

而,一般情況下,我們又不直接使用 root 用戶進(jìn)行操作,所以,很有必要建立一個(gè) docker 用戶組。

建立 docker 組

sudo groupadd docker

將當(dāng)前用戶 加入 docker 組

sudo usermod -aG docker $USER

然后,退出當(dāng)前終端。再重新連接。測試 Docker 安裝是否正確

docker run hello-world xxxx 它會(huì)從 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 " //官方源 sudo add-apt-repository "deb [arch=armhf] https://download.docker.com/linux/raspbian(lsb_release -cs) stable"

4 安裝 Docker CE

//更新 apt 緩存 sudo apt-get update sudo apt-get install docker-ce

使用腳本自動(dòng)安裝

curl -fsSL get.docker.com -o get-docker.sh sudo sh get-docker.sh --mirror Aliyun

5 啟動(dòng) Docker

sudo systemctl enable docker sudo systemctl start docker

6 建立 Docker 用戶組

sudo groupadd docker

將當(dāng)前用戶加入 Docker 用戶組

sudo usermod -aG docker $USER

7 測試 Docker 是否安裝正確

docker run arm32v7/hello-world

[圖片上傳失敗...(image-1dd78a-1562989772615)]

安裝成功

docker run -it ubuntu bash

注意:ARM 平臺(tái)不能使用 x86鏡像

查詢 Raspbian 可使用鏡像訪問 arm32v7 (https://hub.docker.com/u/arm32v7)

==================== 樹莓派的安裝方法 結(jié)束=====================

鏡像加速

Docker 官方的國內(nèi)鏡像: https://registry.docker-cn.com

七牛云加速器 https://reg-mirror.qiniu.com

在配置時(shí),若發(fā)現(xiàn)拉取不到鏡像,就馬上切換另一個(gè)加速器地址

Ubuntu 14.04 和 Debian 7 Wheezy 配置方法

編輯 /etc/default/docker 文件,在

DOCKER_OPT="--registry-mirror=https://registry.docker-cn.com"

然后重啟服務(wù)

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 不能啟動(dòng)

重啟服務(wù)

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

下載的過程中,我們可以看到鏡像的存儲(chǔ),是分層的。所以,下載的時(shí)候,也是分層進(jìn)行下載的。

運(yùn)行

啟動(dòng) ubuntu:16.04里面的bash,進(jìn)行交互式操作

docker run -it --rm ubuntu:16.04 bash //如果進(jìn)來了 cat /etc/os-release

docker run 是運(yùn)行容器的命令

  • -it :是兩個(gè)參數(shù). -i 是交互式操作, -t 是終端

  • --rm :這個(gè)參數(shù)是說,容器退出后隨之將其刪除。

  • 一般情況下,退出的容器并不會(huì)立即刪除,除非手動(dòng) docker rm 。

  • 這里,我們執(zhí)行這個(gè)命令只是看看效果,不需要排障等操作。因此 --rm 可以避免浪費(fèi)空間

  • ubuntu:16.04 : 是指使用 ubuntu16.04 鏡像為基礎(chǔ)來啟動(dòng)容器

  • bash : 放在鏡像后的是命令,這里我們需要使用的交互式 shell,因此使用的 bash

最后,可以通過 exit 命令,退出容器

列出鏡像

要想看看,已經(jīng)下載下來的鏡像,可以使用

docker image ls 命令

[圖片上傳失敗...(image-ffca51-1562989772614)]

查看,鏡像、容器、數(shù)據(jù)卷 所占用的空間

docker system df

[圖片上傳失敗...(image-fa27cd-1562989772614)]

虛懸鏡像 (特殊的鏡像)

[圖片上傳失敗...(image-fc7d60-1562989772614)]

是因?yàn)?,在版本跌代的過程中,老版本升級(jí)了,當(dāng)官方發(fā)布新版本后,重新 docker pull 鏡像名 ,這時(shí),新下載的鏡像使用了老的鏡像的名字,而老的鏡像名字就會(huì)變成 <none>

除了 docker pull 會(huì)出現(xiàn)這種情況,docker build 也會(huì)出現(xiàn)。

新舊鏡像同名,舊鏡像名字被取消,從而出現(xiàn)倉庫名、標(biāo)簽均為 <none> 的鏡像。

這類無標(biāo)簽鏡像就被稱為 虛懸鏡像(dangling image)

這類鏡像,是沒有啥價(jià)值的,可以隨意刪除。

查看這類鏡像

docker image ls -f dangling=true

[圖片上傳失敗...(image-8bf2d0-1562989772614)]

刪除 虛懸鏡像

docker image prune

中間層鏡像

為了加速鏡像構(gòu)建、重復(fù)利用資源,Docker 會(huì)利用 中間層鏡像。所以,使用一段時(shí)間后,可能會(huì)看到一些依賴的中間層鏡像。

docker image ls 只會(huì)顯示頂層的鏡像。看不到中間層鏡像。

如果想要看到的話,只需要再加上 -a 參數(shù)

docker image ls -a

[圖片上傳失敗...(image-3d49e9-1562989772614)]

列出部分鏡像

docker image ls 默認(rèn)情況下,會(huì)列出所有的頂級(jí)鏡像,但是當(dāng)只需要列出部分鏡像的情況下,就需要加上 額外的 參數(shù)。

  • 根據(jù)倉庫名列出鏡像

docker image ls ubuntu

[圖片上傳失敗...(image-302d4-1562989772614)]

  • 列出特定的某個(gè)鏡像,指定 倉庫名和標(biāo)簽

docker image ls ubuntu:16.04

[圖片上傳失敗...(image-13b63d-1562989772614)]

docker image ls 還支持強(qiáng)大的過濾器參數(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)]

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容