Docker常用指令與操作
忘記指令就回來看一下

Docker常用操作

官方 https://docs.docker.com/engine/reference/run/

容器運行前

  • 抓映像
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可用的編碼

  • 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

建議作法

  • 用WSL2 Ubuntu當橋樑,開個terminal進到WSL虛擬機,再用linux下指令,這樣操作就都跟最常見的範例一樣
  • 要存取對應的檔案也很簡單,現在WSL2都支援直接GUI操作了(但要用win11)
  • 退一步可以用圖形化操作介面(X server)之類,也是非常快速便捷
  • 還有一招是VS code的remote插件,也很好用

上次修改於 2021-09-30