Docker
Remove Docker Images, Containers, and Volumes
Purging All Unused or Dangling Images, Containers, Volumes, and Networks
# all & force
docker system prune -afRemove one or more specific images
# images
docker images -a
# remove image
docker rmi Image ImageRemoving Containers
# containers
docker ps -a
# remove containers
docker rm ID_or_Name ID_or_NameRemove all exited containers
Removing Volumes
daemon.json 的作用
docker 安裝後預設沒有 daemon.json 這個配置檔案,需要進行手動建立。配置檔案的預設路徑:/etc/docker/daemon.json
修改容器的 DNS 伺服器
檢視容器的 dns 解析設定檔案,也可以檢查 docker 執行環境 DNS
docker run busybox:latest cat /etc/resolv.conf
為容器 mybusybox 執行手動設定一個 dns 伺服器,並檢查是否生效
docker run --dns 10.0.0.2 --name mybusybox busybox:latest cat /etc/resolv.conf
定製化容器執行環境的 dns 伺服器,在 Host OS 上編輯下面檔案,增加 dns 伺服器,並重啟 docker 服務。
cat /etc/docker/daemon.json
重啟服務
sudo service docker restart
複製容器內資料
載入 volume
使用 root 身分
host.docker.internal - 宿主
gateway.docker.internal - 網路閘道
可以透過名為 docker0 的預設橋接器網路介面自容器內存取宿主
或是使用 172.17.0.1
Docker-compose
預設會抓 docker-compose.yml 根目錄下的 .env
也可以使用 .env.dev, .env.prod 等等檔案,然後使用 --env-file .env.dev 來選取
可以使用 docker-compose config 來輸出結果
docker-compose up 啟動容器超時錯誤:ERROR: An HTTP request took too long to complete. Retry with --verbose to obtain debug information.
免下 sudo
建置多架構的映像檔
https://github.com/docker/buildx
如何在 docker-compose.yml 中支持相同的 docker build 命令?
docker-compose.yml 中支持相同的 docker build 命令?對於代碼信息來說,您的情況需要略微調整 docker-compose.yml 配置以模仿相同行為。以下是基於您提供的指令對 docker-compose.yml 文件的配置示例:
修改後的 docker-compose.yml 示例
docker-compose.yml 示例逐個部分解釋:
build.context這相當於
docker build .中的.,表示 Docker build 的上下文是當前工作目錄(.)。上下文目錄內的所有文件(包括
docker/資料夾)都會被 Docker daemon 用於建構映像。
build.dockerfile使用
docker/Dockerfile,這相當於您在docker build命令中使用的-f docker/Dockerfile。
build.target使用多階段構建
--target gitlab_webhook,這裡指定構建目標為您在 Dockerfile 中定義的gitlab_webhook階段。
image這指定了構建的映像名稱為
gitlab_pr_agent,等同於-t gitlab_pr_agent。
ports這是一個額外配置,將容器內的端口
3000暴露到主機上的端口3000。
執行指令
在配置好 docker-compose.yml 後,可以使用以下指令來執行服務:
這會同時進行構建和運行,--build 確保在啟動之前重新構建映像。
注意事項:
目錄結構須正確: 如果您傳入的
context和dockerfile路徑無法對應正確的檔案,docker-compose會出現錯誤。假設目錄結構如下:docker-compose.yml中的context: .是project/,dockerfile必須相對於context。多階段構建 (
--target) 要求的特定目標: 在您的Dockerfile中應該有類似以下的多階段構建:gitlab_webhook是一個特定的構建階段名稱,這需要在 Dockerfile 中作為標籤定義。如果不存在,您會遇到Unknown target stage的錯誤。手動構建/測試
docker-compose up的過程: 若您在測試執行時仍然遇到錯誤,這裡有一些診斷指令:測試手動構建的效果是否正常(確認
--target是否正確):查看構建過程的詳細日誌,以排除錯誤:
Last updated