1. 程式人生 > >Docker安裝與容器映象操作

Docker安裝與容器映象操作

1. 在Ubuntu中使用原始碼安裝Docker:進入到原始碼資料夾中

sudo apt-key add gpg
sudo dpkg -i docker-ce_17.03.2~ce-0~ubuntu-xenial_amd64.deb

檢查Docker CE是否安裝正確

sudo docker run hello-world

為了避免每次命令都輸入sudo,可以設定使用者許可權,注意執行後須登出重新登入

sudo usermod -a -G docker $USER

2. 啟動與停止

安裝完成Docker後,預設已經啟動了docker服務,如需手動控制docker服務的啟停,可執行如下命令

  • 啟動docker
sudo service docker start
  • 停止docker
sudo service docker stop
  • 重啟docker
sudo service docker restart

3. Docker映象操作

什麼是Docker映象
Docker 映象是由檔案系統疊加而成(是一種檔案的儲存形式)。最底端是一個檔案引 導系統,即 bootfs,這很像典型的 Linux/Unix 的引導檔案系統。Docker 使用者幾乎永遠不會和 引導系統有什麼互動。實際上,當一個容器啟動後,它將會被移動到記憶體中,而引導檔案系 統則會被解除安裝,以留出更多的記憶體供磁碟映象使用。Docker 容器啟動是需要一些檔案的, 而這些檔案就可以稱為 Docker 映象。

  • 列出映象
sudo docker image ls
  • 拉取映象
    Docker維護了映象倉庫,分為共有和私有兩種,共有的官方倉庫Docker Hub(https://hub.docker.com/)是最重要最常用的映象倉庫。私有倉庫(Private Registry)是開發者或者企業自建的映象儲存庫,通常用來儲存企業 內部的 Docker 映象,用於內部開發流程和產品的釋出、版本控制。

要想獲取某個映象,我們可以使用pull命令,從倉庫中拉取映象到本地,如

sudo docker image pull library/hello-world

上面程式碼中,docker image pull是抓取 image 檔案的命令。library/hello-world是 image 檔案在倉庫裡面的位置,其中library是 image 檔案所在的組,hello-world是 image 檔案的名字。
由於 Docker 官方提供的 image 檔案,都放在library組裡面,所以它的是預設組,可以省略。因此,上面的命令可以寫成下面這樣。

sudo docker image pull hello-world

刪除映象

sudo docker image rm 映象名或映象id

sudo docker image rm hello-world

4. Docker 容器操作

  • 建立容器
    sudo docker run [option] 映象名 [向啟動容器中傳入的命令]
    常用可選引數說明:
-i 表示以“互動模式”執行容器
-t 表示容器啟動後會進入其命令列。加入這兩個引數後,容器建立就能登入進去。
   即 分配一個偽終端。
--name 為建立的容器命名
-v 表示目錄對映關係(前者是宿主機目錄,後者是對映到宿主機上的目錄,
   即 宿主機目錄:容器中目錄),可以使 用多個-v 做多個目錄或檔案對映。
注意:最好做目錄對映,在宿主機上做修改,然後 共享到容器上。
-d 在run後面加上-d引數,則會建立一個守護式容器在後臺執行(這樣建立容器後
   不會自動登入容器,如果只加-i -t 兩個引數,建立後就會自動進去容器)-p 表示埠對映,前者是宿主機埠,後者是容器內的對映埠。可以使用
   多個-p 做多個埠對映
-e 為容器設定環境變數
--network=host 表示將主機的網路環境對映到容器中,容器的網路與主機相同
  • 互動式容器
    例如,建立一個互動式容器,並命名為myubuntu
sudo docker run -it --name=myubuntu ubuntu /bin/bash

在容器中可以隨意執行linux命令,就是一個ubuntu的環境,當執行exit命令退出時,該容器也隨之停止。

  • 守護式容器
    建立一個守護式容器:如果對於一個需要長期執行的容器來說,我們可以建立一個守護式容器。在容器內部exit退出時,容器也不會停止。
sudo docker run -dit --name=myubuntu2 ubuntu
  • 進入已執行的容器
sudo docker exec -it 容器名或容器id 進入後執行的第一個命令

sudo docker exec -it myubuntu2 /bin/bash
  • 檢視容器
  • 列出本機正在執行的容器
sudo docker container ls
  • 列出本機所有容器,包括已經終止執行的
sudo docker container ls --all
  • 停止與啟動容器
  • 停止一個已經在執行的容器
sudo docker container stop 容器名或容器id
  • 啟動一個已經停止的容器
sudo docker container start 容器名或容器id
  • kill掉一個已經在執行的容器
sudo docker container kill 容器名或容器id
  • 刪除容器
sudo docker container rm 容器名或容器id

5. 將容器儲存為映象

我們可以通過如下命令將容器儲存為映象

sudo docker commit 容器名 映象名

6. 映象備份與遷移

我們可以通過save命令將映象打包成檔案,拷貝給別人使用

sudo docker save -o 儲存的檔名 映象名

sudo docker save -o ./ubuntu.tar ubuntu

在拿到映象檔案後,可以通過load方法,將映象載入到本地

sudo docker load -i ./ubuntu.tar