栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Docker 6 Dockerfile 7 Docker网络

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Docker 6 Dockerfile 7 Docker网络

6 Dockerfile 6.1 构建镜像步骤
1.编写dockerfile文件
2.构建镜像 docker build 
3.docker run 运行镜像
4.docker push 发布镜像

Dockerfile命令

发布项目需要编写dockerfile文件,docker逐渐成项目交付标准

Dockerfile :构建文件,定义了一切步骤,源代码

Docker容器:提供运行镜像的服务器

FROM //指定基础镜像
MAINTAINTER //作者,姓名+邮箱
RUN //镜像构建时需要运行的命令
ADD //例如添加tomcat镜像至基础镜像之上
WORKDIR //镜像的工作目录
VOLUME //设置卷,挂载主机目录
EXPOSE //暴露端口,等同于-p
CMD // 指定容器启动时要运行的命令,只有最后一个会生效,可被替代(替换)
ENTRYPOINT //指定容器启动时就要运行的命令,可以追加命令(追加)
ONBUILD //触发指令
COPY //类似ADD,将文件拷贝至镜像中
ENV //构建的时候需要设置环境变量
6.2 使用范例
FROM centos

MAINTAINER shiyivei

ENV MYPATH /user/local

WORKDIR $MYPATH

RUN yum -y install vim

RUN yum -y install net-tools

EXPOSE 80

CMD echo $MYPATH

CMD echo "----end----"
CMD /bin/bash
docker build -f mydockerfile-centos -t mycentos:0.1. //构建
docker run -it mycentos:0.1 //运行发布
docker history “image ID” //查看构建历史变更信息
6.3 发布镜像

注册一个Dockerhub账户

docker login -u shiyivei //登录Dockerhub
docker push cmdtest //发布镜像,注意名字不要重复
requested access to the resource is denied //重复的话使用tag改名
docker tag 3f5607ae3630 shiyivei/cmdtest:1.0 
docker push shiyivei/cmdtest:1.0 //重新发布,发布结束后就可以在dockerhub上看到镜像了	

如果发布到阿里云的话,参考官方文档即可

Docker 7 Docker 网络 7.1 Docker 网络简介

先删除所有镜像,让本机环境干净

ip addr //查看IP
本机回环地址
1: lo:  mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
       阿里云内网地址
2: eth0:  mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:16:3e:2b:f5:7a brd ff:ff:ff:ff:ff:ff
    inet 172.22.64.97/20 brd 172.22.79.255 scope global dynamic eth0
       valid_lft 315119875sec preferred_lft 315119875sec
    inet6 fe80::216:3eff:fe2b:f57a/64 scope link 
       valid_lft forever preferred_lft forever
       Docker地址
3: docker0:  mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 02:42:0b:1b:8a:67 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever
    inet6 fe80::42:bff:fe1b:8a67/64 scope link 
       valid_lft forever preferred_lft forever

测试

docker run -d -P --name tomcat01 tomcat //启动一个Docker

进入容器后查看ip
cat /etc/hosts
127.0.0.1	localhost
::1	localhost ip6-localhost ip6-loopback
fe00::0	ip6-localnet
ff00::0	ip6-mcastprefix
ff02::1	ip6-allnodes
ff02::2	ip6-allrouters
172.17.0.2	6e71c154042f

我们每启动一个docker容器,docker就会给容器分配一个ip,我们只要安装了docker,就会有一个网卡docker0桥接模式,使用的技术是evth-pair技术(一对虚拟设备接口,成对出现,一端连着协议,一端彼此相连)

再启动一个容器,我们可以看到又多了一对网卡

docker run -d -P --name tomcat02 tomcat 
ip addr
1: lo:  mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0:  mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:16:3e:2b:f5:7a brd ff:ff:ff:ff:ff:ff
    inet 172.22.64.97/20 brd 172.22.79.255 scope global dynamic eth0
       valid_lft 315118578sec preferred_lft 315118578sec
    inet6 fe80::216:3eff:fe2b:f57a/64 scope link 
       valid_lft forever preferred_lft forever
