Docker安裝以及鏡像、容器的管理操做

Docker簡介

Docker是在Linux容器裏運行應用的開源工具,是一種輕量級的虛擬化方式。Docker的設計宗旨是經過對應用軟件的封裝、發佈、部署、運行等生命週期的管理,達到應用組件級別「一次封裝,處處運行」的目的。這裏的組件能夠是一個應用,也能夠是一套服務,甚至可使一個完整的操做系統。docker

Docker的優點

  • Docker的容器技術能夠在一臺主機上輕鬆地爲任何應用建立個輕量級的、可移植的、自給自足的容器。經過這種容器打包應用程序,簡化了從新部署、調試這些瑣碎的重複工做,極大地提升了工做效率。採用Docker容器技術,遷移只須要在新的服務器上啓動須要的容器就能夠。
  • Dockerer容器很快,啓動和中止能夠在秒級實現,比傳統虛擬機要快不少。
  • Docker核利用容器來實現相似VM的功能,從而以更加節省的硬件資源提供,使得在一臺主機上同時運行數幹個Docker容器成爲可能。
  • Docker 操做方便,還能夠經過Dockerfle配置鏡像文件,支持靈活的自動化建立和部署。

Docker核心概念

一、鏡像(image)

Docker的鏡像是建立容器的基礎,相似虛擬機的快照,能夠理解爲是一個面向Docker容器引擎的只讀模板,好比一個鏡像能夠是一個完整的centos操做系統,也能夠是一個安裝了MySQL的應用程序,稱之爲一個鏡像。
鏡像文件用戶能夠本身建立和更新現有鏡像,也能夠從網上下載已經作好的應用鏡像直接使用。shell

二、容器(Container)

容器是鏡像的另外一個運行實例,是獨立運行的一個或一組應用以及他們所必須的運行環境,包括文件系統、系統庫類、shell環境等。鏡像是隻讀模板,而容器會給這個只讀模板一個額外的可寫層。json

三、倉庫(Repository)

倉庫是用來集中存放鏡像的地方,當本身建立了鏡像後,可使用push命令將它上傳到公共倉庫(Public)或者私有倉庫(Private),這樣,當其餘機器想要使用時,直接下載下來便可使用。倉庫註冊服務器(Registry)是存放倉庫的地方,其中包含了多個庫,每一個倉庫集中存放某一類鏡像,而且使用不一樣的標籤來區分它們。vim

安裝Docker

安裝docker有兩種方式:其一:使用curl得到docker的安裝腳本進行安裝;其二:使用docker本身的Yum源來安裝。這裏以yum源爲例安裝docker。centos

1.倉庫配置

vim /etc/yum.repos.d/docker.repo 

[docker-repo]
name=Doker Repository
baseurl=https://yum.dockerproject.org/repo/main/centos/$releasever/
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg

2.安裝docker

yum install docker-engine -y

3.啓動服務

systemctl start docker
systemctl enable docker.service    #開機自啓動

4.鏡像加速

vim /etc/docker/daemon.json 

 {
    "registry-mirrors": [
        "https://registry.docker-cn.com"  #官方提供的國內鏡像加速器地址
    ],
    "insecure-registries": []
}

5.重啓服務

systemctl daemon-reload
systemctl restart docker

6.查看docker版本

docker version

Docker安裝以及鏡像、容器的管理操做

7.查看docker的默認存儲目錄

Docker安裝以及鏡像、容器的管理操做

Docker鏡像操做:

Docker運行容器前須要本地存在對應的鏡像。若是不存在本地鏡像,docker就會嘗試從默認鏡像倉庫(官方倉庫)https://hub.docker.com下載bash

1.搜索鏡像

命令格式:docker search 關鍵字

例如搜索關鍵字爲lamp的鏡像
Docker安裝以及鏡像、容器的管理操做服務器

2.獲取鏡像

下載鏡像不指定標籤,默認下載最新版本的鏡像,也能夠經過指定的標籤下載特定版本的鏡像。這裏的標籤(tag)是用來區分鏡像版本的。curl

命令格式:docker pull 倉庫名稱[:標籤]

例以下載鏡像nickistre/centos-lamp
Docker安裝以及鏡像、容器的管理操做ide

整個下載過程能夠看出,鏡像文件由若干層(Layer)組成,咱們稱之爲AUFS(文件聯合系統),是實現增量保存與更新的基礎,下載過程當中會輸出鏡像的各層信息工具

3.查看鏡像信息

命令格式:docker images 倉庫名稱[:標籤]

例如查看本地全部鏡像
Docker安裝以及鏡像、容器的管理操做

REPOSITORY ---鏡像屬於的倉庫
TAG ---鏡像的標籤信息,標記同一個倉庫中不一樣鏡像
IMAGE ID ---鏡像的惟一ID號,惟一標識了該鏡像
CREATED ---鏡像建立時間
SIZE ---鏡像大小

4.獲取鏡像詳細信息

命令格式:docker inspect 鏡像ID號

例如獲取鏡像的詳細信息
Docker安裝以及鏡像、容器的管理操做

5.爲本地鏡像添加新標籤

命令格式:docker tag 名稱[:標籤] 新名稱[:標籤]

例如本地鏡像 添加新的名稱爲lamp,新的標籤爲lamp
Docker安裝以及鏡像、容器的管理操做

6.刪除鏡像

命令格式:docker rmi 倉庫名稱:標籤 或者docker rmi 鏡像ID號

例如刪除鏡像lamp:lamp
Docker安裝以及鏡像、容器的管理操做

注意:當一個鏡像有多個標籤的時候,docker rmi 命令只是刪除該鏡像多個標籤中的指定標籤,不會影響鏡像文件。但當該鏡像只剩下一個標籤的時候,此時刪除該標籤的時候會完全刪除該鏡像。

Docker安裝以及鏡像、容器的管理操做

使用docker rmi 鏡像ID號命令時,必須確保該鏡像沒有被容器使用才能進行,刪除時系統會先刪除掉指向該鏡像的全部標籤,而後刪除鏡像自己。若是該鏡像已經被容器使用,正確的作法是先刪除依賴該鏡像的全部容器,再刪除鏡像

7.存出鏡像和載入鏡像(鏡像遷移)

存出鏡像,也就是將鏡像保存成本地文件。

命令格式:docker save -o 存儲文件名 存儲的鏡像

例如將本地的鏡像存出爲文件lamp
Docker安裝以及鏡像、容器的管理操做
載入鏡像,也就是將導出的文件導入到其餘機器的鏡像庫中

命令格式:docker load < 存出的文件 或者docker --input 存出的文件

例如從文件lamp中載入鏡像本地鏡像庫
Docker安裝以及鏡像、容器的管理操做

8.上傳鏡像

本地存儲的鏡像愈來愈多,就須要指定一個專門的地方存放這些鏡像-倉庫。

命令格式:docker push 倉庫名稱:標籤

例如在公共倉庫上成功註冊了一個帳號,這個帳號叫作xiang10,新增的鏡像的標籤爲xiang10/lamp:centos7

docker tag nickistre/centos-lamp  xiang10/lamp:centos7

Docker安裝以及鏡像、容器的管理操做
成功登錄後上傳鏡像
Docker安裝以及鏡像、容器的管理操做

Docker容器操做

1.建立容器

建立容器就是將鏡像加載到到容器,新建立的容器默認處於中止狀態,不運行任何程序。

命令格式:docker create [選項] 鏡像 運行的程序

-i 讓容器對的輸入保持打開
-t 讓Docker分配一個僞終端

Docker安裝以及鏡像、容器的管理操做

2.查看容器的運行狀態

docker ps       #查看全部容器的運行狀態
docker ps -a   #查看最近一次啓動的容器的運行狀態

Docker安裝以及鏡像、容器的管理操做

3.建立並啓動容器

能夠直接執行docker run命令

其運行過程:
1.檢查本地是否存在指定的鏡像,當鏡像不存在時,會從公共倉庫下載;
2.利用鏡像建立並啓動容器;
3.執行用戶指定的應用程序;
4.執行完畢後容器被停止運行

例如建立容器並啓動執行一條shell命令

docker run centos /usr/bin/bash -c ls /

Docker安裝以及鏡像、容器的管理操做
Docker安裝以及鏡像、容器的管理操做

但有時候須要在後臺持續運行這個容器,就要讓docker以守護態在後臺運行,能夠在docker run命令後添加「-d」選項實現。那麼,容器運行的程序就不能結束。

docker run -d centos /usr/bin/bash -c "while true;do echo hello;done"

Docker安裝以及鏡像、容器的管理操做

4.運行、停止容器

命令格式:docker start 容器的ID/名稱  #啓動中止狀態的容器

命令格式:docker stop 容器的ID/名稱  #停止運行狀態的容器

Docker安裝以及鏡像、容器的管理操做
Docker安裝以及鏡像、容器的管理操做

5.進入容器

當不進入容器時,容器運行完所執行的程序後會自動中止,爲了不這樣的狀況,咱們須要進入容器執行,且退出容器後,容器並不會中止。

命令格式:docker exec -it 容器的ID/名稱 /bin/bash 
-i 讓容器對的輸入保持打開
-t 讓Docker分配一個僞終端

Docker安裝以及鏡像、容器的管理操做

6.導出與導入容器

導出容器,也就是將已經建立好的容器容器導出爲文件

命令格式:docker export 容器的ID/名稱 > 文件名

例如導出容器到文件centos7tar
Docker安裝以及鏡像、容器的管理操做
導入容器,也就是將導出文件傳輸到其餘機器

命令格式:cat 文件名| docker import - 生成的鏡像名稱:標籤

例如導入文件centos7tar成爲本地鏡像
Docker安裝以及鏡像、容器的管理操做

7.刪除容器

將一個已經處於停止狀態的容器刪除

命令格式:docker rm 容器的ID/名稱

Docker安裝以及鏡像、容器的管理操做

若是要刪除一個正在運行的容器,能夠添加-f選項強制刪除,但建議先將容器中止再作刪除操做。

相關文章
相關標籤/搜索