---恢復內容開始---
Docker 簡介
Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然后發布到任何流行的 Linux 機器上,也可以實現虛擬化。容器是完全使用沙箱機制,相互之間不會有任何接口。
Docker 官網:http://www.docker.com/
Docker 官方文檔:https://docs.docker.com/
Docker Github 地址:https://github.com/docker/docker
Docker 倉庫:https://hub.docker.com/
Docker 中文社區:http://www.docker.org.cn/book/docker
Docker 應用場景:https://www.zhihu.com/question/22969309
1.1、什么是Docker?
Docker是基於Go語言實現的雲開源項目,誕生於2013年初,最初發起者是dotcloud公司。
Docker是一個開源的引擎,可以輕松的為任何應用創建一個輕量級的、可移植的、自給自足的容器。開發者在筆記本上編譯測試通過的容器可以批量地在生產環境中部署,包括VMs(虛擬機)、bare metal、OpenStack 集群和其他的基礎應用平台。
docker中文社區
Docker的主要目標是'Build,Ship and Run Any App Anywhere',即通過對應用組件的封裝(Packing)、分發(Distribution)、部署(Deployment)、運行(Runtime)等生命周期的管理,達到應用組件級別的“一次封裝,多次運行”。這里的應用組件,既可以是一個Web應用,也可以是一套數據庫服務,甚至是一個操作系統或編輯器。
1.2、為什么要使用Docker?
Docker在正確的地點,正確的時間順應了正確的趨勢--即高效的構建應用。
更快速地的交付和部署。
更高效的資源利用
更輕松的更新部署
更簡單的更新管理
Docker與虛擬機比較
Docker容器很快,啟動和停止可以秒級實現,相比傳統的虛擬機方式快很多
Docker容器對系統資源需求很少,一台主機上面可以運行數千個Docker容器
Docker通過類似Git的操作來方便用戶獲取、分布和更新應用鏡像,指令簡單,學習成本較低
Docker通過Dockerfile配置文件來支持靈活的自動化創建和部署機制,提高工作效率
1.3、虛擬化與Docker
虛擬化是一個通用的概念,在不通領域有着不同的理解。在計算機領域,一般是指計算虛擬化(Computing Virtualization),或服務器虛擬化。
虛擬化的核心是對資源進行抽象,目標往往是為了在同一主機上運行多個操作系統或應用,從而提高系統資源的利用率,同時帶來降低成本,方便管理和容錯容災。
虛擬化可分為基於硬件的虛擬化和基於軟件的虛擬化。基於軟件的虛擬化又分為應用虛擬化和平台虛擬化。平台虛擬化又細分如下幾個子類:
完全虛擬化。虛擬機模擬完整的底層硬件環境和特權指令的執行過程,客戶操作系統無需進行修改。例如VMware Workstation,VirtulBox,QEMU等
硬件輔助虛擬化。利用硬件輔助支持處理敏感指令來實現完全虛擬化的功能,客戶端操作系統無需更改,例如Xen,KVM等
部分虛擬化。只針對部分硬件資源進行虛擬化,客戶端操作系統需要進行更改。
超虛擬化。部分硬件接口以軟件的形式提供給客戶機操作系統,客戶機操作系統需要進行更改。
操作系統級虛擬化。內核通過創建多個虛擬的操作系統實例來隔離不同的進程,Docker技術。
Docker 安裝
安裝Docker是操作系統級虛擬化工具,它可以在Containers中自動部署應用程序
安裝docker
目前,CentOS 僅發行版本中的內核支持 Docker。
Docker 運行在 CentOS 7 上,要求系統為64位、系統內核版本為 3.10 以上。
Docker 運行在 CentOS-6.5 或更高的版本的 CentOS 上,要求系統為64位、系統內核版本為 2.6.32-431 或者更高版本。
使用 yum 安裝(CentOS 7下)
Docker 要求 CentOS 系統的內核版本高於 3.10 ,查看本頁面的前提條件來驗證你的CentOS 版本是否支持 Docker 。
通過 uname -r 命令查看你當前的內核版本
[root@runoob ~]# uname -r 3.10.0-327.el7.x86_64
安裝 Docker
從 2017 年 3 月開始 docker 在原來的基礎上分為兩個分支版本: Docker CE 和 Docker EE。
Docker CE 即社區免費版,Docker EE 即企業版,強調安全,但需付費使用。
本文介紹 Docker CE 的安裝使用。
移除舊的版本:
$ sudo yum remove docker \
docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-selinux \ docker-engine-selinux \ docker-engine
安裝一些必要的系統工具:
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
添加軟件源信息:
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
更新 yum 緩存:
sudo yum makecache fast
安裝 Docker-ce:
sudo yum -y install docker-ce
啟動 Docker 后台服務
sudo systemctl start docker
測試運行 hello-world
[root@runoob ~]# docker run hello-world
由於本地沒有hello-world這個鏡像,所以會下載一個hello-world的鏡像,並在容器內運行。
使用腳本安裝 Docker
1、使用 sudo
或 root
權限登錄 Centos。
2、確保 yum 包更新到最新。
$ sudo yum update
3、執行 Docker 安裝腳本。
$ curl -fsSL https://get.docker.com -o get-docker.sh $ sudo sh get-docker.sh
執行這個腳本會添加 docker.repo
源並安裝 Docker。
4、啟動 Docker 進程。
sudo systemctl start docker
5、驗證 docker
是否安裝成功並在容器中執行一個測試的鏡像。
$ sudo docker run hello-world docker ps
到此,Docker 在 CentOS 系統的安裝完成。
鏡像加速
鑒於國內網絡問題,后續拉取 Docker 鏡像十分緩慢,我們可以需要配置加速器來解決,我使用的是網易的鏡像地址:http://hub-mirror.c.163.com。
新版的 Docker 使用 /etc/docker/daemon.json(Linux) 或者 %programdata%\docker\config\daemon.json(Windows) 來配置 Daemon。
請在該配置文件中加入(沒有該文件的話,請先建一個):
{ "registry-mirrors": ["http://hub-mirror.c.163.com"] }
刪除 Docker CE
執行以下命令來刪除 Docker CE:
$ sudo yum remove docker-ce $ sudo rm -rf /var/lib/docker
問題一:執行docker ps命令,出現 "Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?"問題
解答一:沒有root權限,可以賦值增加權限避免每次都這樣操作。
1 su root # 先切換到root用戶, 再執行以下命令 2 systemctl enable docker # 開機自動啟動docker 3 systemctl start docker # 啟動docker 4 systemctl restart docker # 重啟dokcer
解決二:此時已確定Docker本身已經安裝正常。
問題原因是因為docker服務沒有啟動,所以在相應的/var/run/
路徑下找不到docker的進程。
執行 systemctl status docker.service (centos則執行:service docker start
)命令,啟動docker服務,返回
docker start/running, process 2662
此時進程啟動成功,再執行docker ps
,問題解決