3: docker0:  mtu 1500 qdisc noqueue state UP group default 
    link/ether 02:42:0b:1b:8a:67 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever
    inet6 fe80::42:bff:fe1b:8a67/64 scope link 
       valid_lft forever preferred_lft forever
57: veth2b78ea3@if56:  mtu 1500 qdisc noqueue master docker0 state UP group default 
    link/ether ca:5b:8c:4b:f9:43 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet6 fe80::c85b:8cff:fe4b:f943/64 scope link 
       valid_lft forever preferred_lft forever
59: veth3e062d0@if58:  mtu 1500 qdisc noqueue master docker0 state UP group default 
    link/ether 02:3d:cd:1a:e4:50 brd ff:ff:ff:ff:ff:ff link-netnsid 1
    inet6 fe80::3d:cdff:fe1a:e450/64 scope link 
		valid_lft forever preferred_lft forever

容器和容器之间可以ping通,容器删除,网络也会被随机删除

7.2 Docker 网络联通

– link

docker exec -it tomcat01 ping tomcat02 //ping不通
docker run -d -P --name tomcat03 --link tomcat02 tomcat //使用--link
docker exec -it tomcat01 ping tomcat02  //现在可以了
docker network ls
docker network inspect 338fd04c64de  //查看桥信息

"ConfigOnly": false,
        "Containers": {
            "6e71c154042f387fce5d2d23275c062877038e50a3a0857b8e1b211afdd7dc45": {
                "Name": "tomcat01",
                "EndpointID": "0914d131010bc2a553db731a39857ecf699efa2ccc16aeab41c432538f26631c",
                "MacAddress": "02:42:ac:11:00:02",
                "IPv4Address": "172.17.0.2/16", //docker容器启动后随机分配的IP地址
                "IPv6Address": ""
            },
            "75200a8288e3da88468296121c1c8b6467282897c6e86e0346c68f658b72ebf6": {
                "Name": "tomcat03",
                "EndpointID": "2d0cce8b47d374cf948ec438543f697a9d577c9b9b386d240f1f2bf1263af11f",
                "MacAddress": "02:42:ac:11:00:04",
                "IPv4Address": "172.17.0.4/16",
                "IPv6Address": ""
            },
            "7a13d0d4eccbc92a00c19a61f6443d83eec52202165e572146282ae90634a952": {
                "Name": "tomcat02",
                "EndpointID": "eb9012cd485bdcb962544823673e52ac8bf16faedcc949f47d5eeefea26de22c",
                "MacAddress": "02:42:ac:11:00:03",
                "IPv4Address": "172.17.0.3/16",
                "IPv6Address": ""
            }
        },

        "NetworkSettings": {
            "Bridge": "",
            "SandboxID": "ea76245035514a5e5df781b9dba22c91283c3df1ade290e2b5cf7a5644533762",
            "HairpinMode": false,
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "Ports": {
                "8080/tcp": [
                    {
                        "HostIp": "0.0.0.0",
                        "HostPort": "49157"
                    },
                    {
                        "HostIp": "::",
                        "HostPort": "49157"
                    }
                ]
            },
            "SandboxKey": "/var/run/docker/netns/ea7624503551",
            "SecondaryIPAddresses": null,
            "SecondaryIPv6Addresses": null,
            "EndpointID": "2d0cce8b47d374cf948ec438543f697a9d577c9b9b386d240f1f2bf1263af11f",
            "Gateway": "172.17.0.1",
            "GlobalIPv6Address": "",
            "GlobalIPv6PrefixLen": 0,
            "IPAddress": "172.17.0.4",
            "IPPrefixLen": 16,
            "IPv6Gateway": "",
            "MacAddress": "02:42:ac:11:00:04",
            "Networks": {
                "bridge": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": null,
                    "NetworkID": "338fd04c64de09099ca7405124cb4e5a1cd6d22c0ae293f1735c31a214837b75",
                    "EndpointID": "2d0cce8b47d374cf948ec438543f697a9d577c9b9b386d240f1f2bf1263af11f",
                    "Gateway": "172.17.0.1",
                    "IPAddress": "172.17.0.4",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "02:42:ac:11:00:04",
                    "DriverOpts": null
                }
            }
        }
    }
]

