docker における arg と env の違いは次のとおりです。arg はビルド中に存在し、Dockerfile の変数として使用できますが、env はコンテナーのビルド後の環境変数であり、コンテナーのパラメーターとして使用できません。 Dockerfileの使用。
このチュートリアルの動作環境: linux7.3 システム、docker-1.13.1 バージョン、Dell G3 コンピューター。
docker-compoe を使用してイメージを構築すると、ARG と ENV の機能は非常に似ているように感じますが、これら 2 つは理由
効果のタイミング
arg はビルド中に存在し、Dockerfile 内の変数として使用できます
env はコンテナ構築後の環境変数であり、Dockerfile のパラメータとして使用することはできません。
ここから、ARG が特別であることがわかります。イメージを構築するために設計された
具体的な例を見てみましょう
# Dockerfile FROM redis:3.2-alpine LABEL maintainer="GPF <5173180@qq.com>" ARG REDIS_SET_PASSWORD=developer ENV REDIS_PASSWORD ${REDIS_SET_PASSWORD} VOLUME /data EXPOSE 6379 CMD ["sh", "-c", "exec redis-server --requirepass \"$REDIS_PASSWORD\""]
これはredisを構築するためのファイルで、真ん中にこのような文があります
#ARG REDIS_SET_PASSWORD=developer ENV REDIS_PASSWORD ${REDIS_SET_PASSWORD}
文を提供します
CMD ["sh", "-c", "exec redis-server --requirepass \"$REDIS_PASSWORD\""]
. この文 Redis起動時にパスワードが設定されるのは、CMDが実行されると、コンテナが正常に構築され、実行されたことを意味するためです このとき、CMDはコンテナ内のコマンドをコンテナ内で実行するので、 CMD の変数は Dockerfile 内の変数ではなく環境変数であるため、ARG の値は構築中に ENV に割り当てる必要があります
ARG を使用する別の例
FROM nginx:1.13.1-alpine LABEL maintainer="GPF <5173180@qq.com>" #https://yeasy.gitbooks.io/docker_practice/content/image/build.html RUN mkdir -p /etc/nginx/cert \ && mkdir -p /etc/nginx/conf.d \ && mkdir -p /etc/nginx/sites COPY ./nginx.conf /etc/ngixn/nginx.conf COPY ./conf.d/ /etc/nginx/conf.d/ COPY ./cert/ /etc/nginx/cert/ COPY ./sites /etc/nginx/sites/ ARG PHP_UPSTREAM_CONTAINER=php-fpm ARG PHP_UPSTREAM_PORT=9000 RUN echo "upstream php-upstream { server ${PHP_UPSTREAM_CONTAINER}:${PHP_UPSTREAM_PORT}; }" > /etc/nginx/conf.d/upstream.conf VOLUME ["/var/log/nginx", "/var/www"] WORKDIR /usr/share/nginx/html
ここでは ARG を使用するだけです
ARG PHP_UPSTREAM_CONTAINER=php-fpm ARG PHP_UPSTREAM_PORT=9000 RUN echo "upstream php-upstream { server ${PHP_UPSTREAM_CONTAINER}:${PHP_UPSTREAM_PORT}; }" > /etc/nginx/conf.d/upstream.conf
このコマンドは Dockerfile で実行されるため、ここでの変数は ENV ではなく ARG です。環境変数の値を保存する必要がなく、変数を一時的に使用する場合は ARG を使用するのが適しています。
推奨される学習: 「docker ビデオ チュートリアル 」
以上がdocker の arg と env の違いは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。