製作docker映象
阿新 • • 發佈:2021-01-19
編寫Dockerfile
# 使用哪個映象為基礎 FROM nginx # 安裝apt-get後清理垃圾檔案 RUN apt-get update && apt-get install -y curl && rm -rf /var/lib/apt/lists/* # 複製檔案 COPY index.html /usr/share/nginx/html/index.html # 宣告這個容器對外使用的埠 EXPOSE 80 443 # 開啟健康檢查 HEALTHCHECK --interval=5s --timeout=3s \ CMD curl -fs http://localhost/ || exit 1 # 新增作者資訊(鍵值對) LABEL maintainer="liuyalong" LABEL documentation="https://baidu.com"
編寫忽略檔案.dockerignore
build的時候,會忽略的檔案,不會copy到映象中
.git/
node_modules/
*.bak
test*/
test*
執行
-
使用
docker build -t mynginx:v1 .
建立映象-t name:tag
給這個映象打個標籤xxx.
最後有個點,指定映象的上下文為當前的目錄路徑,相當於指定了根目錄路徑,在Dockerfile
中的路徑就以此路徑為根路徑
-
使用
docker images
檢視所有映象 -
使用
docker inspect imageidxxxx
可以檢視到映象的詳細資訊 -
使用
docker run -itd -p 80:80 --name mynginx mynginx:v1
-
使用
docker container ls
檢視所有啟動的容器 -
使用
docker rm xxx
刪除容器 -
使用
docker rmi xxx
刪除映象,必須先停止容器才可以刪除
注意事項
docker build
預設找名字為Dockerfile
的檔案,忽略檔案找.dockerignore
FROM
的映象選最小的Dockerfile
中每一個指令都會建立一層,在其上執行這些命令,執行結束後,commit
這一層的修改RUN
執行多個命令用&&連線,應保證層級最少,把不經常變化的層級放到最前面,這樣可以最大程度使用映象快取,因為當某一層改變後,之後的幾層就需要重新在這層的基礎上構建.EXPOSE
只是宣告使用哪些埠,具體使用不受這個影響,通過-p
命令指定內外埠RUN
命令是在打包成映象的時候就執行了CMD
和ENTRYPOINT
區別可以看這個文章