Docker從入門到飛升:基礎配置安裝
導讀 | Docker近幾年非常火,因為它是容器虛擬化,更能夠充分提高硬件資源的使用率。其實利用率高不算什麽,它最大的優勢是能給讓運維人員或者開發人員快速部署和交付資源,大大提高了工作效率。幾乎所有的大企業都在使用docker,所以我們沒有理由不去了解它,不去學習它。 |
一、初識Docker
-
容器虛擬化,比傳統的虛擬化輕量。
-
2013年出現,發展非常迅猛。
-
Redhat在6.5版本開始支持docker。
-
使用go語言開發,基於apache2.0協議。
-
開源軟件,項目代碼在github維護。
-
docker從1.13x開始,版本分為社區版ce和企業版ee,並且基於年月的時間線形式。
三篇資料,助你加深理解什麽是Docker?
如通何俗懂易釋解Docker是什麽?
大白話Docker入門(一)
大白話Docker入門(二)
容器虛擬機和傳統虛擬機比較
-
容器虛擬化:
-
傳統虛擬化:
也就是說,讓我們創建一個新的虛擬機的時候,如果使用Vmware,首先我們需要分配一定的硬件資源去運行虛擬出來的系統,如果一臺電腦例如我的win7 配置一般,也就頂多可以跑10個centos,但是如果使用Docker就可以創建成千上百個centos系統,且每個系統都是獨立的,隔離開來的,硬件資源也是隔離開來的。這就是根本區別!
不難看出dockers的優勢
-
啟動非常快,秒級實現。
-
資源利用率很高,一臺機器可以跑上千個docker容器。
-
更快的交付和部署,一次創建和配置後,可以在任意地方運行。
-
內核級別的虛擬化,不需要額外的hypevisor- – 支持,會有更高的性能和效率。
-
易遷移,平臺依賴性不強。
Docker的核心概念
-
鏡像,是一個只讀的模板,類似於安裝系統用到的那個iso文件,我們通過鏡像來完成各種應用的部署。
-
容器,鏡像類似於操作系統,而容器類似於虛擬機本身。它可以被啟動、開始、停止、刪除等操作,每個容器都是相互隔離的。
-
倉庫,存放鏡像的一個場所,倉庫分為公開倉庫和私有倉庫。 最大的公開倉庫是Docker hub(hub.docker.com),國內公開倉庫(dockerpool.com)
二、Docker的安裝與配置
2.1安裝
[root@zhdy01 ~]# curl https://download.docker.com/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker.repo
//下載docker的yum源[root@zhdy01 ~]# yum install -y docker-ce
[root@zhdy01 ~]# systemctl start docker
[root@zhdy01 ~]# ps aux | grep docker
[root@zhdy01 ~]# docker version
當然另外一點,當我們配置完畢後,會自動幫我們創建一些IPtables 規則,其目的就是不影響docker虛擬機的正常運行。(每次重啟docker服務會自動把iptables規則添加上,所以不用擔心刪除!)
2.2鏡像容器管理
docker 由於在國外,國內限制比較大,所以我們一般會使用阿裏雲的加速器去下載一個鏡像:
vi /etc/docker/daemon.json //加入如下內容
{
"registry-mirrors": ["https://dhq9bx4f.mirror.aliyuncs.com"]
}
說明:這個url為加速器地址,需要同學自行到阿裏雲申請。
配置完加速器,重啟docker服務,再次docker pull centos會快很多。
2.3通過容器創建鏡像
剛剛我只是說到了如何刪除修改一些基礎的操作,一旦鏡像搭建好了,如何才能通過命令行進入系統呢?
可以通過下面命令進入容器:
docker exec -it xxxxx bash
//其中xxxxx為容器id,這個id可以用docker ps查看,最後面的bash為進入容器後我們要執行的命令,這樣就可以打開一個終端。
進入到該容器中,我們可以查看一下基礎的設備信息,都是基於宿主機建立起來的。我們也可以做一些變更,比如安裝一些東西,然後針對這個容器進行創建新的鏡像:
在容器中執行:
yum install -y net-tools
[root@dbde185fdcd3 /]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.17.0.2 netmask 255.255.0.0 broadcast 0.0.0.0
docker 容器自動的幫你虛擬出來一個虛擬IP。
而且在外部的虛擬主機我們也是可以看到這個網卡的!
然後ctrl d 退出容器。
把我們剛剛制作的鏡像保存成一個新的鏡像,下次我們再次需要的時候就可以直接使用(不需要再次安裝我們已經安裝過的服務!):
docker commit -m "change somth" -a "somebody info" container_id new_image_name
//container_id通過docker ps -a獲取,後面的new_image_name為新鏡像名字
例如:
這個命令有點像git的提交,-m 加一些改動信息,-a指定作者相關信息 2c74d這一串為容器id,再後面為新鏡像的名字。
Docker從入門到飛升:基礎配置安裝