Docker學習筆記:(1)Docker基礎知識

Docker學習筆記:(1)Docker基礎知識

Docker簡介

Docker是容器虛擬化技術的實現。將運做應用所須要的系統環境,由下而上打包成鏡像,以達到應用跨平臺間的無縫接軌運做。docker

Docker和傳統虛擬化方式的不一樣之處bash

1)傳統虛擬機技術是虛擬出一套硬件,並在其上運行一個操做系統,在該系統上再運行所需應用進程。而容器沒有進行硬件虛擬,容器內沒有本身的內核,容器內的應用進程直接運行於宿主的內核。所以容器要比傳統虛擬機更爲輕便。服務器

2)每一個容器之間互相隔離,每一個容器有本身的文件系統,容器之間不會相互影響。ide

優勢學習

佔用資源少,啓動快。操作系統

三個概念

1)倉庫:repository,集中存放鏡像文件的場所。倉庫(Repository)和倉庫註冊服務器(Registry)是不一樣的。倉庫註冊服務器上存放着多個倉庫,每一個倉庫中存儲多個鏡像,每一個鏡像有不一樣的標籤(tag)。命令行

2)鏡像:iamge,只讀的模板,用來建立Docker容器。rest

3)容器:container,用鏡像建立的運行實例。日誌

Docker經常使用命令

鏡像命令blog

1)service docker start:啓動Docker後臺服務

2)docker images [OPTIONS] :列出本地主機上的鏡像

OPTIONS說明

-a :列出本地全部的鏡像(含中間映像層)

-q :只顯示鏡像ID。

--digests :顯示鏡像的摘要信息

3)docker search 鏡像名字:查找鏡像

4)docker pull 鏡像名字[:TAG]:下載某個版本鏡像

5)docker rmi 鏡像ID1 [鏡像ID2...]:刪除鏡像

組合命令:一次性刪除多個命令 docker rm -f $(docker ps -a -q)

6)docker save 鏡像名1:版本號 鏡像名2:版本號 -o ./壓縮包名.tar  :打包鏡像

容器命令

1)docker run [OPTIONS] IMAGE [COMMAND] [ARG...]:新建並啓動容器

OPTIONS說明

--name="容器新名字": 爲容器指定一個名稱

-d: 後臺運行容器,並返回容器ID,也即啓動守護式容器

-i:以交互模式運行容器,一般與 -t 同時使用

-t:爲容器從新分配一個僞輸入終端,一般與 -i 同時使用

-P: 隨機端口映射

-p: 指定端口映射,有如下四種格式

ip:hostPort:containerPort

ip::containerPort

hostPort:containerPort

containerPort

2)docker ps [OPTIONS]:列出當前全部正在運行的容器

OPTIONS說明

-a :列出當前全部正在運行的容器+歷史上運行過的

-l :顯示最近建立的容器。

-n:顯示最近n個建立的容器。

-q :靜默模式,只顯示容器編號。

3)docker start 容器ID或者容器名:啓動容器

4)docker restart 容器ID或者容器名:重啓容器

5)docker stop 容器ID或者容器名:中止容器

6)docker kill 容器ID或者容器名:強制中止容器

7)docker rm 容器ID:刪除已中止的容器

8)docker logs -f -t --tail 數字 容器ID:查看容器日誌

-t 是加入時間戳

-f 跟隨最新的日誌打印

--tail 數字 顯示最後多少條

9)docker top 容器ID:查看容器內運行的進程

10)docker inspect 容器ID:查看容器內部細節

11)docker exec -it 容器ID /bin/bash:進入正在運行的容器並以命令行交互

12)docker cp  容器ID:容器內路徑 目的主機路徑:從容器內拷貝文件到主機上

13)docker commit -m="提交的描述信息" -a="做者" 容器ID 要建立的目標鏡像名:[標籤名] :提交容器副本生成新的鏡像

Docker鏡像原理

鏡像是一種輕量級、可執行的獨立軟件包,打包了軟件運行環境和基於運行環境開發的軟件。它包含運行某個軟件所需的全部內容,包括代碼、運行時、庫、環境變量和配置文件。

鏡像是由一層一層的文件系統(UnionFS)組成。

爲何Docker鏡像要採用這種分層結構

共享資源,複用中間層。不用鏡像可使用相同的鏡像層來構建。宿主機只需在磁盤上保存一份基礎的鏡像層,內存中也只需加載一份鏡像層,就能夠爲全部使用到該鏡像層的容器服務了。

鏡像的每一層均可以被共享。

Docker容器數據卷

做用:持久化數據,將關鍵的數據保存在宿主機,以免容器關閉後,數據跟着消失。

數據卷添加方式

1)直接命令添加

a) 命令: docker run -it -v /宿主機絕對路徑目錄:/容器內目錄的絕對路徑  鏡像名

b) 使用命令:docker inspect 容器ID  查看容器數據卷是否掛載成功

c)注意:若是docker掛載主機目錄Docker訪問出現cannot open directory .: Permission denied。解決辦法:在掛載目錄後多加一個--privileged=true參數便可。

2)Dockerfile添加

a)格式:VOLUME["/containerName1","/containerName2"]

b)注意:編寫Dockerfile時,不能指定宿主機目錄,而會在運行Dockerfile時,自動生成宿主機的掛載目錄。

相關文章
相關標籤/搜索