2021-07-09

Docker
Docker的网络模式
Bridge: 网桥模式,相当于Vmware中的Nat模式,容器使用独立network Namespace,并连接到docker0虚拟网卡(默认模式)。通过docker0网桥以及Iptables nat表配置与宿主机通信;bridge模式是Docker默认的网络设置,此模式会为每一个容器分配Network Namespace、设置IP等,并将一个主机上的Docker容器连接到一个虚拟网桥上。这个模式不具备公有IP,和宿主机不在一个网段。
Host: Host模式下,容器可以直接使用宿主机的IP与外界进行通讯,,如果宿主机是公有IP,那么容器也拥有这个公有IP,同时容器内的端口也可以使用宿主机的端口,无需额外的Nat配置。容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。
Container: 创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定的容器共享IP、端口范围,可以更好的服务于容器之间的通信,在这种模式下,容器间可以通过locathost来访问namespace下的其他容器,传输效率非常高。
Node: 网络环境为Node,不为容器的任何网络环境,一旦使用了Node网络模式,那么容器内部就只能使用loopback网络设备,不会再有其他的网络资源,相当于关闭了容器的网络功能。

Dockerfile:
dockerfile,相当于是一个文档,客户可以基于dockerfile生成新的容器。dockerfile仅仅是用来制作镜像的源码文件,是构建容器过程中的指令,docker能够读取dockerfile的指定进行自动构建容器,基于dockerfile制作镜像,每一个指令都会创建一个镜像层,即镜像都是多层叠加而成,因此,层越多,效率越低,创建镜像,层越少越好。因此能在一个指令完成的动作尽量通过一个指令定义。
Dockerfile的参数:
FROM: FROM指令是最重要的一个且必须为 Dockerfile文件开篇的第一个非注释行,用于为映像文件构建过程指定基准镜像,后续的指令运行于此基准镜像所提供的运行环境 了。
语法:
FROM [:] or
FROM @
:指定作为base image的名称
:base image的标签,为可选项,省略时默认为 latest;
为校验码

MAINTANIER(已经废弃) – ->LABEL: 用于让镜像制作者提供本人的详细信息,Dockerfile并不限制 MAINTAINER指令可在出现的位置,但推荐将其放置于 FROM指令之后 。
语法:
MAINTAINER <authtor’s detail> l<author’s detail>可是任何文本信息,但约定俗成地使用作者名称及邮件地址,如
MAINTAINER “sunny sunny@ghbsunny.cn
一般把MAINTAINER放在FROM后面
LABEL = = = …
使用LABEL指定元数据时,一条LABEL指定可以指定一或多条元数据,指定多条元数据时不同元数据之间通过空格分隔。推荐将所有的元数据通过一条LABEL指令指定,以免生成过多的中间镜像。

COPY: 用于从 Docker主机复制文件至创建的新映像文件
语法:
COPY … or
COPY ["",… “”]
:要复制的源文件或目录,支持使用通配符
:目标路径,即正在创建的 image的文件系统路径;建议为 使用绝对路径,绝对路径为镜像中的路径,而不是宿主机的路径。否则, COPY指定则以 WORKDIR为其起始路径

ADD: ADD指令类似于 COPY指令, ADD支持使用 TAR文件和 URL路径
语法:
ADD … 或
ADD ["",… “”]

WORKDIR: workdir为工作目录,指当前容器环境的工作目录,用于为 Dockerfile中所有的RUN、CMD、ENTRYPOINT、COPY和 ADD指定设定工作目录
语法:
WORKDIR
在Dockerfile文件中, WORKDIR指令可出现多次,其路径也可以为相对路径,不过,其是相对此前一个 WORKDIR指令指定的路径。另外, WORKDIR也可调用由 ENV指定定义的变量 例如
WORKDIR /var/log或WORKDIR $STATEPATH

VOLUME: 定义卷,只能是docker管理的卷,VOLUME为容器上的目录,用于在 image中创建一个挂载点目录,以挂载 Docker host上的卷或其它容器上的卷
语法:
VOLUME 或
VOLUME [""]
如果挂载点目录路径下此前在文件存在, docker run命令会在卷挂载完成后将此前的所有文件复制到新挂载的卷中

EXPOSE: 暴露指定端口,用于为容器打开指定要监听的端口以实现与外部通信
EXPOSE [/] [[/] …]
其中用于指定传输层协议,可为 tcp或udp二者之一,默认为 TCP协议,EXPOSE指令可一次指定多个端口,但是不能指定暴露为宿主机的指定端口,因为指定的宿主机端口可能已经被占用,因此这里使用随机端口,例如
EXPOSE 11211/udp 11211/tcp
EXPOSE 80/tcp

ENV: ENV用于为镜像定义所需的环境变量,并可被 Dockerfile文件中位于其后的其它指令(如 ENV、ADD、COPY等)所调用 ,即先定义后调用。调用格式为 v a r i a b l e n a m e 或 variable_name或 variablename{variable_name}
语法:
ENV 或 . ENV = … .

第一种格式中, 之后的所有内容均会被视作其 的组成部分,因此一次只能设置一个变量

第二种格式,可用一次设置多个变量,每个变量为一个“=”的键值对,如果包含空格,可以以反斜线(\)进行转义,也可通过对加引号进行标识;另外反斜线也可以用于续行;

.定义多个变量时,建议使用第二种方式,以便在同一层中完成所有功能

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值