■ 威海職業學院 趙永華
編者按: Docker for Windows提供了一種快速啟動和運行的好方法,我們可以使用Hyper-V運行Linux容器。本文具體介紹了如何使用Docker for Windows在Windows 10中創建Linux容器。
不少系統管理員想要了解如何使用容器,Docker for Windows提供了一種快速啟動和運行的好方法。 Windows10秋季升級版內置支持Windows容器和Hyper-V容器,我們可以使用Hyper-V運行Linux容器。
本文將具體介紹如何使用Docker for Windows在Windows 10中創建Linux容器。如果要在Windows Server上執行相同的任務,則需要使用Docker企業版(Docker EE),Docker for Windows僅支持Windows 10的64位Pro和企業版。
到Docker’官網下載,網址:https://docs.docker.com/docker-for-windows/install/。
運行安裝程序并按照說明進行操作。在安裝過程中,可能需要重啟一次或兩次。如果尚未打開,則安裝程序將自動啟用Hyper-V并支持Windows容器。
在從Docker的存儲庫下載基本映像之前,您需要在歡迎屏幕上登錄Docker,網 址:https://id.docker.com/login/。
如果還沒有Docker用戶ID,可以在此處創建一個。當登錄Docker for Windows時,一定要使用Docker用戶ID而不是電子郵件地址。Docker for Windows雖然對用戶ID和電子郵件地址都會接受,但是使用電子郵件地址將無法訪問Docker存儲庫。
在創建Linux容器之前,需要從Docker的存儲庫中提取基本映像。通過以下PowerShell命令即可從存儲庫中提取最新的Ubuntu基本映像:
docker pull ubuntu
使用上面的命令將從存儲庫中提取最新的Ubuntu版本。如果要提取特定版本的Ubuntu,請使用如下所示的指定版本命令:dockerpullubuntu:18.04
如果要在存儲庫中搜索Ubuntu映像,可使用如下搜索命令:
docker search ubuntu
通過以下命令可列出本地機的可用映像,包括大小、ID和標記信息:
docker images
要創建新的Linux容器,我們需要基本映像的ID運行“docker run”命令。 筆者在下面的命令中,在本地存儲庫中使用了最新版Ubuntu的映像ID,并且一旦容器啟動,bash終端就會啟動:
dockerrun-i-tcd6d8154f1e1 /bin/bash
上述命令中,-i和-t參數允許bash進程在容器中啟動,將控制臺附加到進程的標準輸入、輸出和標準錯誤,并分配偽tty純文本控制臺。
創建容器后,我們會看到一個bash提示符,鍵入主機名hostname后可查看容器的Linux主機名。這里我們可以通過exit命令隨時停止容器。退出容器會阻止其運行。
值得指出的是,docker create類似于docker run,但docker create命令在映像上創建一個可寫容器層,并準備運行用戶指定的命令。容器未啟動。docker create命令適用于用戶想要提前設置容器并準備好使用docker start的情況。
我們可以使用“docker ps”命令列出本地設備上的容器,如果加上參數“-all”則可以列出所有容器,無論它們是否正在運行。 如果省略-all參數,則docker ps僅顯示正在運行的容器,我們可以在輸出中看到列出的容器和映像ID。
docker ps -all
如果想要退出容器重新啟動它,可使用“docker start”命令,但此時需要輸入和容器的ID,命令如下:
dockerstartdf75aa301d62
如果要連接到容器終端,可使用“docker attach”命令如下:
dockerattachdf75aa301d62
我們可以通過正在運行的容器創建一個新的本地映像,我們可以從中創建新的容器。比如,以下命令將在容器中安裝vim文本編輯器,然后停止容器。為此,在容器中運行以下三個命令:
apt-get update
apt-get install vim
exit
現在,我們使用docker commit從容器中創建新圖像。此時需要指定容器的ID和圖像名稱,可以覆蓋現有圖像或創建新圖像。
這里的例子是,筆者創建一個名為Ubuntu的新圖像,其中包含一個標記(18.04vim)來幫助識別它,命令如下:
dockercommitdf75aa301d62 ubuntu:18.04vim
最后,我們再次運行docker images命令,就會在列表中看到新圖像。這樣我們就可以使用此映像創建包含vim文本編輯器的Linux容器(如圖1所示)。

圖1 由容器生成映像