八、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推荐使用COPY
ADD <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)iptables
1)查看规则: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:状态