07_指令ENV和VOLUME玩法:80分钟一口气学完docker+k8s!带你掌握docker+k8s所有核心知识点,全程干货,无废话!

本文介绍了Docker中ARG和ENV指令在设置环境变量的应用,指出ENV在构建和运行时都有效,而ARG仅限于构建。还讨论了如何通过Dockerfile中的VOLUME指定挂载点以及在运行时使用-dockerrun-v挂载目录来管理容器数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ARG和ENV指令

设置环境变量:

 容器1:nginx

容器2:php-fpm

容器3:mysql

Dockerfile脚本、Shell脚本
ENV NAME="jinshuji"
ENV age="18"
ENV MYSQL_VERSION=5.6
后去取值操作,可以直接用$NAME获取变量值,维护docfiler脚本的时候更友好,更方便!

ENV定义的所有变量可以被其他任何关键字(ADD、copy、expose)调用。

ARG和ENV皆可设置环境变量
不同点:ENV在构建容器、运行容器时都起作用;ARG仅用于构建容器,容器运行时就消失了。
ARG存在于dockerfile脚本中,容器中不存在;

   VOLUME

容器在运行时,应该保证在存储层不写入任何数据;
运行在容器内产生的数据,我们推荐挂载在宿主机上,进行维护;
VOLUME /DATA #容器在运行时,此目录自动挂载为匿名卷,任何写入该目录中的数据都不会被容器记录,保证容器存储层无状态理念。

#dockerfile1
FROM centos
MAINTAINER shuji 
VOLUME ["/data1","/data2"]
这里指定了两个挂载点,/data1和/data2,会自动和宿主机目录做映射关系;
运行镜像
[root@Hadoop2 learn_docker]# docker run b88e87e33d46
/bin/sh: -c: line 0: unexpected EOF while looking for matching `"'
/bin/sh: -c: line 1: syntax error: unexpected end of file

不知道为什么,无论我怎么修改dockerfile运行就是会出错误;

=========================================================================================
docker inspect 容器id查看容器情况

  "Mounts": [
            {
                "Type": "volume",
                "Name": "b694993de883b8685f4a9c45ba84f73cf4310f8c45a1ce745f442579b8111c55",
                "Source": "/var/lib/docker/volumes/b694993de883b8685f4a9c45ba84f73cf4310f8c45a1ce745f442579b8111c55/_data",
                "Destination": "/data2",
                "Driver": "local",
                "Mode": "",
                "RW": true,
                "Propagation": ""
            },
            {
                "Type": "volume",
                "Name": "fbec0a06979d9e4896263b63e2c7e6abbed8c828e3d8281167227848a1c2c726",
                "Source": "/var/lib/docker/volumes/fbec0a06979d9e4896263b63e2c7e6abbed8c828e3d8281167227848a1c2c726/_data",
                "Destination": "/data",
                "Driver": "local",
                "Mode": "",
                "RW": true,
                "Propagation": ""
            }
        ]

展示了挂载的目录
"Volumes": {
                "/data": {},
                "/data2": {}
            }

1、容器数据挂载的方式,通过dockerfile,指定VOLUME目录;

2、通过docker run -v 参数,直接设置需要映射挂载的目录;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值