1. 程式人生 > >Docker學習(1):在Ubuntu下安裝Docker和關於容器的常用命令

Docker學習(1):在Ubuntu下安裝Docker和關於容器的常用命令

一、Docker的安裝條件
  1.執行64位CPU架構的計算機,Docker目前不支援32位CPU;
  2.建議採用Linux3.8或更高版本的核心;
  3.核心必須支援一種適合的儲存驅動
  4.核心必須支援並開啟cgroup和名稱空間(namespace)功能;
二、在Ubuntu環境下安裝Docker
  注:建議切換到管理員下邊,在終端下輸入su命令和密碼即可。
  1.環境檢測

    在終端下輸入:uname -a命令,可以檢測核心版本:


    檢查Device Mapper,在終端下輸入:ls -l /sys/class/misc/device-mapper,可以檢測Device Mapper:


    如果沒有開啟的話,可以嘗試載入dm_mod模組:
      sudo modprobe dm_mod
2.安裝Docker
    首先要新增Docker的APT倉庫,期間可能會提示我們確認新增倉庫並自動將倉庫的GPG公鑰新增到宿主機中:
      sudo sh -c "echo deb https://apt.dockerproject.org/repo ubuntu-xenial main > /etc/apt/sources.list.d/docker.list"
    這裡的xenial指的是Ubuntu16.04的發行版本名,如果式Ubuntu14.04則是trusty。
    檢查curl命令是否安裝:
      sudo lsb-release --codename | cut -f2


    接下來,新增Docker倉庫的GPG金鑰:

      sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
    之後需要更新APT源:
      sudo apt-get update
    現在可以安裝Docker軟體包了:

      sudo apt-get install docker-engine


    安裝完畢後,輸入sudo docker info命令進行確認:


三、Docker守護程序 
   
    安裝完docker後,需要確認Docker的守護程序是否執行,Docker以Root許可權來執行它的守護程序,來處理普通使用者無法完成的操作(如掛載檔案系統)。docker程式是Docker守護程序的客戶端程式,同樣也需要以root身份執行。使用者可以使用docker daemon命令控制Docker守護程序。
    當Docker軟體包安裝完畢後,預設會立即啟動Docker守護程序,守護程序監聽/var/run/docker.sock這個Unix套接字檔案,來獲取來自客戶端的Docker請求。如果系統中存在名為docker的使用者組,Docker會將該套接字檔案所有者設為該使用者組,docker使用者組以後可以直接執行docker而不用sudo命令。儘管docker使用者組方便了使用,但這是一個安全隱患,因為docker使用者組對Docker和root具有相同的許可權。
    配置Docker的守護程序
      執行Docker守護程序時,可以用-H標誌調整守護程序繫結監聽介面的方式。
    可以使用-H標誌指定不同的網路介面和埠配置,命令如下:
      sudo docker daemon -H tcp://0.0.0.0:2375
    檢查Docker守護程序是否執行:
        systemctl status docker
    開啟/關閉docker服務:
        sudo service docker start
        sudo service docker stop
        或者:
        systemctl start docker
        systemctl stop docker
    Docker服務的開機自啟動設定:
        systemctl enable docker
        systemctl disable docker
四、Docker的常用命令
  1.新建容器
    sudo docker run --name container -i -t ubuntu /bin/bash
    建立一個以ubuntu映象為基礎的容器,如果ubuntu映象不存在的話,會連線官方維護的Docker Hub Registry來拉取映象,這裡建議使用DaoCloud的Docker加速器,因為網路的原因,Docker Hub經常無法拉取。
    -i:保證容器中STDIN是開啟的,儘管我們沒有附著到容器中,持久的標準輸入是互動式shell的重要依賴;
    -t:為建立的Docker容器分配一個偽tty終端,這樣才能提供一個互動式shell;
    Docker在檔案系統內部用映象建立了一個新容器,該容器擁有自己的網路和IP地址,以及一個用來和宿主機進行通訊的橋接網路介面。這個命令的最後要告訴Docker在新容器中要執行什麼命令,這裡我們運行了/bin/bash命令啟動了一個Bash Shell。

  2.可以在容器中輸入一些命令,使用一下,比如hostname、cat /etc/hosts、ip a、ps -aux等:


  3.啟動已經停止或者開啟容器:
    sudo docker start bob_the_container
    sudo docker stop bob_the_container
  docker stop會向Dokcer容器程序傳送SIGTERM訊號,如果想快速停止容器,也可以使用docker kill命令來向容器程序傳送SIGKILL訊號。
  4.刪除容器:
      sudo docker rm bob_the_container
    將當前會話附著到容器上:
      sudo docker attach bob_the_container
      注意:可能需要再按一次回車
    檢視正在執行的容器:
      docker ps
    檢視最後x個容器:
      docker ps -n x
    獲取容器資訊:
      sudo docker inspect dameon_dave
    檢視容器內的程序:
      sudo docker top dameon_dave
    檢視容器的統計資訊:
      sudo docker stats dameon_dave
    檢視著機上可用的Docker映象
      sudo docker images
  5.建立守護式容器(daemonized container):
    守護式容器常用於執行不需要互動介面的,沒有互動式會話,非常適合執行應用程式和服務:
      sudo docker run --name daemon_con -d ubuntu /bin/sh -c "while true; do echo hello world; sleep 1; done"
    這個容器會一直再輸出hello world
    獲取守護式容器的日誌:
      sudo docker logs daemon_con
    這裡docker會輸出項並返回,如果需要跟蹤守護式容器的日誌,需要如下命令:
      sudo docker logs -f daemon_con
      sudo docker logs -ft daemon_con(這個命令可以為每個日誌加上時間戳)