Dockerfile 可用於定義如何建立 image,使用文字檔定義建立image所需的配置,包括指定基礎映像,通常使用官方的基礎映像作為自定image的基礎映像,和使用建立好的image啟動容器時的自動執行命令、軟體安裝、檔案複製、環境變數設定等等。
使用Dockerfile 建立容器步驟如下:
在開始之前,確認系統己安裝 Docker並正在運行中
網址:https://docs.docker.com/engine/install/ubuntu/
快速安裝:
$ curl -fsSL https://get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh
確認Docker 運行狀態(Active running):
sudo systemctl status docker
sudo systemctl enable docker
sudo systemctl restart docker
mkdir my-image-project
cd my-image-project
以下是一個簡單的Dockerfile範例:
# 使用基本映像
FROM ubuntu:20.04
# 安裝必要的軟體
RUN apt-get update && apt-get install -y \
python3-pip
# 複製應用程式到容器中
COPY . /app
# 設定工作目錄
WORKDIR /app
# 執行的應用程式
CMD [ "python3", "app.py" ]
在 Dockerfile所在目錄中使用docker build指令,根據Dockerfile文件中的定義建立自己的 image。
docker build -t my-image .
這個命令表示使用當前目錄中的 Dockerfile 來建立映像。Docker 會在這個目錄中找到Dockerfile,然後根據 Dockerfile 的內容建立image。
-t 選項是用來指定image的名稱標籤的。
' . '最後的句點表示Dockerfile 所在的當前目錄。
可以使用docker history指令查看建立image的歷程
sudo docker images #image list
sudo docker history my-image
用docker run 命令,指定己建好的image運行容器。
docker run -d --name my-container my-image
這個命令會根據之前建立的 Docker image 建立一個新的container,並且在背景執行。
Dockerfile常用指令應用說明
指定基礎映像,通常會選擇一個官方的基礎映像作為自定image的基礎映像,例如這裡指定Alpine Linux作為基礎映像。
FROM alpine:3.14
在容器中定義工作目錄,這是容器中執行指令的預設目錄。例如:
WORKDIR /app
將本地文件複製到容器中,包括應用程式碼、配置文件等。
COPY . /app
指定在容器中執行命令或安裝應用程式時所需要的軟體。例如:
RUN apt-get update && apt-get install -y python3
CMD 中指定要在容器啟動時執行的命令,這是應用程式的入口點。
這裡指定用python3執行app.py程式。
CMD ["python3", "app.py"]
範例:使用Alpine Linux image,執行一個簡單的Shell script程式。
步驟 1:在存放 Dockerfile的目錄中,建立一個Shell script(script.sh)
#!/bin/bash
echo "Hello, Docker!"
步驟 2:建立Dockerfile
# 使用Alpine Linux基礎映像
FROM alpine:3.14
# 將本地的script.sh複製到容器中的/app目錄
COPY script.sh /app/
# 指定工作目錄為/app
WORKDIR /app
# 設置Shell文件的執行權限
RUN chmod +x script.sh
# 執行Shell程式
CMD ["./script.sh"]
步驟 3:建立和執行容器
docker build -t my-shell-app .
docker run my-shell-app