docker使用基礎總結

1、基礎知識
python

Docker特性:docker

1.啓動速度爲秒級,共享Kernel幾乎沒有性能損耗,資源消耗小shell

2.提供隔離的運行環境centos

-文件系統隔離bash

-網絡隔離網絡

-進程號隔離app

-進程間通訊隔離運維

3.提供資源限制socket

-CPU計算資源tcp

-內存資源

-磁盤I/O資源

4.一個容器只幹一件事情

保證容器提供服務的服務質量而且能夠下降容器之間的相互干擾

5.docker鏡像是分層的,好比把一個centos啓動成容器,而後裝一個服務保存,就是在本來的鏡像層上又加了一層

隔離的原理

CGroups:限制容器的資源使用,

Namespace機制實現容器間的隔離

chroot:文件系統的隔離

liunx內核提供的限制,記錄和隔離進程組所使用的資源

經過不一樣的子系統來實現對不一樣資源使用的控制和記錄

docker的守護進程和客戶端的鏈接方式

經過socket連接

unix:///var/run/docker.sock

tcp://host:port

fd://socketfd

docker的運行模式

用戶能夠經過命令行的接口或者自定義的應用和客戶端鏈接,客戶端能夠是docker提供的二進制程序、shell中運行的docker命令、用戶自定義的程序,程序是經過remoteAPI來調用docker的服務,docker的客戶端和服務端經過socket鏈接,這種鏈接意味着docker的客戶端和服務端既能夠在同一臺機器上運行也能夠在不一樣的機器上運行,docker的客戶端能夠經過遠程訪問的方式來訪問docker服務端

2、命令操做

鏡像操做

下載鏡像

docker  pull  centos

上傳鏡像

docker  push  centos

刪除鏡像

docker rmi  p_w_picpathID

打標籤

docker tag [OPTIONS] IMAGE[:TAG] [REGISTRYHOST/][USERNAME/]NAME[:TAG]

列出鏡像

docker p_w_picpaths

導出鏡像

docker save -o p_w_picpath.tar 鏡像名稱+tag

導入鏡像

 
docker load  --input tar包名稱

查找鏡像:從官方倉庫中

docker  search  centos

構建鏡像:把鏡像啓動起來就是容器而後進行修改,修改完exit退出,commit命令保存

docker commit p_w_picpathID

列出鏡像

docker p_w_picpaths

容器操做

啓動容器

docker  run [OPTIONS] IMAGE[:TAG]  [COMMAND] [ARG...]
docker run -t -i centos:latest /bin/bash
docker  run  --help
-i:交互式操做
-t:分配一個tty
-d:後臺運行

二、啓動容器

docker run -t -i centos:latest /bin/bash

若是不指定具體的標記,則默認使用 latest 標記信息

三、容器基本使用

容器生命週期管理 docker [run|start|stop|restart|kill|rm|pause|unpause]
容器操做運維   docker [ps|inspect|top|attach|events|logs|wait|export|port]
鏡像倉庫     docker [login|pull|push|search]

4.不進入容器對容器進行操做

docker run p_w_picpath_name  yum install -y app_name

5.中止一個容器

docker stop CONTAINER_ID

6.啓動一箇中止的容器,並附着

docker start CONTAINER_ID  
docker attach CONTAINER_ID   #須要多敲一次回車

7.重啓一個容器

docker restart CONTAINER_ID

8.刪除一個容器

docker rm   CONTAINER_ID

9.列出某個容器與宿主機之間的端口映射關係

docker port CONTAINER_ID

10.docker刪除全部stop的容器

docker rm $(docker ps -q -a)

腳本還原p_w_picpaths並跟系統已有鏡像對比,若是系統不存在這個鏡像,就還原

#!/bin/bash
c=`docker p_w_picpaths  | awk '{print $1}' | grep -v REPOSITORY` #過濾出鏡像名稱
echo $c >> p_w_picpaths.txt                                      #把全部鏡像名稱追加到
for i in `ls *.tar`                                        #tar包名賦值給i
do
   a=`echo  $i | awk -F '.' '{print $1}'`                  #去掉.tar
   grep  "$a" p_w_picpaths.txt                                   #查詢$a是否在文件中
   if [ $? != 0 ]                                          #返回值不爲0就是
   then
      cat $i  |  docker   import - $a                      #就還原
   else
      continue
   fi

done
相關文章
相關標籤/搜索