溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Docker簡介以及如何安裝Docker和鏡像管理

發(fā)布時(shí)間:2021-09-26 15:59:21 來源:億速云 閱讀:120 作者:柒染 欄目:系統(tǒng)運(yùn)維

本篇文章為大家展示了Docker簡介以及如何安裝Docker和鏡像管理,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

一、Docker簡介

官網(wǎng) www.docker.com

github  https://github.com/docker/docker.github.io

開源的容器引擎,可以讓開發(fā)者打包應(yīng)用以及依賴的庫,然后發(fā)布到任何流行的linux發(fā)行版上,移植很方便。

由go語言編寫,基于apache2.0協(xié)議發(fā)布。

基于linux kernel,要想在win下運(yùn)行需要借助一個(gè)vm(虛擬機(jī))來實(shí)現(xiàn)。

自2013年開始,近些年發(fā)展迅猛。

docker從1.13x開始,版本分為社區(qū)版ce和企業(yè)版ee,并且基于年月的時(shí)間線形式,比如18.03就是2018年3月,當(dāng)前最新穩(wěn)定版為18.09參考。

Docker版本變化說明:http://blog.csdn.net/chenhaifeng2016/article/details/68062414

Docker和傳統(tǒng)的虛擬化比較:

Docker簡介以及如何安裝Docker和鏡像管理

Docker簡介以及如何安裝Docker和鏡像管理

Docker也叫容器虛擬化,因?yàn)樯倭艘粚硬僮飨到y(tǒng),所以也是輕量虛擬化。

最下面一層是服務(wù)器,硬件,往上一層是host OS,Linux操作系統(tǒng),再往上,傳統(tǒng)的有一個(gè)Hypervisor,就比如KVM,需要安裝一個(gè)KVM的服務(wù)來驅(qū)動(dòng)虛擬化,docker需要安裝一個(gè)docker的服務(wù),第三層是類似的,再往上就不一樣了,docker不需要安裝客戶虛擬機(jī),而傳統(tǒng)的安裝完KVM以后還需要新建虛擬機(jī),在這個(gè)虛擬機(jī)上再去安裝一個(gè)操作系統(tǒng)。

Docker的優(yōu)勢

啟動(dòng)非??欤爰墝?shí)現(xiàn)。

資源利用率高,一臺(tái)高配置服務(wù)器可以跑上千個(gè)docker容器。

更快的交付和部署,一次創(chuàng)建和配置后,可以在任意地方運(yùn)行。

內(nèi)核級別的虛擬化,不需要額外的hypevisor支持,會(huì)有更高的性能和效率。不需要虛擬化CPU、內(nèi)存等等的服務(wù)。

易遷移,平臺(tái)依賴性不強(qiáng)??梢栽贚inux下搞一個(gè)鏡像,把這個(gè)鏡像放到Windows下去運(yùn)行。

下圖是docker和虛擬機(jī)的特性對比:

Docker簡介以及如何安裝Docker和鏡像管理

Docker的核心理念

鏡像,是一個(gè)只讀的模板,類似于安裝系統(tǒng)用到的那個(gè)iso文件,我們通過鏡像來完成各種應(yīng)用的部署。

容器,鏡像類似于操作系統(tǒng),而容器類似于虛擬機(jī)本身。它可以被啟動(dòng)、開始、停止、刪除等操作,每個(gè)容器都是相互隔離的。

倉庫,存放鏡像的一個(gè)場所,倉庫分為公開倉庫和私有倉庫。 最大的公開倉庫是Docker hub(hub.docker.com),國內(nèi)公開倉庫(dockerpool.com)

二、安裝Docker

先下載一個(gè)官方提供的yum源

# curl https://download.docker.com/linux/centos/docker-ce.repo -o  /etc/yum.repos.d/docker.repo
# yum list |grep docker-ce   可以看到最新版是19.03
docker-ce.x86_64                        3:19.03.5-3.el7                docker-ce-stable
# yum install -y docker-ce

速度比較慢,也可以直接下載rpm包

https://download.docker.com/linux/centos/7/x86_64/stable/Packages/

下載完,上傳到linux下

也需要用yum安裝,可以自動(dòng)解決依賴關(guān)系

# yum install -y docker-ce-xxxx.rpm
# systemctl start docker  啟動(dòng)docker

啟動(dòng)以后,它會(huì)幫你自動(dòng)生成一些iptables規(guī)則,但是這個(gè)規(guī)則不會(huì)自動(dòng)保存,要想保存它,執(zhí)行service iptables save。一般作為docker的服務(wù)器,iptables規(guī)則盡量不要去動(dòng)它。

# iptables -t nat -F
# iptables -t nat -nvL
# systemctl restart docker
# iptables -t nat -nvL
清空規(guī)則再重啟docker后,規(guī)則會(huì)回來,但是得要先保存。

