1、Docker的介紹和安裝
1. Docker是什麼
百度百科的介紹:html
Docker 是一個開源的應用容器引擎,讓開發者能夠打包他們的應用以及依賴包到一個可移植的容器中,而後發佈到任何流行的Linux機器上,也能夠實現虛擬化。容器是徹底使用沙箱機制,相互之間不會有任何接口。mysql
簡單地說:sql
Docker是一個管理容器的引擎工具。它包含一個服務端和客戶端,服務端是一個管理着全部容器和文件系統的服務進程,客戶端則是一個服務端的控制器,用來控制docker的服務端進程。至於容器,主要指的是包含了一些特定應用的運行實例,既保證了當前應用的運行環境獨立,又能保證容器相互之間的獨立。docker
2. Docker的優點
一款產品從開發到上線,從操做系統,到運行環境,再到應用配置。做爲開發者,咱們須要關心不少東西,這也是不少互聯網公司都不得不面對的問題,特別是各類版本的迭代以後,不一樣版本環境的兼容,對運維人員都是考驗。Docker之因此發展如此迅速,也是由於它對此給出了一個標準化的解決方案。json
Docker提供了一套虛擬化和文件系統的支持,可讓專業人員自由組裝須要的運行環境到容器中,並提供容器運行時的隔離。就像一個大型油輪,承載着一個個集裝箱,每一個集裝箱咱們能夠理解爲咱們的容器,這個容器中的內容徹底由組裝人員自定義。vim
容器除了運行其中應用外,基本不消耗額外的系統資源,使得應用的性能很高,同時系統的開銷儘可能小。傳統虛擬機方式運行 10 個不一樣的應用就要起 10 個虛擬機,而Docker 只須要啓動 10 個隔離的應用便可。centos
具體說來,Docker 在以下幾個方面具備較大的優點。api
2.一、更快速的交付和部署
對開發和運維(devop)人員來講,最但願的就是一次建立或配置,能夠在任意地方正常運行。安全
開發者可使用一個標準的鏡像來構建一套開發容器,開發完成以後,運維人員能夠直接使用這個容器來部署代碼。 Docker 能夠快速建立容器,快速迭代應用程序,並讓整個過程全程可見,使團隊中的其餘成員更容易理解應用程序是如何建立和工做的。 Docker 容器很輕很快!容器的啓動時間是秒級的,大量地節約開發、測試、部署的時間。bash
2.二、更高效的虛擬化
Docker 容器的運行不須要額外的 hypervisor 支持,它是內核級的虛擬化,所以能夠實現更高的性能和效率。
2.三、更輕鬆的遷移和擴展
Docker 容器幾乎能夠在任意的平臺上運行,包括物理機、虛擬機、公有云、私有云、我的電腦、服務器等。 這種兼容性可讓用戶把一個應用程序從一個平臺直接遷移到另一個。
2.四、更簡單的管理
使用 Docker,只須要小小的修改,就能夠替代以往大量的更新工做。全部的修改都以增量的方式被分發和更新,從而實現自動化而且高效的管理。
3. Docker的架構
Docker使用一個客戶端服務器架構。Docker客戶端和Docker守護進程交流,Docker守護進程作很是重要的工做,構建,運行和分發你的Docker容器。Docker客戶端和守護進程能夠運行在一樣的系統上,或者是你能夠鏈接一個Docker客戶端到一個遠程Docker守護進程中。Docker客戶端和守護進程經過sockets或經過RESTful API進行溝通交流。
Docker client::Docker 命令行工具,是用戶使用Docker的主要方式,Docker client與Docker daemon通訊並將結果返回給用戶,Docker client也能夠經過socket或者RESTful api訪問遠程的Docker daemon
Docker daemon: Docker守護進程,運行在宿主機上,用戶經過Docker client(Docker命令)與Docker daemon交互
Docker container:容器是Docker的運行組件,啓動一個鏡像就是一個容器,容器是一個隔離環境,多個容器之間不會相互影響,保證容器中的程序運行在一個相對安全的環境中。
Docker image:鏡像是隻讀的,鏡像中包含有須要運行的文件。鏡像用來建立container,一個鏡像能夠運行多個container;鏡像能夠經過Dockerfile建立,也能夠從Docker hub/registry上下載。
Docker hub/registry::共享和管理Docker鏡像,用戶能夠上傳或者下載上面的鏡像,官方地址爲https://registry.hub.docker.com/,也能夠搭建本身私有的Docker registry。
4. Docker和Linux的關係
5. docker安裝
5.1 執行安裝命令:yum -y install docker-io
最初執行的時候報找不到docker的鏡像
已加載插件:fastestmirror, refresh-packagekit, security 設置安裝進程 Loading mirror speeds from cached hostfile * base: mirrors.cqu.edu.cn * extras: mirrors.njupt.edu.cn * updates: mirrors.njupt.edu.cn No package docker available.
這個時候須要更新epel第三方軟件庫,運行命令:sudo yum install epel-release
更新完第三方軟件庫之後繼續執行安裝命令:yum -y install docker-io,安裝成功
5.2 查看安裝的docker的版本
命令:docker version
5.3 啓動docker
命令:
# systemctl start docker //centos7及之後版本
# service docker start //centos6及以前的版本
5.4 修改系統中docker對應的鏡像加速器方便咱們快速下載和上傳鏡像,以下:
vim /etc/docker/daemon.json #添加後 { "registry-mirrors": ["https://registry.docker-cn.com"], "live-restore": true }
注意:新版本的docker沒有daemon.json,須要本身建一個
重啓docker
卸載docker:
Rpm方式卸載舊docker
# rpm -qa | grep -i docker //查找已經安裝docker
# rpm -e [module1][module2][.....] //卸載docker
5.5 從鏡像庫拉取鏡像
命令:docker pull library/hello-world
說明:
docker pull是抓取 image 文件的命令。library/hello-world是 image 文件在倉庫裏面的位置,其中library是 image 文件所在的組,hello-world是 image 文件的名字。
5.6 查看本機都有哪些鏡像
命令:docker images
5.7 運行鏡像文件
命令:
docker run hello-world
說明:
輸出這段提示之後,hello world就會中止運行,容器自動終止。有些容器不會自動終止,由於提供的是服務,好比Mysql鏡像等。
到此docker已經安裝完成!!!!
5.8 docker經常使用命令
拉取docker鏡像
docker pull image_name
查看宿主機上的鏡像,Docker鏡像保存在/var/lib/docker目錄下:
docker images
刪除鏡像
docker rmi hello-world 或者 docker rmi 3535063d9957
查看當前有哪些容器正在運行
docker ps
查看全部容器
docker ps -a
建立docker 容器(能夠根據一個鏡像建立多個容器)
docker run -tid 鏡像ID /bin/bash //非centos7 docker run -tid 鏡像ID /usr/sbin/init //centos7版本。使用/usr/sbin/init解決systemctl報錯不能使用的問題
刪除容器的命令:
docker rm container_name/container_id
啓動、中止、重啓容器命令:
docker start container_name/container_id docker stop container_name/container_id docker restart container_name/container_id
重命名容器:
docker rename dreamy_albattani mysql_master
後臺啓動一個容器後,若是想進入到這個容器,可使用attach命令:
docker attach container_name/container_id 或者 docker exec -it container_name/container_id /bin/bash
退出容器
exit
查看當前系統Docker信息
docker info
從Docker hub上下載某個鏡像:
docker pull centos:latest
執行docker pull centos會將Centos這個倉庫下面的全部鏡像下載到本地repository。
參考文章:
1. docker入門介紹:http://www.cnblogs.com/ityouknow/p/8520296.html
2. docker入門介紹:https://www.cnblogs.com/osscoder/p/6553733.html
3. docker安裝:https://www.cnblogs.com/maodot/p/7654918.html