>운영 및 유지보수 >Docker >docker에서 arg와 env의 차이점은 무엇입니까

docker에서 arg와 env의 차이점은 무엇입니까

WBOY
WBOY원래의
2022-01-28 10:40:206662검색

Docker에서 arg와 env의 차이점은 다음과 같습니다. arg는 빌드 중에 존재하며 Dockerfile에서 변수로 사용할 수 있는 반면, env는 컨테이너가 빌드된 후 환경 변수이므로 Dockerfile에서 매개 변수로 사용할 수 없습니다.

docker에서 arg와 env의 차이점은 무엇입니까

이 튜토리얼의 운영 환경: linux7.3 시스템, docker-1.13.1 버전, Dell G3 컴퓨터.

docker에서 arg와 env의 차이점은 무엇인가요?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.