1. 程式人生 > >Docker從入門到飛升:基礎配置安裝

Docker從入門到飛升:基礎配置安裝

ror wdm ibm height 宿主機 開始 uav down 例如

導讀 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從入門到飛升:基礎配置安裝