Docker 入门
Tim Sangster
Software Engineer @ DataCamp
在 Dockerfile 中创建变量
ARG <var_name>=<var_value>
例如:ARG path=/home/repl
在 Dockerfile 中使用
$path
例如:COPY /local/path $path
设置 Python 版本
FROM ubuntu
ARG python_version=3.9.7-1+bionic1
RUN apt-get install python3=$python_version
RUN apt-get install python3-dev=$python_version
配置文件夹
FROM ubuntu
ARG project_folder=/projects/pipeline_v3
COPY /local/project/files $project_folder
COPY /local/project/test_files $project_folder/tests
FROM ubuntu
ARG project_folder=/projects/pipeline_v3
COPY /local/project/files $project_folder
COPY /local/project/test_files $project_folder/tests
在构建命令中设置变量
docker build --build-arg project_folder=/repl/pipeline .
ARG 被覆盖,文件最终位于:
COPY /local/project/files /repl/pipeline
COPY /local/project/test_files /repl/pipeline/tests
在 Dockerfile 中创建变量
ENV <var_name>=<var_value>
例如:ENV DB_USER=pipeline_user
在 Dockerfile 或运行时使用
$DB_USER
例如:CMD psql -U $DB_USER
设置运行时使用的目录
ENV DATA_DIR=/usr/local/var/postgres
ENV MODE production
在运行时设置或替换变量
docker run --env <key>=<value> <image-name>
docker run --env POSTGRES_USER=test_db --env POSTGRES_PASSWORD=test_db postgres
docker history <image-name>
ARG DB_PASSWORD=example_password
将在 docker history 中显示:
IMAGE CREATED CREATED BY SIZE ...
cd338027297f 2 months ago ARG DB_PASSWORD=example_password 0B ...
| 用途 | Dockerfile 指令 |
|---|---|
| 仅在构建期间可用的变量 | ARG <name>=<value> |
| 创建环境变量 | ENV <name>=<value> |
| 用途 | Shell 命令 |
|---|---|
| 在构建时覆盖 ARG | docker build --build-arg <name>=<value> |
| 在运行时覆盖 ENV | docker run --env <name>=<value> <image-name> |
| 查看用于创建镜像的指令 | docker history <image-name> |
Docker 入门