Docker에서 arg와 env의 차이점은 다음과 같습니다. arg는 빌드 중에 존재하며 Dockerfile에서 변수로 사용할 수 있는 반면, env는 컨테이너가 빌드된 후 환경 변수이므로 Dockerfile에서 매개 변수로 사용할 수 없습니다.
이 튜토리얼의 운영 환경: linux7.3 시스템, docker-1.13.1 버전, Dell G3 컴퓨터.
docker-compoe를 사용하여 이미지를 빌드해보면 ARG와 ENV의 기능이 매우 유사하다고 느끼실 수 있지만 이 두 가지 존재에는 분명 이유가 있을 것입니다
효과의 타이밍
arg은 빌드 중에 존재하며 Dockerfile에서 변수로 사용할 수 있습니다.
env는 컨테이너가 빌드된 후 환경 변수로 사용할 수 없습니다. 여기에서 볼 수 있습니다. 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}
라는 문장이 있습니다. 이 문장은 Redis를 시작할 때 비밀번호를 설정하세요. CMD가 실행되면 컨테이너가 성공적으로 빌드 및 실행되었음을 의미하기 때문에 CMD는 컨테이너 내에서 명령을 실행하므로 CMD의 변수는 다음과 같습니다. Dockerfile의 변수가 아닌 환경 변수이므로 생성 중에 ARG의 값을 ENV에 할당해야 합니다
ARG를 사용하는 또 다른 예
CMD ["sh", "-c", "exec redis-server --requirepass \"$REDIS_PASSWORD\""]
여기에서는 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를 사용합니다. ENV, 이 명령은 Dockerfile에서 실행되기 때문에 이렇게 임시로 사용되는 변수에 대해서는 환경변수 값을 저장할 필요가 없습니다. ARG를 사용하는 것이 매우 적합합니다
추천 학습: "
docker video tutorial"
위 내용은 docker에서 arg와 env의 차이점은 무엇입니까의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!