八、Dockerfile详解

  1. 指令格式
  2. docker中run和exce docker run exec区别_docker中run和exce

  3. 指令------> FROM
FROM <image>:指定镜像
FROM <image>:<tag>:指定确认镜像
  1. 指令------> MAINTAINER
MAINTAINER <name>:指定镜像的作者信息,包含镜像的所有者和联系信息
  1. 指令------> RUN
    指定当前镜像中运行的命令, 它是在镜像构建中运行
RUN <command>:shell模式

RUN <command1> && <command2> 可运行多条指令

RUN ["excutable", "param1", "param2"]:exec模式
  1. 指令------> EXPORT
    指定运行该镜像的容器使用的端口
EXPORT <port> 或 EXPORT [<port>.....] :指定一个或多个端口

使用时得再指定暴漏端口:

docker中run和exce docker run exec区别_nginx_02

  1. 指令------> CMD
    在容器运行时执行,会被run中指定的运行命令覆盖
CMD ["excutable", "param1", "param2"]:exec模式
CMD command param1 param2:shell模式
CMD ["param1", "param2"]:作为ENTRYPOINT指令的默认参数
  1. 指令------> ENTRYPOINT
    在容器运行时执行,不会被run中指定的运行命令覆盖
ENTRYPOINT ["excutable", "param1", "param2"]:exec模式
ENTRYPOINT  command param1 param2:shell模式
  1. 指令------> ADD
    复制本地文件到Docker容器中
    ADD包含类似tar的解压功能,如果单纯复制文件,docker推荐使用COPY
ADD <src>...<dest>
ADD ["<src>"......"<dest>"]:适用于文件路径中有空格的情况
  1. 指令------> COPY
    复制本地文件到docker容器中
COPY <src>...<dest>
COPY ["<src>"......"<dest>"]:适用于文件路径中有空格的情况
  1. 指令------> VOLUME
    为创建的容器添加卷
VOLUME ["/data"]
  1. 指令------> WORKDIR
    在创建容器时添加一个工作目录
WORKDIR /path/to/workdir

docker中run和exce docker run exec区别_docker中run和exce_03

a/b/c
  1. 指令------> ENV
    创建环境变量
ENV <key> <value>
ENV <key>=<value> ......
  1. 指令------> USER
    镜像为什么样的用户去运行
    (1)USER daemon
例如: USER nginx:以nginx的用户的身份去运行

(2)多种方式指定

docker中run和exce docker run exec区别_nginx_04

  1. 指令------> ONBUILD
    为镜像添加触发器,当一个镜像被其他镜像作为基础镜像时执行,会在构建过程中添加指令
ONBUILD [INSTRUCTION]

九、Dockerfile构建

  1. Dockerfile构建过程
  2. 构建不使用缓存
  3. 查看镜像构建的过程

十、容器的网络连接

  1. docker0



    查看网条规则: brctl show
  2. 自定义虚拟网桥
  3. 容器的互联
    (1)准备Dockerfile:

    (2)允许所有容器互联

给连接取个别名,以防对方ip改变

docker中run和exce docker run exec区别_docker_05


(3) 拒绝所有容器互联

docker中run和exce docker run exec区别_文件路径_06


(4) 允许特定容器间的连接

docker中run和exce docker run exec区别_docker中run和exce_07

  1. 容器与外部网路的连接

    (1)允许流量转发

    (2)iptables

docker中run和exce docker run exec区别_docker_08

docker中run和exce docker run exec区别_文件路径_09

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:状态