八、Dockerfile详解
-
指令格式
-
指令------> FROM
FROM <image>:指定镜像 FROM <image>:<tag>:指定确认镜像
-
指令------> MAINTAINER
MAINTAINER <name>:指定镜像的作者信息,包含镜像的所有者和联系信息
-
指令------> RUN
指定当前镜像中运行的命令, 它是在镜像构建中运行
RUN <command>:shell模式 RUN <command1> && <command2> 可运行多条指令 RUN ["excutable", "param1", "param2"]:exec模式
-
指令------> EXPORT
指定运行该镜像的容器使用的端口
EXPORT <port> 或 EXPORT [<port>.....] :指定一个或多个端口
使用时得再指定暴漏端口:
-
指令------> CMD
在容器运行时执行,会被run中指定的运行命令覆盖
CMD ["excutable", "param1", "param2"]:exec模式 CMD command param1 param2:shell模式 CMD ["param1", "param2"]:作为ENTRYPOINT指令的默认参数
-
指令------> ENTRYPOINT
在容器运行时执行,不会被run中指定的运行命令覆盖
ENTRYPOINT ["excutable", "param1", "param2"]:exec模式 ENTRYPOINT command param1 param2:shell模式
-
指令------> ADD
复制本地文件到Docker容器中
ADD包含类似tar的解压功能,如果单纯复制文件,docker推荐使用COPYADD <src>...<dest> ADD ["<src>"......"<dest>"]:适用于文件路径中有空格的情况
-
指令------> COPY
复制本地文件到docker容器中
COPY <src>...<dest> COPY ["<src>"......"<dest>"]:适用于文件路径中有空格的情况
-
指令------> VOLUME
为创建的容器添加卷
VOLUME ["/data"]
-
指令------> WORKDIR
在创建容器时添加一个工作目录
WORKDIR /path/to/workdir
a/b/c
-
指令------> ENV
创建环境变量
ENV <key> <value> ENV <key>=<value> ......
-
指令------> USER
镜像为什么样的用户去运行
(1)USER daemon
例如: USER nginx:以nginx的用户的身份去运行
(2)多种方式指定
-
指令------> ONBUILD
为镜像添加触发器,当一个镜像被其他镜像作为基础镜像时执行,会在构建过程中添加指令
ONBUILD [INSTRUCTION]
九、Dockerfile构建
-
Dockerfile构建过程
-
构建不使用缓存
-
查看镜像构建的过程
十、容器的网络连接
-
docker0
查看网条规则: brctl show
-
自定义虚拟网桥
-
容器的互联
(1)准备Dockerfile:
(2)允许所有容器互联给连接取个别名,以防对方ip改变
(3) 拒绝所有容器互联
(4) 允许特定容器间的连接
-
容器与外部网路的连接
(1)允许流量转发
(2)iptables1)查看规则:
iptables -t filter -L -n
2)阻止访问:
iptables -I DOCKER -s 192.168.2.223 -d 172.17.0.5 -p TCP --dport 80 -j DROP
-i: 对象 -s: 宿主机地址 -d:容器地址 -p:类型 -j:状态