docker系列四之docker鏡像與容器的經常使用命令

docker鏡像與容器的經常使用命令html

一.概述linux

    docker的鏡像於容器是docker中兩個相當重要的概念,首先給各位讀者解釋一下筆者對於這兩個概念的理解。鏡像,咱們從字面意思上看,鏡子裏成像,咱們人站在鏡子面前,在鏡子中會呈現一個完整的咱們(包括咱們的着裝、表情、髮型等等)。那麼在軟件領域的鏡像是指對數據按照必定的格式的一個完整的拷貝;容器是鏡像運行時的實體,好比說鏡像是個類,當沒有被加載的時候,它是存放在咱們的硬盤上的,而容器是對象,對象只有在程序運行的時候纔會被建立,而且一個類能夠建立N多個對象,對應到咱們的鏡像與容器,一個鏡像能夠用於建立多個容器,每一個容器運行在各自的namespace中間。docker

二.鏡像的操做json

  在本節筆者只會粗略的說一下鏡像,本文的重點在於講解容器,由於容器必定要用到鏡像,全部咱們又不得不提。後續會有專門的篇章來介紹鏡像。centos

2.1 鏡像倉庫的配置服務器

    所謂的鏡像倉庫就是鏡像集中存放的位置,docker默認的鏡像倉庫地址是 https://hub.docker.com,因爲該地址服務器不在內地,訪問的速度可能會有必定的影響。因此咱們會常常將docker默認的鏡像倉庫換成阿里巴巴或者163的鏡像倉庫地址,以便加快咱們的訪問速度,本小節咱們以阿里巴巴的鏡像倉庫爲例爲你們講解。post

     A.註冊阿里雲帳戶,地址爲:https://account.aliyun.com/login/login.htm                阿里雲

                                                                 

     B.進入到阿里雲控制檯,選擇「容器鏡像服務」spa

                                                           

     C.進入到「鏡像加速器」,在右側會出現「加速器地址」以及如何配置加速器地址3d

                                                          

     D.若是你按照筆者《docker系列三之docker的安裝》來安裝docker,在 /etc/docker/目錄下是沒有 daemon.json文件的,全部你要進入到 /etc/docker/ 目錄下執行 touch  daemon.json  命令建立 daemon.json文件,以下圖所示:

                                                               

     E.在新建立的daemon.json文件中加入以下內容

{
  "registry-mirrors": ["https://zbhswmwr.mirror.aliyuncs.com"]
}

     F.執行以下命令

sudo systemctl daemon-reload                  #從新加載守護進程
sudo systemctl restart docker                 #重啓docker

2.2 docker的信息和幫助命令 

docker -v       #查看docker的版本信息
docker info     #查看docker的基本信息,例如多少鏡像,多少個容器等
docker help    #查看docker命令

2.3 docker鏡像的基本命令

       A.查看docker本地有多少鏡像:docker images 或者 docker image ls 

                                                            

      B.拉取鏡像倉庫的某個鏡像:docker pull 鏡像名:tag,例如:docker pull hello-world:linux

                                                              

     C.只查看鏡像的ID: docker images -aq

                                                             

       D.刪除一個鏡像: docker rmi 鏡像名[:tag]  或者  docker rmi 鏡像ID    注: 若是本地鏡像文件鏡像名惟一,能夠不用加tag

                                                             

三.容器的基本命令

    A. 器的啓動:docker run 鏡像名:tag   

                                              

        B.查看正在運行的容器:docker container ls 或者 docker ps 或者 docker ps -n 2

                                                              

   說明:docker ps -n 2表示查看最近運行或者運行過的兩個容器。

        C.查看全部的容器,包括已經中止了的容器:docker container ls -a 或者 docker ps -a

                                                              

         D.以交互的方式啓動容器,例如咱們啓動一個centos容器:docker run -i -t centos 

                                                          

         注:-t的是宿主機分配一個終端,並將該終端綁定到標準的輸入上;-i讓容器的標準輸入保持打開狀態。兩者都是聯合在一塊兒使用的。

         若是以上述的方式啓動centos容器,那麼咱們如何回到咱們的宿主機呢?有兩種方式:

                      a. 執行 exit 命令,該命令會關閉容器,而後退出。

              b.按住ctrl + p + q, 容器不關閉,只是退出。

          E.之後臺進程的方式啓動容器:docker run -d centos    

                                                               

         細心的你必定會發現,咱們以守護進程的方式啓動容器後,容器卻已經退出了(status爲Exited)。緣由是由於docker容器啓動後必需要有一個前臺進程,說白了就是一直要有事情幹,那麼怎麼能讓他有事幹了,咱們能夠開啓一個一直掛起的命令,例如:top tail,不然就會自動退出。那麼有什麼解決方法呢?其實這個問題解決的方法筆者蒐集到三種(都是在網上查找的):

  a.以交互的方式啓動容器,而後經過ctrl + p + q 不關閉容器退出容器,這種方式在上面已經給你們提到過:

docker run -it centos 

  b.經過一個死循環間歇性的不停的輸出一個字符串 :

docker run -d centos /bin/sh -c "while true;do echo hello world;sleep 2;done"

       c.經過咱們上面提到過的top命令的方式開啓一個前臺進程,讓容器有事情幹:

docker run -d centos /usr/bin/top -b

     F.容器的中止,容器的中止有兩種方式:1.docker stop 容器ID;2.docker kill 容器ID。方式一是一種平滑、優雅的方式關閉容器;方式二是暴力的方式關閉容器。

                                                             

     G.刪除容器:docker rm [-f] 容器ID。-f表示強制刪除,正在運行的容器用該命令。

                                                              

     H.查看容器的日誌:docker logs -t -f 容器ID。-t是顯示日誌的時間,-f是監視日誌的增加。

                                                              

     I.從新進入已經退出的容器:docker attach 容器ID 

                                                             

          J.不進入到容器,直接經過命令操做容器:docker exec 容器ID ls -l /   #查看容器中根目錄下有哪些目錄或者文件

                                                              

相關文章
相關標籤/搜索