docker入門實踐教程 -date: 2019108linux
一、docker架構docker
Docker 是一個開源的應用容器引擎,基於 Go 語言 並聽從 Apache2.0 協議開源。json
Docker 從 17.03 版本以後分爲 CE(Community Edition: 社區版) 和 EE(Enterprise Edition: 企業版)ubuntu
容器很是適合持續集成和持續交付(CI / CD)工做流程。
Docker 的可移植性和輕量級的特性,還可使您輕鬆地完成動態管理的工做負擔,並根據業務需求指示,實時擴展或拆除應用程序和服務。
Docker 輕巧快速。它爲基於虛擬機管理程序的虛擬機提供了可行、經濟、高效的替代方案,所以您能夠利用更多的計算能力來實現業務目標。Docker 很是適合於高密度環境以及中小型部署,centos
Docker 包括三個基本概念:bash
鏡像(Image):Docker 鏡像(Image),就至關因而一個 root 文件系統。好比官方鏡像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系統的 root 文件系統。
容器(Container):鏡像(Image)和容器(Container)的關係,就像是面向對象程序設計中的類和實例同樣,鏡像是靜態的定義,容器是鏡像運行時的實體。容器能夠被建立、啓動、中止、刪除、暫停等。
倉庫(Repository):倉庫可看着一個代碼控制中心,用來保存鏡像。
Docker 使用客戶端-服務器 (C/S) 架構模式,使用遠程API來管理和建立Docker容器。服務器
Docker 容器經過 Docker 鏡像來建立。架構
2.docker 安裝
ubuntu安裝方法:
卸載舊版本
Docker 的舊版本被稱爲 docker,docker.io 或 docker-engine 。若是已安裝,請卸載它們:app
#apt-get remove docker docker-engine docker.io containerd runccurl
使用 Docker 倉庫進行安裝
在新主機上首次安裝 Docker Engine-Community 以前,須要設置 Docker 倉庫。以後,您能夠從倉庫安裝和更新 Docker 。
設置倉庫
更新 apt 包索引。
#apt-get update
安裝 apt 依賴包,用於經過HTTPS來獲取倉庫:
#apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg-agent \
software-properties-common
添加 Docker 的官方 GPG 密鑰:
#curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -
9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88 經過搜索指紋的後8個字符,驗證您如今是否擁有帶有指紋的密鑰。
#apt-key fingerprint 0EBFCD88
pub rsa4096 2017-02-22 [SCEA]
9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
uid [ unknown] Docker Release (CE deb) <docker@docker.com>
sub rsa4096 2017-02-22 [S]
使用如下指令設置穩定版倉庫
#add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
安裝 Docker Engine-Community
更新 apt 包索引。
#apt-get update
安裝最新版本的 Docker Engine-Community 和 containerd ,或者轉到下一步安裝特定版本:
#apt-get install docker-ce docker-ce-cli containerd.io
要安裝特定版本的 Docker Engine-Community,請在倉庫中列出可用版本,而後選擇一種安裝。列出您的倉庫中可用的版本:
#apt-cache madison docker-ce
docker-ce | 5:18.09.1~3-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
docker-ce | 5:18.09.0~3-0~ubuntu-xenial | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
docker-ce | 18.06.1~ce~3-0~ubuntu | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
docker-ce | 18.06.0~ce~3-0~ubuntu | https://download.docker.com/linux/ubuntu xenial/stable amd64 Packages
...
使用第二列中的版本字符串安裝特定版本,例如 5:18.09.1~3-0~ubuntu-xenial。
#apt-get install docker-ce=<VERSION_STRING> docker-ce-cli=<VERSION_STRING> containerd.io
測試 Docker 是否安裝成功,輸入如下指令,打印出如下信息則安裝成功:
#docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
1b930d010525: Pull complete Digest: sha256:c3b4ada4687bbaa170745b3e4dd8ac3f194ca95b2d0518b417fb47e5879d9b5f
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/get-started/
腳本須要運行 root 或具備 sudo 特權。所以,在運行腳本以前,應仔細檢查和審覈腳本。
這些腳本嘗試檢測 Linux 發行版和版本,併爲您配置軟件包管理系統。此外,腳本不容許您自定義任何安裝參數。從 Docker 的角度或您本身組織的準則和標準的角度來看,這可能致使不支持的配置。
這些腳本將安裝軟件包管理器的全部依賴項和建議,而無需進行確認。這可能會安裝大量軟件包,具體取決於主機的當前配置。
該腳本未提供用於指定要安裝哪一個版本的 Docker 的選項,而是安裝了在 edge 通道中發佈的最新版本。
若是已使用其餘機制將 Docker 安裝在主機上,請不要使用便捷腳本。
本示例使用 get.docker.com 上的腳本在 Linux 上安裝最新版本的Docker Engine-Community。要安裝最新的測試版本,請改用 test.docker.com。在下面的每一個命令,取代每次出現 get 用 test。
#curl -fsSL https://get.docker.com -o get-docker.sh
#sh get-docker.sh
若是要使用 Docker 做爲非 root 用戶,則應考慮使用相似如下方式將用戶添加到 docker 組:
#usermod -aG docker your-user
Debian Docker 安裝
卸載舊版
#apt-get remove docker docker-engine docker.io containerd runc
#apt-get update
安裝 apt 依賴包,用於經過 HTTPS 來獲取倉庫。
#apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg2 \
software-properties-common
添加 Docker 的官方 GPG 密鑰:
#curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add -
9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88 經過搜索指紋的後8個字符,驗證您如今是否擁有帶有指紋的密鑰。
#apt-key fingerprint 0EBFCD88
pub 4096R/0EBFCD88 2017-02-22
Key fingerprint = 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88
uid Docker Release (CE deb) <docker@docker.com>
sub 4096R/F273FCD8 2017-02-22
使用如下指令設置穩定版倉庫
#add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/debian \
$(lsb_release -cs) \
stable"
安裝 Docker Engine-Community
#apt-get update
安裝最新版本的 Docker Engine-Community 和 containerd ,或者轉到下一步安裝特定版本:
#apt-get install docker-ce docker-ce-cli containerd.io
#apt-cache madison docker-ce
docker-ce | 5:18.09.1~3-0~debian-stretch | https://download.docker.com/linux/debian stretch/stable amd64 Packages
docker-ce | 5:18.09.0~3-0~debian-stretch | https://download.docker.com/linux/debian stretch/stable amd64 Packages
docker-ce | 18.06.1~ce~3-0~debian | https://download.docker.com/linux/debian stretch/stable amd64 Packages
docker-ce | 18.06.0~ce~3-0~debian | https://download.docker.com/linux/debian stretch/stable amd64 Packages
.......
使用第二列中的版本字符串安裝特定版本,例如 5:18.09.1~3-0~debian-stretch 。
#sudo apt-get install docker-ce=<VERSION_STRING> docker-ce-cli=<VERSION_STRING> containerd.io
測試 Docker 是否安裝成功,輸入如下指令,打印出如下信息則安裝成功:
#docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
1b930d010525: Pull complete Digest: sha256:c3b4ada4687bbaa170745b3e4dd8ac3f194ca95b2d0518b417fb47e5879d9b5f
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/get-started/
Docker 支持如下的 64 位 CentOS 版本:
CentOS 7
CentOS 8
更高版本...
該 centos-extras 庫必須啓用。默認狀況下,此倉庫是啓用的,可是若是已禁用它,則須要從新啓用它。
建議使用 overlay2 存儲驅動程序。
較舊的 Docker 版本稱爲 docker 或 docker-engine 。若是已安裝這些程序,請卸載它們以及相關的依賴項。
#yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
安裝 Docker Engine-Community
使用 Docker 倉庫進行安裝
在新主機上首次安裝 Docker Engine-Community 以前,須要設置 Docker 倉庫。以後,您能夠從倉庫安裝和更新 Docker。
設置倉庫
安裝所需的軟件包。yum-utils 提供了 yum-config-manager ,而且 device mapper 存儲驅動程序須要 device-mapper-persistent-data 和 lvm2。
#yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
使用如下命令來設置穩定的倉庫。
#yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
安裝 Docker Engine-Community
安裝最新版本的 Docker Engine-Community 和 containerd,或者轉到下一步安裝特定版本:
#yum install docker-ce docker-ce-cli containerd.io
若是提示您接受 GPG 密鑰,請選是。
有多個 Docker 倉庫嗎?
若是啓用了多個 Docker 倉庫,則在未在 yum install 或 yum update 命令中指定版本的狀況下,進行的安裝或更新將始終安裝最高版本,這可能不適合您的穩定性需求。
Docker 安裝完默認未啓動。而且已經建立好 docker 用戶組,但該用戶組下沒有用戶。
要安裝特定版本的 Docker Engine-Community,請在存儲庫中列出可用版本,而後選擇並安裝:
一、列出並排序您存儲庫中可用的版本。此示例按版本號(從高到低)對結果進行排序。
#yum list docker-ce --showduplicates | sort -r
docker-ce.x86_64 3:18.09.1-3.el7 docker-ce-stable
docker-ce.x86_64 3:18.09.0-3.el7 docker-ce-stable
docker-ce.x86_64 18.06.1.ce-3.el7 docker-ce-stable
docker-ce.x86_64 18.06.0.ce-3.el7 docker-ce-stable
二、經過其完整的軟件包名稱安裝特定版本,該軟件包名稱是軟件包名稱(docker-ce)加上版本字符串(第二列),從第一個冒號(:)一直到第一個連字符,並用連字符(-)分隔。例如:docker-ce-18.09.1。
#yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io
啓動 Docker。
#systemctl start docker
經過運行 hello-world 映像來驗證是否正確安裝了 Docker Engine-Community 。
#docker run hello-world
Docke 鏡像加速
國內從 DockerHub 拉取鏡像有時會遇到困難,此時能夠配置鏡像加速器。Docker 官方和國內不少雲服務商都提供了國內加速器服務,例如:
Docker官方提供的中國鏡像庫:https://registry.docker-cn.com
七牛雲加速器:https://reg-mirror.qiniu.com
當配置某一個加速器地址以後,若發現拉取不到鏡像,請切換到另外一個加速器地址。國內各大雲服務商均提供了 Docker 鏡像加速服務,建議根據運行 Docker 的雲平臺選擇對應的鏡像加速服務。
咱們以 Docker 官方加速器 https://registry.docker-cn.com 爲例進行介紹。
Ubuntu14.0四、Debian7Wheezy
對於使用 upstart 的系統而言,編輯 /etc/default/docker 文件,在其中的 DOCKER_OPTS 中配置加速器地址:
DOCKER_OPTS="--registry-mirror=https://registry.docker-cn.com"
從新啓動服務:
$ sudo service docker restart
Ubuntu16.04+、Debian8+、CentOS7
對於使用 systemd 的系統,請在 /etc/docker/daemon.json 中寫入以下內容(若是文件不存在請新建該文件):
{"registry-mirrors":["https://registry.docker-cn.com"]}
以後從新啓動服務:
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker
檢查加速器是否生效
檢查加速器是否生效配置加速器以後,若是拉取鏡像仍然十分緩慢,請手動檢查加速器配置是否生效,在命令行執行 docker info,若是從結果中看到了以下內容,說明配置成功
$ docker info
Registry Mirrors:
https://registry.docker-cn.com/