學習資料:
Docker 的安裝#
Centos 安裝 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"]
}