docker入門實踐教程 -date: 20191108

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:

  1. The Docker client contacted the Docker daemon.
  2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
  3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
  4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

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/

  1. 使用 Shell 腳本進行安裝
    Docker 在 get.docker.com 和 test.docker.com 上提供了方便腳本,用於將快速安裝 Docker Engine-Community 的邊緣版本和測試版本。腳本的源代碼在 docker-install 倉庫中。 不建議在生產環境中使用這些腳本,在使用它們以前,您應該瞭解潛在的風險:

腳本須要運行 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:

  1. The Docker client contacted the Docker daemon.
  2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
  3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
  4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

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/

  1. CentOS Docker 安裝

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/

相關文章
相關標籤/搜索