# Docker基本觀念 ## 購買課程的筆記 https://dockertips.readthedocs.io/en/latest/ ## Image vs Container * Docker image是一个 read-only 文件 * 这个文件包含文件系统,源码,库文件,依赖,工具等一些运行application所需要的文件 * 可以理解成一个模板 * docker image具有分层的概念 * container容器 * “一个运行中的docker image” * 实质是复制image并在image最上层加上一层 read-write 的层 (称之为 container layer ,容器层) * 基于同一个image可以创建多个container  ## Docker 多階段建構 * hello.c ``` c= #include <stdio.h> void main(int argc, char *argv[]) { printf("hello %s\n", argv[argc - 1]); } ``` * 單一階段建構 ``` dockerfile= FROM gcc:9.4 COPY hello.c /src/hello.c WORKDIR /src RUN gcc --static -o hello hello.c ENTRYPOINT [ "/src/hello" ] CMD [] ``` 編譯 ``` sh= docker build . -t one-stage:v1 ``` * 多階段建構 ``` dockerfile= FROM gcc:9.4 AS builder COPY hello.c /src/hello.c WORKDIR /src RUN gcc --static -o hello hello.c FROM alpine:3.13.5 COPY --from=builder /src/hello /src/hello ENTRYPOINT [ "/src/hello" ] CMD [] ``` 編譯 ``` sh= docker build . -t two-stage:v1 ``` * 最終比對 >分階段建置提供了更好的控制和最佳化空間, >能夠產生更小、更安全、建置更快的Docker映像。 > 
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up