自定义互联

docker network ls //查看网络设置
docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet

docker network ls
NETWORK ID     NAME      DRIVER    SCOPE
338fd04c64de   bridge    bridge    local
525a609dd4f9   host      host      local
32d1710d1cb1   mynet     bridge    local
cb360b761548   none      null      local

docker inspect mynet //查看自定义的网络
[
    {
        "Name": "mynet",
        "Id": "32d1710d1cb1c7588f76d083b89003f5cc638b50b3bfdde5e3e2bf83c86249a2",
        "Created": "2022-04-20T12:51:19.18911019+08:00",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "192.168.0.0/16",
                    "Gateway": "192.168.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {},
        "Options": {},
        "Labels": {}
    }
]
docker run -d -P --name tomcat-net-01 --net mynet tomcat 

docker inspect mynet
[
    {
        "Name": "mynet",
        "Id": "32d1710d1cb1c7588f76d083b89003f5cc638b50b3bfdde5e3e2bf83c86249a2",
        "Created": "2022-04-20T12:51:19.18911019+08:00",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "192.168.0.0/16",
                    "Gateway": "192.168.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Ingress": false,
        "ConfigFrom": {
            "Network": ""
        },
        "ConfigOnly": false,
        "Containers": {
            "384260ec33a596703a2643bfc94773b89ca365458038397f9bd78080d3b879ea": {
                "Name": "tomcat-net-01",
                "EndpointID": "6646d0ee3db7fbaff956bd3fe2611d477c9a1ae830f57173ad9a71cb6a1d6d4e",
                "MacAddress": "02:42:c0:a8:00:02",
                "IPv4Address": "192.168.0.2/16",
                "IPv6Address": ""
            },
            "de8cba9cd3f62d6bdf9c43da236f52f6c673c90a86b8651fe1424d4772146aec": {
                "Name": "tomcat-net-02",
                "EndpointID": "b750f2bef42d0c884e21c0667b4610151284cacc587baf947f4f1d8015f4fbc3",
                "MacAddress": "02:42:c0:a8:00:03",
                "IPv4Address": "192.168.0.3/16",
                "IPv6Address": ""
            }
        },
        "Options": {},
        "Labels": {}
    }
]
docker exec -it tomcat-net-01 ping 192.168.0.3

网络联通

docker run -d -P --name tomcat01 tomcat
docker network connect mynet tomcat01 


docker inspect mynet //可以看到新的容器也被加入到这里面来了

        "Containers": {
            "2670f1f6c547ed0bdaa995e63e52b6910b58c7b20dc2d3f57c8b11185ad18f59": {
                "Name": "tomcat01",
                "EndpointID": "d0c1343e368795c5c4da88f25a69facbcc96fa2cffe3b672a4f6b1c273490d1e",
                "MacAddress": "02:42:c0:a8:00:04",
                "IPv4Address": "192.168.0.4/16",
                "IPv6Address": ""
            },
            "384260ec33a596703a2643bfc94773b89ca365458038397f9bd78080d3b879ea": {
                "Name": "tomcat-net-01",
                "EndpointID": "6646d0ee3db7fbaff956bd3fe2611d477c9a1ae830f57173ad9a71cb6a1d6d4e",
                "MacAddress": "02:42:c0:a8:00:02",
                "IPv4Address": "192.168.0.2/16",
                "IPv6Address": ""
            },
            "de8cba9cd3f62d6bdf9c43da236f52f6c673c90a86b8651fe1424d4772146aec": {
                "Name": "tomcat-net-02",
                "EndpointID": "b750f2bef42d0c884e21c0667b4610151284cacc587baf947f4f1d8015f4fbc3",
                "MacAddress": "02:42:c0:a8:00:03",
                "IPv4Address": "192.168.0.3/16",
                "IPv6Address": ""
            }
        },
        "Options": {},
        "Labels": {}
    }
]

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/828344.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号