由於Docker引擎的守護進程使用的是Linux的內核,所以需要借用虛擬機。
windows下docker的安裝還分爲win10專業版(支持Hyper-V)和非win10專業版(不支持Hyper-V)兩種。
Hyper-V查看方法:控制面板->程序和功能->啓用或關閉windows功能->是否有Hyper-V功能。
如果支持Hyper-V,勾選,應該是直接去官方下載安裝包安裝即可。
我電腦本身是win8,升級後爲win10家庭版,也不支持Hyper-V,需要虛擬機。docker toolbox包含了這一系列工具,所以我介紹的是docker toolbox的方法。
一、下載docker toolbox
進入http://mirrors.aliyun.com/docker-toolbox/windows/docker-toolbox/下載最新版本並進入安裝。
默認即可,安裝完成後,桌面生成3個圖標。
- Docker QuickStart shell 這是一個已經配置好Docker的命令行環境
- Oracle VM Virtualbox 虛擬機軟件(其實和VMware一樣,如果你用過的話)
- Kitematic. 這是Docker的GUI版本 (這個如果不需要,安裝時可取消勾選)
二、啓動
點擊 Docker QuickStart 圖標來啓動 Docker Toolbox 終端,第一次啓動會比較慢,耐心等待…
終於出現可愛的小鯨魚,安裝成功啦。
這裏生成了IP 192.168.99.100記住。
三、使用Xshell連接(可忽略)
爲什麼使用shell呢?因爲我就是想少一個圖標。對,Xshell是我常用的,既然能代替Docker QuickStart shell,我就可以刪除這個圖標了。包括我電腦原來的VMware,既然有Oracle VM Virtualbox 了而且是開源的,那我考慮替代一下。上文的Kitematic我也未安裝。
Xshell創建連接,主機IP 192.168.99.100,默認用戶名docker,密碼tcuser。
之後再啓動或者關閉,通過Oracle VM Virtualbox即可。
需要注意的是,爲了不生成窗口,啓動時使用“無界面啓動”,此選項不顯示啓動過程,我電腦要等待1分鐘,再連接Xshell
四、鏡像命令
命令 | 功能 |
---|---|
docker search 【鏡像名】 | 搜索相關鏡像 |
docker pull 【鏡像名】 | 載入鏡像,自動生成倉庫 |
docker images | 查看本地所有鏡像 |
docker tag 【鏡像ID】【倉庫:新標籤名】 | 爲鏡像添加一個新的標籤 |
docker rmi $(docker images -q) | 刪除本地所有鏡像 |
五、容器命令
命令 | 功能 |
---|---|
docker run 【鏡像】【腳本】 | 生成容器並運行腳本 |
-d | 後臺運行 |
-P | 容器內部端口隨機映射到主機的高端口 |
-p 5001:5000 | 容器內部端口綁定到指定的主機端口 |
--name mytest | 命名爲mytest |
docker ps | 查看正在運行的容器 |
docker ps -a | 查看所有容器 |
docker ps -l | 查詢最後一次創建的容器 |
docker stop 【容器名|容器ID】 | 停止容器 |
docker stop $(docker ps) | 停止所有容器 |
docker start 【容器名|容器ID】 | 啓動容器 |
docker restart 【容器名|容器ID】 | 重啓指定容器 |
docker rm 【容器名|容器ID】 | 移除停止的容器 |
docker rm $(docker ps -a) | 移除容器 |
docker port 【容器名|容器ID】 | 查看端口 |
docker logs 【容器名|容器ID】 | 查看日誌 |
docker top 【容器名|容器ID】 | 查看容器內部運行的進程 |
docker exec -it 【容器名|容器ID】 /bin/bash | 進入容器內 |
docker commit -m=“說明” -a=“作者” 【容器名|容器ID】【倉庫:標籤】 | 從容器創建一個新的鏡像 |
六、例
docker pull training/webapp
拉取測試鏡像
docker images
查看鏡像
docker run -d -p 5001:5000 --name mytest training/webapp python app.py
運行容器
docker ps
查看運行的容器
CONTAINER ID爲“容器ID”
NAMES爲“容器名”
操作時使用容器名更方便,因爲容器名可以自定義而且可以被Tab鍵自動補全,而容器ID不能被Tab自動補全。