目錄
環境準備
系統版本
開啟虛拟化(VT)
啟用Hyper-V功能
下載下傳 Docker-for-windows
檢查是否成功
配置Docker
切換國内鏡像
存儲位置
Docker基礎指令
使用示例
docker 部署nginx
使用docker Compose部署jar啟動項目
編寫docker-compose.yml檔案
啟動運作
運作情況
docker run指令運作以及參數詳解
環境準備
系統版本
64位Windows 10 Pro,專業版、企業版和教育版(1607紀念更新,版本14393或更高版本)上
如果版本不滿足請安裝Docker Toolbox,自行網上百度,參考連結:http://blog.csdn.net/tina_ttl/article/details/51372604
開啟虛拟化(VT)
進入任務管理器(ctrl+alt+delete),點選性能->cpu ,檢視虛拟化是否已啟用,如果虛拟化是已禁用,那麼你需要重新開機電腦進入bios開啟虛拟化(自行百度自己電腦開啟虛拟化方法)
啟用Hyper-V功能
進入電腦的控制台->程式->啟用或關閉Windows功能->把Hyper-v勾上,啟用後電腦會重新開機,後面就可以下載下傳并安裝Docker for Windows
下載下傳 Docker-for-windows
推薦下穩定版
https://hub.docker.com/editions/community/docker-ce-desktop-windows/
下載下傳完成後,直接點選安裝就可以,安裝成功後右下角工作列會有一個小鲸魚的圖示
檢查是否成功
檢查Docker,Compose的版本
檢查版本資訊,并確定docker指令正常工作
docker ps
docker version
docker info
配置Docker
切換國内鏡像
右鍵點選鲸魚圖示,選擇Setting菜單,打開docker配置頁面,選擇Docker Engine,将内容替換成下面的:
{
"registry-mirrors":
[ "https://dockerhub.azk8s.cn",
"https://reg-mirror.qiniu.com",
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com",
"https://docker.mirrors.ustc.edu.cn" ],
"insecure-registries": [],
"debug": true,
"experimental": false
}
點選右下角“Apply& Restart” 按鈕應用并重新開機
國内鏡像替換完成了
存儲位置
修改預設Docker鏡像和虛拟機位置,C槽空間大的可以忽略此步驟
在C槽下找到如下目錄
C:\使用者\計算機名\AppData\Local
會找到一個Docker檔案夾
打開任務管理器,結束所有跟docker有關的程序
結束程序後,将Docker檔案夾剪切到其他目錄中
打開CMD,目錄切換到“C:\使用者\計算機名\AppData\Local”
然後使用軟鍊的方式将檔案夾連接配接到“C:\使用者\計算機名\AppData\Local”下
mklink /j Docker F:\DEV_FILE\docker\Docker
成功後可以看到,檔案夾下多了快捷方式的小箭頭
Docker基礎指令
容器(container)相關基礎指令
docker run ubuntu:18.04 /bin/bash #使用對應image建立container,同時進入對應bash(加上-i指定僞終端 -t允許互動)
docker exec [:containerId] /bin/bash #進入對應容器的bash
docker pull training/webapp #載入image
docker run -d -P training/webapp python app.py #運作指定container
docker run -d -p [:主機端口(預設32768)]:[:指定映射(flask預設 5000)] training/webapp python app.py #外部主機指定
docker ps #檢視已運作的container
docker ps -a #檢視所有container
docker ps -l #檢視最後一次運作的container
docker port [:id/:name] #檢視對應id/name container的端口映射
docker logs -f [:id/name] #檢視container内部标準輸出
docker top [:id/:name] #檢視container内部運作程序
docker inspect [:id/:name] #傳回container内部狀态
docker stop [:id/:name] #停止container運作
docker stop $(docker ps -a -q) #停止所有container運作
docker ps -q #列出所有container的id
docker start [:id/:name] #重新開機container,注意和run的差別。
docker rm [:id/:name] #删除container。删除container時,container必須是停止狀态,否則會報錯
docker rm $(docker ps -a -q) #删除所有container
鏡像(image)相關基礎指令
docker images #列出所有images
docker pull [:鏡像名:版本号] #拉取鏡像
docker search [:鏡像名] #搜取鏡像,例如httpd
docker run [:鏡像名] #直接使用鏡像
docker run -i -t ubuntu:18.04 /bin/bash #進入一個bash Docker參數 -i -t 的作用
docker commit -m="[:message]" -a="[:author]" [:dockerId] [package/dockerName:version] #送出容器副本
docker rmi [:imageId] #删除鏡像
docker rmi $(docker images -q) #删除所有鏡像
docker build 原理
docker inspect [:containerId/:containerName] #檢視dockerName對應資訊
docker inspect -f '{{.Id}}' [:containerId/:containerName] #從資訊JSON中取出Id
docker inspect $(docker inspect -f '{{.Id}}' containerName) #發現了docker可以像這樣組合查詢。
docker pull registry.cn-hangzhou.aliyuncs.com/kaibb/hadoop # 一個可用的hadoop容器鏡
例如: docker run -i -t --name Master -h Master -p 50070:50070 registry.cn-hangzhou.aliyuncs.com/kaibb/hadoop /bin/bash
docker常用功能插件
- Docker Dockerfile (通過腳本檔案快速建構鏡像)
- Docker Compose (定義和運作多容器 Docker 應用程式的工具)
建議自行百度學習
使用示例
docker 部署nginx
1.拉取鏡像
在拉取鏡像之前我可以搜尋一下鏡像是否存在
$ docker search nginx
這裡我們拉取官方的最新版本的鏡像:
$ docker pull nginx:latest
檢視本地鏡像
$ docker images
在上圖中可以看到我們已經安裝了最新版本(latest)的 nginx 鏡像。
2.運作容器
$ docker run --name nginx-test -p 8081:80 -d nginx
參數說明:
- --name nginx-test:容器名稱。
- -p 8081:80: 端口進行映射,将本地 8080 端口映射到容器内部的 80 端口。
- -d: 設定容器在在背景運作。
- nginx: 使用nginx鏡像
3.通路測試
最後我們可以通過浏覽器可以直接通路 8080 端口的 nginx 服務:
其他配置,例如進入容器中調整nginx配置檔案或者使用本地配置檔案映射容器中檔案,提高docker使用的便捷性,可自行百度
使用docker Compose部署jar啟動項目
windows版docker自帶docker compose 是以不用單獨安裝
編寫docker-compose.yml檔案
啟動運作
$ docker-compose up -d
運作情況
以下使用docker for desktop檢視,指令檢視運作的方式,自行百度
右鍵小鲸魚圖示,選擇Dashboard菜單
這時可以看到我們之前運作過的容器狀态
通過右側按鈕我們可以進行操作
按鈕依次是“在浏覽器打開”、“進入容器控制台”、“停止容器運作”、“重新開機容器”、“删除容器”
點選容器,可以打開檢視容器日志、運作參數、運作狀态
docker run指令運作以及參數詳解
Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
-d, --detach=false 指定容器運作于前台還是背景,預設為false
-i, --interactive=false 打開STDIN,用于控制台互動
-t, --tty=false 配置設定tty裝置,該可以支援終端登入,預設為false
-u, --user="" 指定容器的使用者
-a, --attach=[] 登入容器(必須是以docker run -d啟動的容器)
-w, --workdir="" 指定容器的工作目錄
-c, --cpu-shares=0 設定容器CPU權重,在CPU共享場景使用
-e, --env=[] 指定環境變量,容器中可以使用該環境變量
-m, --memory="" 指定容器的記憶體上限
-P, --publish-all=false 指定容器暴露的端口
-p, --publish=[] 指定容器暴露的端口
-h, --hostname="" 指定容器的主機名
-v, --volume=[] 給容器挂載存儲卷,挂載到容器的某個目錄
--volumes-from=[] 給容器挂載其他容器上的卷,挂載到容器的某個目錄
--cap-add=[] 添權重限,權限清單詳見:http://linux.die.net/man/7/capabilities
--cap-drop=[] 删除權限,權限清單詳見:http://linux.die.net/man/7/capabilities
--cidfile="" 運作容器後,在指定檔案中寫入容器PID值,一種典型的監控系統用法
--cpuset="" 設定容器可以使用哪些CPU,此參數可以用來容器獨占CPU
--device=[] 添加主機裝置給容器,相當于裝置直通
--dns=[] 指定容器的dns伺服器
--dns-search=[] 指定容器的dns搜尋域名,寫入到容器的/etc/resolv.conf檔案
--entrypoint="" 覆寫image的入口點
--env-file=[] 指定環境變量檔案,檔案格式為每行一個環境變量
--expose=[] 指定容器暴露的端口,即修改鏡像的暴露端口
--link=[] 指定容器間的關聯,使用其他容器的IP、env等資訊
--lxc-conf=[] 指定容器的配置檔案,隻有在指定--exec-driver=lxc時使用
--name="" 指定容器名字,後續可以通過名字進行容器管理,links特性需要使用名字
--net="bridge" 容器網絡設定:
bridge 使用docker daemon指定的網橋
host //容器使用主機的網絡
container:NAME_or_ID >//使用其他容器的網路,共享IP和PORT等網絡資源
none 容器使用自己的網絡(類似--net=bridge),但是不進行配置
--privileged=false 指定容器是否為特權容器,特權容器擁有所有的capabilities
--restart="no" 指定容器停止後的重新開機政策:
no:容器退出時不重新開機
on-failure:容器故障退出(傳回值非零)時重新開機
always:容器退出時總是重新開機
--rm=false 指定容器停止後自動删除容器(不支援以docker run -d啟動的容器)
--sig-proxy=true 設定由代理接受并處理信号,但是SIGCHLD、SIGSTOP和SIGKILL不能被代理