Rumah > Operasi dan penyelenggaraan > Docker > Apakah perbezaan antara arg dan env dalam docker

Apakah perbezaan antara arg dan env dalam docker

WBOY
Lepaskan: 2022-01-28 10:40:20
asal
6665 orang telah melayarinya

Perbezaan antara arg dan env dalam docker ialah: arg wujud semasa binaan dan boleh digunakan sebagai pembolehubah dalam Dockerfile, manakala env ialah pembolehubah persekitaran selepas bekas dibina dan tidak boleh digunakan sebagai parameter dalam penggunaan Dockerfile.

Apakah perbezaan antara arg dan env dalam docker

Persekitaran pengendalian tutorial ini: sistem linux7.3, versi docker-1.13.1, komputer Dell G3.

Apakah perbezaan antara arg dan env dalam docker?

Apabila anda menggunakan docker-compoe untuk membina imej, anda akan merasakan bahawa fungsi ARG dan ENV adalah sangat serupa, tetapi ini dua kewujudan pasti mempunyai kelebihan tersendiri

Masa kesannya

  • arg wujud semasa binaan dan boleh digunakan sebagai pembolehubah dalam Dockerfile

  • env ialah pembolehubah persekitaran selepas bekas itu dibina. Ia tidak boleh digunakan sebagai parameter dalam fail Docker

Dari sini anda boleh melihat bahawa ARG adalah khas. direka untuk membina imej

Ambil contoh khusus

# 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\""]
Salin selepas log masuk

Ini adalah fail untuk membina redis Terdapat ayat sedemikian di tengah

ARG REDIS_SET_PASSWORD=developer
ENV REDIS_PASSWORD ${REDIS_SET_PASSWORD}
Salin selepas log masuk

Ia untuk

CMD ["sh", "-c", "exec redis-server --requirepass \"$REDIS_PASSWORD\""]
Salin selepas log masuk

Ayat perkhidmatan A ini, ayat ini adalah untuk menetapkan kata laluan apabila memulakan redis, kerana apabila CMD dilaksanakan, ia bermakna bekas telah berjaya dibina dan dijalankan Pada masa ini, CMD dilaksanakan arahan dalam bekas dalam bekas, jadi pembolehubah dalam CMD ialah Pembolehubah persekitaran digunakan dan bukannya pembolehubah dalam Dockerfile, jadi nilai dalam ARG perlu diberikan kepada ENV semasa membina

Contoh lain menggunakan 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
Salin selepas log masuk

Ini hanyalah 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
Salin selepas log masuk

Pembolehubah di sini menggunakan ARG dan bukannya ENV, kerana arahan ini dijalankan dalam fail Docker. Tidak perlu menyimpan nilai pembolehubah persekitaran untuk pembolehubah yang digunakan sementara seperti ini Sangat sesuai untuk menggunakan ARG

Pembelajaran yang disyorkan: "tutorial video docker"

Atas ialah kandungan terperinci Apakah perbezaan antara arg dan env dalam docker. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan