docker的安裝步驟和出現的問題

docker的安裝

1、Docker簡介

Docker 是一個開源的應用容器引擎,基於 Go 語言 並遵從Apache2.0協議開源。
Docker 可以讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,然後發佈到任何流行的 Linux 機器上,也可以實現虛擬化。
容器是完全使用沙箱機制,相互之間不會有任何接口(類似 iPhone 的 app),更重要的是容器性能開銷極低。
Docker 從 17.03 版本之後分爲 CE(Community Edition: 社區版) 和 EE(Enterprise Edition: 企業版),我們用社區版就可以了。
在這裏插入圖片描述

Docker官網:https://www.docker.com/

Docker的應用場景

Web 應用的自動化打包和發佈。

自動化測試和持續集成、發佈。

在服務型環境中部署和調整數據庫或其他的後臺應用。

從頭編譯或者擴展現有的 OpenShift 或 Cloud Foundry 平臺來搭建自己的 PaaS 環境。

Docker 的優點

1、簡化程序:
Docker 讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然後發佈到任何流行的 Linux 機器上,便可以實現虛擬化。Docker改變了虛擬化的方式,使開發者可以直接將自己的成果放入Docker中進行管理。方便快捷已經是 Docker的最大優勢,過去需要用數天乃至數週的 任務,在Docker容器的處理下,只需要數秒就能完成。

2、避免選擇恐懼症:
如果你有選擇恐懼症,還是資深患者。那麼你可以使用 Docker 打包你的糾結!比如 Docker 鏡像;Docker 鏡像中包含了運行環境和配置,所以 Docker 可以簡化部署多種應用實例工作。比如 Web 應用、後臺應用、數據庫應用、大數據應用比如 Hadoop 集羣、消息隊列等等都可以打包成一個鏡像部署。

3、節省開支:
一方面,雲計算時代到來,使開發者不必爲了追求效果而配置高額的硬件,Docker 改變了高性能必然高價格的思維定勢。Docker 與雲的結合,讓雲空間得到更充分的利用。不僅解決了硬件管理的問題,也改變了虛擬化的方式。

Docker的架構

Docker 使用客戶端-服務器 (C/S) 架構模式,使用遠程API來管理和創建Docker容器。
Docker 容器通過 Docker 鏡像來創建。
容器與鏡像的關係類似於面向對象編程中的對象與類。

Docker 面向對象
容器 對象
鏡像

在這裏插入圖片描述

名稱 作用
Docker 鏡像(Images) 是用於創Docker 鏡像建 Docker 容器的模板。
Docker 容器(Container) 容器是獨立運行的一個或一組應用。
Docker 客戶端(Client) Docker 客戶端通過命令行或者其他工具使用 Docker API (https://docs.docker.com/reference/api/docker_remote_api) 與 Docker 的守護進程通信。
Docker 主機(Host) 一個者物理或虛擬的機器用於執行 Docker 守護進程和容器。
Docker 倉庫(Registry) Docker 倉庫用來保存鏡像,可以理解爲代碼控制中的代碼倉庫。
Docker Hub(https://hub.docker.com) 提供了龐大的鏡像集合供使用。

Docker Machine Docker Machine是一個簡化Docker安裝的命令行工具,通過一個簡單的命令行即可在相應的平臺上安裝Docker,比如VirtualBox、 Digital Ocean、Microsoft Azure。

2.Docker 和虛擬機的區別

Docker是一種輕量級的虛擬化技術,比傳統的虛擬機性能更好。
下圖是虛擬機的體系結構:

在這裏插入圖片描述
server - 表示真實電腦。

Host OS - 真實電腦的操作系統,例如:Windows,Linux

Hypervisor - 虛擬機平臺,模擬硬件,如VMWare,VirtualBox

Guest OS - 虛擬機平臺上安裝的操作系統,例如CentOS Linux

App - 虛擬機操作系統上的應用,例如nginx

下圖是Docker的體系結構:
在這裏插入圖片描述

server - 表示真實電腦。

Host OS - 真實電腦的操作系統,例如:Windows,Linux

Docker Engine - 新一代虛擬化技術,不需要包含單獨的操作系統。

App - 所有的應用程序現在都作爲Docker容器運行。

這種體系結構的明顯優勢是,不需要爲虛擬機操作系統提供硬件模擬。所有應用程序都作爲Docker容器工作,性能更好。

3.Centos7安裝Docker

Docker從1.13版本之後採用時間線的方式作爲版本號,分爲社區版CE和企業版EE。
社區版是免費提供給個人開發者和小型團體使用的,企業版會提供額外的收費服務,比如經過官方測試認證過的基礎設施、容器、插件等。
社區版按照stable和edge兩種方式發佈,每個季度更新stable版本,如17.06,17.09;每個月份更新edge版本,如17.09,17.10。

我們平時用社區版就足夠了。所以我們安裝社區版;

我們主要參考:https://docs.docker.com/install/linux/docker-ce/centos/ 來安裝;

我們切換到root用戶
1、Docker 要求 CentOS 系統的內核版本高於 3.10 ,查看本頁面的前提條件來驗證你的CentOS 版本是否支持 Docker 。
通過 uname -r 命令查看你當前的內核版本
uname -r

2、使用 root 權限登錄 Centos。確保 yum 包更新到最新。
yum update

3、卸載舊版本(如果安裝過舊版本的話)
yum remove docker docker-common docker-selinux docker-engine

4、安裝需要的軟件包, yum-util 提供yum-config-manager功能,另外兩個是devicemapper驅動依賴的
yum install -y yum-utils device-mapper-persistent-data lvm2

5、設置yum源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

6,安裝最新版本的Docker
yum install docker-ce docker-ce-cli containerd.io

如果出現下面問題
在這裏插入圖片描述

遇到這種情況有兩種做法:
1、沒網,試着:ping www.baidu.com
如果顯示沒有連接的話,就說明沒網,也就無法使用yum 命令。

2、ping通了的話,還是是用不了yum命令,說明是yum鏡像沒有了,那麼就得下載一個來更新。
在安裝完CentOS後一般需要修改yum源,才能夠在安裝更新rpm包時獲得比較理想的速度。國內比較快的有163源、sohu源。這裏以163源爲例子。

A、 cd /etc/yum.repos.d
B、 mv CentOS-Base.repo CentOS-Base.repo.backup
C、wget http://mirrors.163.com/.help/CentOS6-Base-163.repo
D、mv CentOS6-Base-163.repo CentOS-Base.repo
E、yum clean all
最後在使用yum 就可以了。

7,啓動Docker並設置開機啓動
systemctl start docker
systemctl enable docker

8,驗證Docker
docker version

說明安裝OK;

9,Docker HelloWorld測試;
docker run hello-world
在這裏插入圖片描述

默認的遠程倉庫 https://hub.docker.com/ 網速稀爛

Docker HelloWorld運行原理解析

運行 docker run hello-world
本地倉庫未能找到該鏡像,然後去遠程倉庫尋找以及下載該鏡像;

然後我們再執行該命令:

出來了 Hellowold。我們具體來分析下 執行原理和過程;
在這裏插入圖片描述

從左到右 client客戶端,Docker運行主機,遠程倉庫;
docker build ,pull,run分別是 構建,拉取,運行命令,後面再細講;
中間Docker主機裏有 Docker daemon主運行線程,以及Containers容器,容器裏可以運行很多實例,(實例是從右側Images鏡像實例化出來的)Images是存儲再本地的鏡像文件,比如 Redis,Tomat這些鏡像文件;
右側是Registry鏡像倉庫,默認遠程鏡像倉庫 https://hub.docker.com/ 不過是國外主機,下載很慢,不穩定,所以我們後面要配置成阿里雲倉庫鏡像地址,穩定快捷;

執行 docker run hello-world的過程看如下圖例:
在這裏插入圖片描述

阿里雲鏡像倉庫

Docker默認遠程倉庫是https://hub.docker.com/

比如我們下載一個大點的東西,龜速

由於是國外主機,類似Maven倉庫,慢得一腿,經常延遲,破損;
所以我們一般都是配置國內鏡像,比如阿里雲,網易雲等;推薦阿里雲,穩定點;

配置步驟如下:
1,登錄進入阿里雲鏡像服務中心,獲取鏡像地址
進入阿里雲容器鏡像服務地址:
https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors
使用你的淘寶賬號密碼登錄
在這裏插入圖片描述

這裏我們獲取鏡像地址;

2,在/etc/docker目錄下找到在daemon.json文件(沒有就新建),將下面內容寫入
{
“registry-mirrors”: [“https://xxxxxxx.mirror.aliyuncs.com”]
}

3,重啓daemon
systemctl daemon-reload

4,重啓docker服務
systemctl restart docker

5,測試下載centoc7查看網速1M左右就OK了

安裝是遇到的問題

Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

解決centos7中安裝好Docker後報以下錯誤
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
解決方法:
1 systemctl daemon-reload
2 sudo service docker restart
3 sudo service docker status

Job for docker.service failed because the control process exited with error code. See

在Liunx中使用Docker, 注: Liunx使用的是在虛擬機下的centOS7版本
在剛開始安裝Docker時沒有任何錯誤, 但是在後續的docker啓動過程中, 出現以下問題:
Job for docker.service failed because the control process exited with error code. See “systemctl status docker.service”

解決方法
1.仔細查看查看docker配置文件daemon.json中書寫是否規範。
2.從新安裝docker

步驟一:將以前下載好的Docker卸載乾淨, 使用如下命令:

yum remove docker-*

步驟二:更新該Liunx系統的內核版本,使用如下命令:

yum update

建議更新完之後, 重啓一下系統
步驟三:繼續下載安裝docker(儘量使用高級管理員權限下載)使用如下命令

yum install dacker

步驟四:使用如下命令啓動docker

systemctl start docker

問題解決!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章