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

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 参数,直接设置需要映射挂载的目录;

你可能感兴趣的:(docker,kubernetes,容器)