溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Dockerfile基礎命令有哪些

發布時間:2021-12-13 11:57:58 來源:億速云 閱讀:160 作者:iii 欄目:云計算
# Dockerfile基礎命令有哪些

Dockerfile是構建Docker鏡像的核心配置文件,通過一系列指令定義鏡像的構建過程。本文將詳細介紹最常用的15個Dockerfile命令及其實際應用場景。

## 一、核心構建指令

### 1. FROM
**作用**:指定基礎鏡像  
**示例**:
```dockerfile
FROM ubuntu:20.04
FROM python:3.9-slim

注意事項: - 必須是Dockerfile的第一個非注釋指令 - 官方推薦使用Alpine等輕量級基礎鏡像(如python:3.9-alpine

2. RUN

作用:執行shell命令
兩種格式

# Shell格式(默認在/bin/sh -c下執行)
RUN apt-get update && apt-get install -y curl

# Exec格式(推薦避免shell解析)
RUN ["/bin/bash", "-c", "echo hello"]

最佳實踐: - 合并多個RUN命令減少鏡像層數 - 使用--no-install-recommends減少不必要的安裝包

3. COPY vs ADD

COPY(推薦):

COPY ./app /usr/src/app
COPY requirements.txt /tmp/

ADD(附加功能):

ADD https://example.com/file.tar.gz /tmp/  # 支持URL下載
ADD file.tar.gz /tmp/                     # 自動解壓壓縮文件

關鍵區別: - ADD包含COPY所有功能+額外特性 - 除非需要自動解壓/遠程下載,否則建議使用COPY

二、配置指令

4. WORKDIR

作用:設置工作目錄
示例

WORKDIR /app
RUN pwd  # 輸出/app

特點: - 自動創建不存在目錄 - 影響后續RUN/CMD/ENTRYPOINT等指令的執行位置

5. ENV

作用:設置環境變量
兩種格式

ENV APP_HOME=/app
ENV PATH=$PATH:/usr/local/bin

持久化: - 在容器運行時仍可通過docker inspect查看

6. ARG

作用:構建時變量(構建后不可見)
示例

ARG VERSION=latest
FROM busybox:$VERSION

使用場景: - 配合docker build --build-arg動態傳參

三、運行時控制指令

7. CMD

作用:容器默認執行命令
三種格式

CMD ["executable","param1","param2"]  # Exec格式(推薦)
CMD command param1 param2             # Shell格式
CMD ["param1","param2"]              # 作為ENTRYPOINT參數

特點: - 可以被docker run后的命令覆蓋 - Dockerfile中只能有一個CMD(多個時最后一個生效)

8. ENTRYPOINT

作用:容器的主程序
示例

ENTRYPOINT ["top", "-b"]
CMD ["-H"]  # 作為ENTRYPOINT參數

與CMD配合

# 運行效果:top -b -H
docker run -it myimage
# 覆蓋CMD參數:top -b -C
docker run -it myimage -C

9. EXPOSE

作用:聲明監聽端口
示例

EXPOSE 80/tcp
EXPOSE 3000

注意: - 實際端口映射仍需通過docker run -p參數

四、其他實用指令

10. VOLUME

作用:定義匿名卷
示例

VOLUME ["/data"]

特點: - 避免容器存儲層數據寫入 - 可通過docker run -v覆蓋

11. USER

作用:切換執行用戶
示例

RUN groupadd -r app && useradd -r -g app app
USER app

安全建議: - 避免使用root用戶運行容器進程

12. HEALTHCHECK

作用:健康檢查
示例

HEALTHCHECK --interval=30s --timeout=3s \
  CMD curl -f http://localhost/ || exit 1

五、特殊場景指令

13. ONBUILD

作用:延遲執行命令
示例

ONBUILD COPY . /app/src  # 在子鏡像構建時觸發

典型應用: - 基礎環境鏡像的構建

14. LABEL

作用:添加元數據
示例

LABEL version="1.0"
LABEL description="Web application"

15. SHELL

作用:更改默認shell
示例

SHELL ["/bin/bash", "-c"]
RUN echo $HOME

六、綜合最佳實踐

  1. 多階段構建示例:
# 構建階段
FROM golang:1.16 AS builder
WORKDIR /app
COPY . .
RUN go build -o myapp

# 運行階段
FROM alpine:latest
COPY --from=builder /app/myapp /
CMD ["/myapp"]
  1. 緩存優化技巧
  • 將頻繁變動的指令放在Dockerfile下部
  • 合理使用.dockerignore文件
  1. 安全建議
  • 定期更新基礎鏡像
  • 最小化安裝軟件包

通過掌握這些核心指令,您可以高效地編寫生產級Dockerfile。建議結合官方文檔(https://docs.docker.com/engine/reference/builder/)進行更深入的實踐。 “`

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女