Docker常用指令與操作
忘記指令就回來看一下
Docker常用操作
容器運行前
- 抓映像
docker pull xxx
容器運行中
- 檢視運行中的容器
docker ps
- 停止容器
- 啟動換成
start
- 重啟換成
restart
- 強殺換成
kill
- 啟動換成
docker stop 容器名或ID
- 批次全部重啟
- 這個在windows docker也有效,特別適合自己練習專案用
awk '{ print $1}'
那種在windows就不行
docker restart $(docker ps -a -q)
- 刪除容器
docker rm -f 容器名或ID
- 檢視運行狀態(CPU、記憶體、I/O占用等等)
docker stats -a
- 顯示運行日誌
docker logs 容器名或ID
- 查看詳情
docker inspect 容器名或ID
- 更新運行參數
docker update --restart=always 容器名或ID
- 進入 Container
-i
:即使沒有附加也保持STDIN 打開-t
:分配一個偽終端
docker exec -it <container_id> /bin/bash
容器內
-
就是進到
/bin/sh
之下,有個$
符號的狀態 -
locale
顯示container內的編碼 -
locale -a
顯示container可用的編碼- 通常會選用
C.UTF-8
,但是沒特別設定過的就會是Linux預設POSIX
- 修改方法: https://ubuntuqa.com/zh-tw/article/9876.html
- 通常會選用
-
ls
秀出當前目錄內檔案與資料夾 -
cd
前往某資料夾
複製檔案
- 從Host丟進容器
docker cp /path1宿主路徑 容器名或ID:/path2容器路徑
- 從容器中搬檔案出來
docker cp 容器名或ID:/path/to/folder /path2宿主路徑/
- 注意操作就如同Linux 系統的
cp -a
,路徑可以是檔案也可以是資料夾,結尾加不加/
會決定是要放到XX
還是XX之下
docker-desktop
UI中的Volumes實際路徑,可以用瀏覽器訪問
\\wsl$\docker-desktop-data\version-pack-data\community\docker\volumes\
而在WSL2中的/mnt/wsl只是暫時的,如果要連接
在windows的cmd中執行
net use h: \\wsl$\docker-desktop-data
在WSL2 Ubuntu中執行
sudo mkdir /mnt/wsl2
sudo mount -t drvfs h: /mnt/wsl2
掛載相關
- 範例: 掛載到window下的某個路徑
docker run -d -p 8082:80 --name nginx -v G:/docker/nginx:/usr/share/nginx -v
-
但是這樣效率低,有時候還會因為windows跟linux編碼問題(例如檔頭、換行、空白權限之類的)出錯
建議作法
- 用WSL2 Ubuntu當橋樑,開個terminal進到WSL虛擬機,再用linux下指令,這樣操作就都跟最常見的範例一樣
- 要存取對應的檔案也很簡單,現在WSL2都支援直接GUI操作了(但要用win11)
- 退一步可以用圖形化操作介面(X server)之類,也是非常快速便捷
- 還有一招是VS code的remote插件,也很好用
上次修改於 2021-09-30