Maison > Opération et maintenance > Docker > le corps du texte

Quelle est la différence entre arg et env dans docker

WBOY
Libérer: 2022-01-28 10:40:20
original
6556 Les gens l'ont consulté

La différence entre arg et env dans docker est la suivante : arg existe pendant la construction et peut être utilisé comme variable dans le Dockerfile, tandis qu'env est une variable d'environnement après la construction du conteneur et ne peut pas être utilisé comme paramètre dans le Dockerfile.

Quelle est la différence entre arg et env dans docker

L'environnement d'exploitation de ce tutoriel : système linux7.3, version docker-1.13.1, ordinateur Dell G3.

Quelle est la différence entre arg et env dans docker ?

Lorsque vous utilisez docker-compoe pour créer une image, vous sentirez que les fonctions d'ARG et ENV sont très similaires, mais ces deux existences doivent avoir leurs raisons

Le timing de leur effet

  • arg existe lors de la construction et peut être utilisé comme variable dans le Dockerfile.

  • env est une variable d'environnement après la construction du conteneur. Elle ne peut pas être utilisée comme paramètre dans le Dockerfile. Vous pouvez le voir ici. ARG est spécialement conçu pour créer des images

  • Prenez un exemple spécifique
# 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\""]
Copier après la connexion

Il s'agit d'un fichier pour construire Redis. Il y a une telle phrase

ARG REDIS_SET_PASSWORD=developer
ENV REDIS_PASSWORD ${REDIS_SET_PASSWORD}
Copier après la connexion

Au milieu, elle sert la phrase

CMD ["sh", "-c", "exec redis-server --requirepass \"$REDIS_PASSWORD\""]
Copier après la connexion

. qui est dans Définissez le mot de passe lors du démarrage de redis, car lorsque CMD est exécuté, cela signifie que le conteneur a été construit et exécuté avec succès. À ce stade, CMD exécute les commandes dans le conteneur, donc les variables dans CMD sont l'environnement. variables plutôt que dans les variables Dockerfile dans ARG, donc la valeur dans ARG doit être attribuée à ENV pendant la construction

Un autre exemple d'utilisation d'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
Copier après la connexion

Ici, nous utilisons simplement 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
Copier après la connexion

Les variables ici utilisent ARG au lieu d'ENV. . Étant donné que cette commande s'exécute dans le Dockerfile, il n'est pas nécessaire de stocker la valeur de la variable d'environnement pour une variable utilisée temporairement comme celle-ci. Il est très approprié d'utiliser ARG

Apprentissage recommandé : "

Tutoriel vidéo Docker

".

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal