banner
AndrewTsui

AndrewTsui

Docker使用筆記

學習資料:

Docker 的安裝#

Centos 安裝 docker#

Centos7 上安裝 docker

安裝社區版
運行命令驗證安裝是否成功

docker version
# 或者
docker info

docker 是伺服器客戶端架構,命令行運行 docker 命令的時候需要本機有 docker 服務

# service 命令的用法
sudo service docker start
# systemctl 命令的用法
sudo systemctl start docker

image 文件#

**Docker 把應用程序及其依賴,打包在 image 文件裡面。** 只有通過這個文件,才能生成 Docker 容器。image 文件可以看作是容器的模板。Docker 根據 image 文件生成容器的實例。同一個 image 文件,可以生成多個同時運行的容器實例。

# 列出本機的所有 image 文件
docker image ls
# 刪除 image 文件
docker image rm imageName

簡單操作#

  • 將 image 文件從倉庫抓取到本地:docker pull hello-world
  • 運行這個 image 文件:docker container run hello-world
  • 手動終止:docker container kill [containID]

容器文件#

**image 文件生成的容器實例,本身也是一個文件,稱為容器文件。** 也就是說,一旦容器生成,就會同時存在兩個文件: image 文件和容器文件。而且關閉容器並不會刪除容器文件,只是容器停止運行而已。

  • 列出本機正在運行的容器:docker container ls
  • 列出本機所有容器,包括終止運行的容器:docker container ls -all
  • 刪除終止運行的容器文件:docker container rm [containerID]

docker 打包遇到的問題#

docker 打包過慢#

docker 使用 layer 創建鏡像,Dockerfile 中每一個命令都會創建一個新的層,每層都包含執行命令前後的狀態之間鏡像的文件系統更改。如果 Dockerfile 和相關文件未更改,則重建 (rebuild) 時可以重用本地鏡像緩存中的某些現有層。

不使用緩存打包#

docker build --no-cache -t xxxx

docker 使用中遇到的問題#

1. docker 運行 run 報錯#

docker run hello-world
/usr/bin/docker-current: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?.
See '/usr/bin/docker-current run --help'.

解決:systemctl restart docker

2. docker info 中報錯 Registry Mirrors: https://4piaafr1.mirror.aliyuncs.com/#

已經修改好了,為什麼還是顯示

=> [1/7] FROM docker.io/library/

解決辦法:
這種情況可能是由於 Docker 構建緩存導致的,Docker 在構建鏡像時會盡量使用緩存以加快構建速度。所以可能修改了鏡像源,Docker 在構建時仍然會嘗試使用之前的緩存。
清除 Docker 緩存:在進行 Docker 構建前,可以使用 --no--cache 選項來禁用緩存,強制重新下載所需的鏡像
docker build --no-cache -t your_image_name .

Mac 版 docker 的 daemon. json 在 ~/.docker 文件夾下

3. 換源#

docker 切換清華源:

{
  "registry-mirrors":["https://docker.mirrors.ustc.edu.cn"]
}
載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。