Docker
安裝
參考資料:
https://marcus116.blogspot.com/2019/01/docker-docker-for-windows.html
issue
virtualization-must-be-enabled
以系統管理員執行 + 重開電腦
https://blog.csdn.net/mythest/article/details/92999646
基本指令
查看Image與Container
停止+刪除container
刪除可加上-f,強制刪除
搜尋image
ubuntu為關鍵字,is-official=true 表示要搜尋是官方的 Docker image
下載image
刪除image
啟動container
直接啟動,會自動給name,若沒有image會自動去下載
--name
image記得放在最後
-it
讓標準輸入維持在打開的狀態 + 替Container配置一個虛擬的終端機
啟動後會進入終端機畫面
-d
讓Container進入背景執行
-p
可以將主機的Port綁定到Container的Port,格式為host_port:container_port
把主機上的8080連接埠綁定Container的80連接埠,所以可從主機使用127.0.0.1:port或ip:port連線至container的埠口
-v
掛載目錄,其格式為host_volume:container_volume
冒號前面是本機的目錄位置,冒號後面則是Container中的路徑(必需是絕對路徑)
範例二表示將Container內的/var/www/html資料夾路徑與外部 C:/Uesrs/Amin/www資料夾路徑相連,這樣可讓外部的檔案可直接與Container內部進行共同存取。
--rm
Container執行結束(exit)之後會自動被移除,移除後不會顯示在docker ps -a
--restart=always
如果 container 遇到例外的情況被 stop 掉,例如是重新開機,docker 會試著重新啟動此 container
http://white5168.blogspot.com/2016/05/windowsdocker.html#.XnM4pKgzaUm
https://ithelp.ithome.com.tw/articles/10191634
推薦:
https://www.jinnsblog.com/2018/10/docker-container-command.html
container狀態
查詢狀態
啟動成功 ==> Up
停止 ==> Exited (0)
進入/離開container
進入container
已經啟動的container才能使用exec進入
啟動然後直接進入container
離開container
若以-ia進入,使用exit離開時container 會被關閉,status會變成 Exited(0)
若以exec進入,exit後狀態為Up
放置背景執行
可用鍵盤指令,container可維持在「Up」
再次回到背景執行的container
start/stop container
停止,狀態變成「Exited (0)」
啟動,狀態變成「Up」
啟動然後直接進入container
網路
查看網路設定
docker run會預設將建立的container放到"bridge"
查看bridge詳細資料
可以看到container所使用的網段
查詢container所使用的ip,container_name可變更
新增網段
將container設定至新網段
若container已建立,需要更新網段
斷開原本的bridge網段
https://dotblogs.com.tw/swater111/2017/01/03/171042
針對已啟用 docker container 修改 Port
https://roy051023.github.io/2018/01/15/Running-Docker-Change-Port/
docker-machine
https://www.runoob.com/docker/docker-machine.html
操作範例
啟動container範例 (mysql),若沒有image沒有則會直接下載
container名稱 = mysql579
root密碼 = Nosecret
版本 = 5.7.9
啟動後無法從windows連線至mysql579
加上-p 指令是要把container的某個port發佈到host主機上,
例如 -p 3306:3306 就是要把container 上的3306埠發佈在host的3306埠上
此就可以藉由windows的3306連線至container的3306了~
要進入mysql579的mysql指令系統, 可以用一個新指令 docker exec
這個指令的意思是想執行(execute) mysql579這個container裡的mysql指令, -it是互動模式的意思
https://dotblogs.com.tw/swater111/2016/12/29/151738
Linux套件
若要使用netstat
若要使用ping
Windows Container
https://skychang.github.io/2017/01/06/Docker-Docker_for_Windows_10_First/
Last updated