docker之DockerFile与网络

目录

DockerFile

构建步骤

基础知识

指令

实战:构建自己的centos

第一步:编写dockerfile文件

第二步:构建镜像文件

docker网络

原理

功能

网络模式

host模式

container模式

none模式

bridge模式


DockerFile

dockerfile 是用来构建docker镜像的文件,是一个命令参数脚本

构建步骤

        1、编写一个 dockerfile 文件

        2、docker build 构建成为一个镜像

        3、docker run 运行镜像

        4、docker push 发布镜像(DockerHub 、阿里云仓库)

基础知识

        1.每个保留关键字都是尽量大写字母

        2.执行从上到下按顺序执行

 

        3.#表示注释

        4.每一个指令都会创建提交一个新的镜像层,并提交

指令

 

实战:构建自己的centos

        通过编写Dockerfile文件来制作Centos镜像,并在官方镜像的基础上添加vim和net-tools工具。首先在/home/dockfile 目录下新建文件mydockerfile-centos。然后使用上述指令编写该文件

第一步:编写dockerfile文件

FROM centos:7                            #基础镜像         
MAINTAINER CQ<1462568882@qq.com>        #维护者信息
 
ENV MYPATH /usr/local                    #环境变量目录 k-v
WORKDIR $MYPATH                          #工作目录  用$取k
 
RUN yum -y install vim                   #执行构建命令  安装vim
RUN yum -y install net-tools             #执行构建命令  安装net-tools
 
EXPOSE 80                                #暴露端口 80
 
CMD echo $MYPATH                         #输出构建信息 mypath
CMD echo "---end---"                     #输出信息
CMD /bin/bash                            #进入/bin/bash命令行

第二步:构建镜像文件

构建镜像命令:docker build -f dockerfile文件路径 -t 镜像名[:版本号] .(这里有个小点.)

docer build -f mydockerfile-centos -t mycentos:0.1 .

-t参数用来指定 image 文件的名字,后面还可以用冒号指定标签。

如果不指定,默认的标签就是latest。

最后的那个点表示 Dockerfile 文件所在的路径,上例是当前路径,所以是一个点。

docker网络

Docker网络是Docker平台中用于管理容器之间网络通信的组件。它提供了一种简单而灵活的方式来创建、管理和配置Docker容器的网络

原理

        在宿主机虚拟一个Docker容器网桥(docker0),Docker启动一个容器时会根据Docker网桥的网段分配给容器一个IP地址,称为Container-IP,同时Docker网桥是每个容器的默认网关。因为在同一宿主机内的容器都接入同一个网桥,这样容器之间就能够通过容器的Container-IP直接通信。

        Docker网桥是宿主机虚拟出来的,并不是真实存在的网络设备,外部网络是无法寻址到的,这也意味着外部网络无法通过直接Container-IP访问到容器。如果容器希望外部访问能够访问到,可以通过映射容器端口到宿主主机(端口映射),即docker run创建容器时候通过 -p 或 -P 参数来启用,访问容器的时候就通过[宿主机IP]:[容器端口]访问容器

功能

        1.自动分配IP地址:Docker能够为每个容器分配一个独立的IP地址,使得容器之间可以通过IP地址进行通信。

        2.默认网桥:Docker在宿主机上创建一个名为docker0的网桥,它会自动将容器连接到该网桥上,从而使得容器之间可以通过网桥进行通信。

        3.网络配置:Docker允许用户自定义容器的网络配置,包括指定网络类型、指定网络端口等。

        4.网络插件:Docker支持插件机制,可以通过插件扩展网络功能。

网络模式

安装Docker时,它会自动创建三个网络。bridge、 none 、host。

可以使用以下docker network ls命令列出这些网络:

 该bridge网络代表docker0,所有Docker安装中存在的网络。除非你使用该docker run --network=选项指定,否则Docker守护程序默认将容器连接到此网络。

我们在使用docker run创建Docker容器时,可以用 --net 选项指定容器的网络模式,Docker可以有以下4种网络模式:

        host模式:使用 --net=host 指定。

        none模式:使用 --net=none 指定。

        bridge模式:使用 --net=bridge 指定,默认设置。

        container模式:使用 --net=container:NAME_or_ID 指定

host模式

启动容器的时候使用host模式,那么这个容器将不会获得一个独立的Network Namespace(虚拟网络),而是和宿主机共用一个Network Namespace(虚拟网络)。容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。但是,容器的其他方面,如文件系统、进程列表等还是和宿主机隔离的。

使用host模式的容器可以直接使用宿主机的IP地址与外界通信,容器内部的服务端口也可以使用宿主机的端口,不需要进行NAT,host最大的优势就是网络性能比较好,但是docker host上已经使用的端口就不能再用了,网络的隔离性不好。

container模式

        Docker的网络container模式是指将容器与另一个已经存在的容器共享同一个网络命名空间。这种模式下,两个容器可以直接通过网络通信,无需进行额外的网络配置。

        使用container模式时,Docker会创建一个新的网络命名空间,并将其与目标容器共享。新容器内的网络接口会与目标容器的网络接口进行关联,从而实现网络通信。

        使用container模式可以方便地将多个容器连接在一起,形成一个共享的网络环境。同时,由于容器之间共享网络命名空间,所以它们的网络性能和效率也得到了提高。

        需要注意的是,如果目标容器在关闭或崩溃时,新容器也会失去网络连接。此外,container模式不支持多主机之间的容器网络通信。

none模式

        使用none模式,Docker容器拥有自己的Network Namespace,但是,并不为Docker容器进行任何网络配置。也就是说,这个Docker容器没有网卡、IP、路由等信息。需要我们自己为Docker容器添加网卡、配置IP等。

        这种网络模式下容器只有lo回环网络,没有其他网卡。none模式可以在容器创建时通过--network=none来指定。这种类型的网络没有办法联网,封闭的网络能很好的保证容器的安全性。

bridge模式

        Docker的网络bridge模式是一种默认的网络配置方式,它会在Docker守护进程启动时自动创建一个名为docker0的网桥,并将所有新创建的容器连接到该网桥上。

        在bridge模式下,每个容器都会分配一个独立的网络命名空间,并拥有一个独立的IP地址。容器之间通过网桥进行通信,通信数据会被自动转发。

        使用bridge模式时,Docker会为每个新创建的容器分配一个独立的Network Namespace,并将容器与docker0网桥相连。容器内的网络接口会自动与网桥进行关联,从而实现网络通信。

        此外,bridge模式还支持端口映射功能,允许将容器内的网络端口映射到宿主机上的端口,从而实现外部对容器内的应用程序进行访问。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值