三、鏡像管理

類似于系統(tǒng)的iso鏡像文件。

# docker pull centos  //可以下載centos鏡像,速度很慢。直接到官網(wǎng)拉取一個(gè)鏡像。

docker pull類似于git pull。

配置docker加速器(參考 http://blog.csdn.net/xlemonok/article/details/71403534)

# vi /etc/docker/daemon.json//加入如下內(nèi)容
{
  "registry-mirrors": ["https://dhq9bx4f.mirror.aliyuncs.com"]
}

說明:這個(gè)url為加速器地址,需要自行到阿里云申請。

配置完加速器,重啟docker服務(wù),再次docker pull centos會(huì)快很多。

docker images 查看本地的鏡像
[root@fuxi01 ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos              latest              0f3e07c0138f        3 months ago        220MB

TAG:標(biāo)簽,每個(gè)鏡像可以有很多個(gè)標(biāo)簽。latest這個(gè)是版本標(biāo)簽。

IMAGE ID:用來區(qū)分系統(tǒng)里每個(gè)鏡像的ID,區(qū)分鏡像的唯一標(biāo)識(shí)。

# docker search xxx  //官方有哪些鏡像,用search搜索鏡像,其中xxx是關(guān)鍵詞,比如jumpserver,就會(huì)把jumpserver相關(guān)的docker
# docker tag centos yw_centos //給鏡像打標(biāo)簽
# docker tag centos centos:111 
# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              latest              549b9b86cb8d        13 days ago         64.2MB
yw_centos           latest              0f3e07c0138f        3 months ago        220MB
centos              111                 0f3e07c0138f        3 months ago        220MB
centos              latest              0f3e07c0138f        3 months ago        220MB

不加冒號(hào),則打的標(biāo)簽在第一列,加了冒號(hào),后面打的標(biāo)識(shí)在TAG那,第二列。

# docker run -itd centos  
43aae89a76aef04cab62efcf6c4ec2f24a29f69db192125b0d72b2e111af69ba

//docker run把鏡像啟動(dòng)為容器,-i表示讓容器的標(biāo)準(zhǔn)輸入打開,-t表示分配一個(gè)偽終端,-d表示后臺(tái)啟動(dòng),要把-i -t -d 放到鏡像名字前面。

# docker ps  //查看運(yùn)行的容器,加上-a選項(xiàng)后可以查看所有容器,包括未運(yùn)行的,docker ps -a。
CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS              PORTS               NAMES
43aae89a76ae        centos              "/bin/bash"         About a minute ago   Up 24 seconds                           serene_kare
# docker rmi centos  
# docker rmi centos:111
Untagged: centos:111

//用來刪除指定鏡像, rm就是刪除,i就是images,其中后面的參數(shù)可以是tag,如果是tag時(shí),實(shí)際上是刪除該tag。當(dāng)后面的參數(shù)為鏡像ID時(shí),則會(huì)徹底刪除整個(gè)鏡像,所有標(biāo)簽也會(huì)一同刪除。當(dāng)有同名鏡像,而tag不同時(shí),需要把tag加上才能刪除。

四、Docker通過容器創(chuàng)建鏡像

docker run啟動(dòng)為容器后,可以通過下面命令進(jìn)入容器

# docker exec -it 43aae89 bash
# docker exec -it infallible_lalande bash

//其中43aae89為容器id,這個(gè)id可以用docker ps查看,也可以不寫容器ID,寫它的names,在docker ps中可以查看到,最后面的bash為進(jìn)入容器后要執(zhí)行的命令,這樣就可以打開一個(gè)終端。

進(jìn)入到該容器中,做一些變更,比如安裝一些東西,然后針對這個(gè)容器進(jìn)行創(chuàng)建新的鏡像。

在容器中執(zhí)行 yum install -y net-tools,然后ctrl d退出容器,ifconfig可以看到有docker0的網(wǎng)卡。

# docker commit -m "change somth"  -a "somebody info" container_id new_image_name

//container_id通過docker ps -a獲取,后面的new_image_name為新鏡像名字

例如:

# docker commit -m "install net-tools" -a "aminglinux" 43aae89 centos_with_net

這個(gè)命令有點(diǎn)像svn的提交,-m 加一些改動(dòng)信息,-a 指定作者相關(guān)信息,43aae89這一串為容器id,再后面為新鏡像的名字。

# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos_with_net     latest              2803335f23a6        33 seconds ago      261MB
ubuntu              latest              549b9b86cb8d        3 weeks ago         64.2MB
centos              latest              0f3e07c0138f        3 months ago        220MB
yw_centos           latest              0f3e07c0138f        3 months ago        220MB

執(zhí)行docker images就可以看到新的鏡像了。

上述內(nèi)容就是Docker簡介以及如何安裝Docker和鏡像管理,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI