Docker精簡學習系列(一):安裝、常用命令和基本概念理解

本系列為Docker的學習筆記,內容比較精簡,主要用於快速複習和隨時查詢。計劃分四節內容:

  • 安裝、常用命令和基本概念理解
  • 常用應用和兩個.NET項目的容器部署
  • 簡單學習Dockerfile
  • 簡單了解Docker compose

 

 

一、安裝Docker

  1. 更新yum包:yum update
  2. 安裝yum配套的工具包:yum install -y yum-utils device-mapper-persistent-data lvm2
  3. 設置yum源:yum-config-manager –add-repo //download.docker.com/linux/centos/docker-ce.repo
  4. 安裝docker:yum install -y docker-ce
  5. 查看docker版本,驗證是否安裝成功:docker -v
  6. 配置鏡像加速器:登陸阿里雲>進入窗口鏡像服務>鏡像工具>鏡像加速器>(CentOS)>複製到shell中執行

 

 

二、Docker服務相關命令
1、啟動/停止/重啟/後台運行/查看服務狀態
systemctl 【start | stop | restart | enable | status】 docker

 

 

三、鏡像相關命令
1、查看本地所有鏡像/搜索遠程鏡像/拉取鏡像/刪除鏡像
docker 【images | search (redies) | pull (redies:7) | rmi (redis:7 | e42dd4e79c7) | 】

2、查看所有鏡像ID
docker images -q

3、刪除所有鏡像
docker rmi `docker images -q`

 

 

四、容器相關命令

1、創建容器
docker run 【-it | -id】 –name=c1 centos:7 /bin/bash
-it:創建容器(交互式),立即進入容器,並開啟一個終端,exit退出容器後,容器立即關閉
-id:創建容器(守互式),並一直在後台運行,進入容器並exit退出後,容器不會關閉
–name:容器命名
/bin/bash:進入容器的初始化指令,打開shell腳本窗口

2、查看正在運行的容器:
docker ps

3、查看正在運行和已經退出的容器:
docker ps -a

4、進入容器
docker exec -it c2 /bin/bash
-it:進入容器,並開啟一個終端
c2:容器名稱
/bin/bash:進入容器的初始化指令,打開shell腳本窗口

5、退出容器
exit

6、啟動容器/關閉容器/刪除容器/查看容器信息。註:start容器後,容器自動轉為守護式
docker 【start | stop | rm | inspect】 c1

7、查看所有容器ID
docker ps -aq

8、刪除所有容器
docker rm `docker ps -aq`

 

五、數據卷相關命令

1、創建容器時配置數據卷
docker run -id –name=c1 -v /root/data_linux:/root/data_container centos:7 /bin/bash
-v:設置數據卷,如果要掛載到多個數據卷,可以多次-v;如果要掛載多個容器數據目錄,則每個容器創建時掛載相同的數據卷即可
/root/data_linux:/root/data_container:冒號前為數據卷目錄的絕對路徑,冒號後為容器數據目錄的絕對路徑
容器刪除後:容器數據丟失,但數據卷仍然在。重新創建容器時,重新掛載到數據卷目錄,即可恢復容器數據

2、配置數據卷容器:
①創建數據卷容器(/volume可以自己定義):
docker run -id –name=c3 -v /volume centos:7 /bin/bash
②創建c1和c2容器,並掛載到c3上(–volumes-from為設置屬性命令)
docker run -id –name=c1 –volumes-from=c3 centos:7 /bin/bash
docker run -id –name=c2 –volumes-from=c3 centos:7 /bin/bash
完成以上兩個步驟,inspect查看c3、c1和c2,找到以下信息
“Source”: “/var/lib/docker/volumes/de83e5ea073ca277882694995f88137b2933e1f695362590103760f166923b04/_data”,
“Destination”: “/volume”,
如上,Source目錄即為在宿主機上自動創建的數據卷,Destination即為容器數據目錄

 

 

六、基本概念的理解

  1. 鏡像:程序安裝包,類似於windows安裝會經常接觸到的iso文件。
  2. 遠程鏡像:官方hub服務器上的鏡像,hub類似於javascript的npm、NET的nuget。遠程鏡像要先拉取到本地計算機,因hub在國外,速度比較慢,所以一般要設置國內的鏡像加速。鏡像加速器,就是國內服務商對hub服務器的克隆。當然,也可以創建自己的私有鏡像服務器。
  3. 本地鏡像:遠程鏡像要拉取到本地計算機,才可以創建容器。本地鏡像,類似於類,容器就是用這個類創建的實例。所以同一個版本的鏡像,只有一個;而相應的容器可以有很多個。
  4. 容器:使用本地鏡像創建容器後,程序在容器環境中運行。容器即「容器」這個詞彙本身的含義,又有運行在容器中的程序的含義。容器中運行的程序,不限於應用程序,也可以是操作系統,比如我們在CentOS上安裝docker,而在docker的容器里,我們可以再運行一個CentOS。同一個鏡像,可以創建多個容器,即在一個docker里我們可以運行多個相同的程序,比如運行多個redis,容器之間是沙箱隔離的。
  5. 宿主機:docker運行所在的Linux服務器
  6. 數據卷:解決容器中產生的數據的持久化保存、容器之間數據交互、容器與外部之間數據交互問題。將容器中的數據目錄掛載到宿主機的文件目錄,並使這兩個目錄數據保持同步,宿主機中的這個文件目錄稱之為數據卷。容器刪除後,容器數據丟失,但數據卷的數據仍然保留。一個數據卷可以被多個容器掛載,一個容器也可以掛載到多個數據卷,多對多關係
  7. 數據卷容器:多容器數據交互,可以通過掛載到同一個數據卷上來實現。也可以在容器和數據卷之間,再創建一個數據卷容器。容器掛載到數據卷容器,數據卷容器再掛載到數據卷,從而實現數據交互。即「容器>數據卷容器>數據卷」
  8. docker核心意義:①應用程序和依賴環境一起部署在容器中,可以發佈到任何Linux服務器上,解決「水土不服」的問題;②使用文件層(鏡像)疊加,重用文件層(鏡像),區別於虛擬機,可以有效利用資源,而且效率非常高。

 

 

七、最後上圖理解