资讯详情

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<shiyivei@outlook.com>  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: <LOOPBACK,UP,LOWER_UP> 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: <BROADCAST,MULTICAST,UP,LOWER_UP> 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: <NO-CARRIER,BROADCAST,MULTICAST,UP> 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: <LOOPBACK,UP,LOWER_UP> 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: <BROADCAST,MULTICAST,UP,LOWER_UP> 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: <BROADCAST,MULTICAST,UP,LOWER_UP> 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: <BROADCAST,MULTICAST,UP,LOWER_UP> 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 forevr preferred_lft forever
59: veth3e062d0@if58: <BROADCAST,MULTICAST,UP,LOWER_UP> 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": {}
    }
]

标签: 二极管b360b

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台