Docker基础之八: 容器的网络

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 容器的网络 根据之前的教程我们只是运行了简单的应用程序。之前我们编译了自己的image,在本节中我们将讲述如何管理容器的网络。 1 容器命名 如果你仔细查看docker ps的输出,你会看到docker自动生成了容器的名称: root@gctest:~/.ghostcloud/bin# do

容器的网络

对Docker感兴趣的朋友可以加我的微信ghostcloud2016,然后我把你加到我们的一个Docker爱好者群组里面。

根据之前的教程我们只是运行了简单的应用程序。之前我们编译了自己的image,在本节中我们将讲述如何管理容器的网络。

1 容器命名

如果你仔细查看docker ps的输出,你会看到docker自动生成了容器的名称:

root@gctest:~/.ghostcloud/bin# docker ps -a
CONTAINER ID        IMAGE                            COMMAND                  CREATED             STATUS                      PORTS               NAMES
09475612bb40        ghostcloud.cn:5005/gcali:1.0.8   "/usr/local/ghostclou"   2 minutes ago       Up 2 minutes                                    gcsagent
f8eb8005de81        myimage                          "/bin/sh -c 'echo 'he"   15 minutes ago      Exited (0) 15 minutes ago                       compassionate_cray
46ffa55f5680        ubuntu                           "/bin/bash"              37 minutes ago      Exited (0) 29 minutes ago                       lonely_mirzakhani
40b4301839a1        ubuntu                           "echo hello-world"       40 minutes ago      Exited (0) 40 minutes ago                       compassionate_torvalds
AI 代码解读

compassionate_cray就是一个名称。通过容器命令,可以提供两个有用的功能:

  • 默认你是通过容器的ID进行操作,你可以为特定容器设置容器名称,比如如果容器是一个web应用,你可以把它标记为web。
  • 容器之间,可以通过名称进行相互的引用和链接.

容器的名称通过--name来进行设置:

$ docker run -d -P --name web training/webapp python app.py
AI 代码解读

我们可以通过docker inspect来查看容器的详细参数:

```

##2 容器的默认网络
Docker自身通过网络驱动来管理网络。默认Docker提供两种网络驱动,bridge和overlay。你可以自己编写网络驱动作为插件,但是这个工作比较麻烦,这儿就省略了。
Docker安装后,会自动生成3种网络:
AI 代码解读

root@gctest:~# docker network ls NETWORK ID NAME DRIVER 782f465fa194 none null 6887a082de45 host host 6e75573f448f bridge bridge

bridge是一种特殊的网络模式,这是默认的网络模式。我们可以通过inspect来查看详细信息:
```Bash
root@gctest:~# docker network inspect bridge
[
    {
        "Name": "bridge",
        "Id": "6e75573f448f525f4edc07be25318af82f3a2c79640aa00eb403208583d542f3",
        "Scope": "local",
        "Driver": "bridge",
        "IPAM": {
            "Driver": "default",
            "Config": [
                {
                    "Subnet": "172.17.0.1/16",
                    "Gateway": "172.17.0.1"
                }
            ]
        },
        "Containers": {
            "85a568452350d44a467802383308b318a9bb79301714913d7df7a54bfc770567": {
                "EndpointID": "48fbb1fa53db756cc4afdf4db81182bd4347bf208dba49ed27c3187ea2d6c8c0",
                "MacAddress": "02:42:ac:11:00:02",
                "IPv4Address": "172.17.0.2/16",
                "IPv6Address": ""
            }
        },
        "Options": {
            "com.docker.network.bridge.default_bridge": "true",
            "com.docker.network.bridge.enable_icc": "true",
            "com.docker.network.bridge.enable_ip_masquerade": "true",
            "com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",
            "com.docker.network.bridge.name": "docker0",
            "com.docker.network.driver.mtu": "1500"
        }
    }
]
AI 代码解读

从上面我们可以看出,桥接的网卡是172.17.0.1/16,网关是172.17.0.1。其中有一个容器连接到了这个桥接网络中,它的ip是172.17.0.2/16。 如果你想将容器从网络中移除,你可以使用:

root@gctest:~# docker network disconnect bridge 85a5
root@gctest:~# docker network inspect bridge
[
    {
        "Name": "bridge",
        "Id": "6e75573f448f525f4edc07be25318af82f3a2c79640aa00eb403208583d542f3",
        "Scope": "local",
        "Driver": "bridge",
        "IPAM": {
            "Driver": "default",
            "Config": [
                {
                    "Subnet": "172.17.0.1/16",
                    "Gateway": "172.17.0.1"
                }
            ]
        },
        "Containers": {},
        "Options": {
            "com.docker.network.bridge.default_bridge": "true",
            "com.docker.network.bridge.enable_icc": "true",
            "com.docker.network.bridge.enable_ip_masquerade": "true",
            "com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",
            "com.docker.network.bridge.name": "docker0",
            "com.docker.network.driver.mtu": "1500"
        }
    }
]
AI 代码解读

3 创建自己的桥接网络

Docker原生支持bridge和overlay网络,bridge只能在单个主机上使用。overlay可以在多台主机间使用,这部分将在后续进行详细讲解。下面我们就来建立一个自己的网络:

root@gctest:~# docker network create -d bridge mybridge
36328af2a0b1cf04c7f13254804abbea81b32cc0361b4407fb68e9f70b8ce6a9
root@gctest:~# docker network ls
NETWORK ID          NAME                DRIVER
6e75573f448f        bridge              bridge
782f465fa194        none                null
6887a082de45        host                host
36328af2a0b1        mybridge            bridge
AI 代码解读

-d表示使用已有的bridge来创建新的网络,你也可以省略该参数,这个是默认参数。

4 添加容器到网络

默认情况,容器使用的是同一个bridge网络,这样可能有一定的安全隐患,为了做到完全的隔离,我们可以自己建一个桥接网络,然后在启动容器时将容器加入到自己的网络中。比如:

root@gctest:~# docker run -it --net=mybridge ubuntu /bin/bash
AI 代码解读

如果你inspect你的网络,你会看到详细的连接信息:

root@gctest:~/.ghostcloud/bin# docker network inspect mybridge
[
    {
        "Name": "mybridge",
        "Id": "36328af2a0b1cf04c7f13254804abbea81b32cc0361b4407fb68e9f70b8ce6a9",
        "Scope": "local",
        "Driver": "bridge",
        "IPAM": {
            "Driver": "default",
            "Config": [
                {}
            ]
        },
        "Containers": {
            "2c1fda7b6efda429d2bf7c85a131200ee370512cea214a7fe423c28d952e1320": {
                "EndpointID": "1b988bffa26ca9e6ee3cbfc5081b8adb5dcb5cde359404ff6afb73fb954a2b93",
                "MacAddress": "02:42:ac:12:00:03",
                "IPv4Address": "172.18.0.3/16",
                "IPv6Address": ""
            },
            "85a568452350d44a467802383308b318a9bb79301714913d7df7a54bfc770567": {
                "EndpointID": "0440158825ce6c1e6efc224238ab83084761a9c2e6fa28f162d2188e514aa737",
                "MacAddress": "02:42:ac:12:00:02",
                "IPv4Address": "172.18.0.2/16",
                "IPv6Address": ""
            }
        },
        "Options": {}
    }
]
AI 代码解读

如果启动时没有指定网络或想加入多个网络,可以通过connect命令加入。

目录
打赏
0
2
2
2
105
分享
相关文章
docker容器为啥会开机自启动
通过配置适当的重启策略,Docker容器可以在主机系统重启后自动启动。这对于保持关键服务的高可用性和自动恢复能力非常有用。选择适合的重启策略(如 `always`或 `unless-stopped`),可以确保应用程序在各种情况下保持运行。理解并配置这些策略是确保Docker容器化应用可靠性的关键。
279 93
课时5:阿里云容器服务:最原生的集成Docker和云服务
阿里云容器服务以服务化形式构建容器基础设施,大幅提升开发效率,简化应用部署流程。通过Docker容器和DevOps工具(如Jenkins),实现自动化部署与迭代,优化企业内部复杂部署问题。该服务支持GPU调度、混合云架构无缝迁移,并与阿里云产品体系无缝集成,提供安全防护、网络负载均衡等多重功能支持。凭借微服务架构,帮助企业突破业务瓶颈,提高资源利用率,轻松应对海量流量。
课时5:阿里云容器服务:最原生的集成Docker和云服务
Docker+consul容器服务的更新与发现
通过本文的介绍,我们详细探讨了如何结合Docker和Consul来实现容器服务的更新与发现。通过Consul的服务注册和发现功能,可以高效地管理和监控容器化服务,确保系统的高可用性和可扩展性。希望本文能帮助您在实际项目中更好地应用Docker和Consul,提高系统的可靠性和管理效率。
63 23
|
23天前
|
【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution
【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution
70 20
《docker高级篇(大厂进阶):4.Docker网络》包括:是什么、常用基本命令、能干嘛、网络模式、docker平台架构图解
《docker高级篇(大厂进阶):4.Docker网络》包括:是什么、常用基本命令、能干嘛、网络模式、docker平台架构图解
210 56
《docker高级篇(大厂进阶):4.Docker网络》包括:是什么、常用基本命令、能干嘛、网络模式、docker平台架构图解
ubuntu22 编译安装docker,和docker容器方式安装 deepseek
本脚本适用于Ubuntu 22.04,主要功能包括编译安装Docker和安装DeepSeek模型。首先通过Apt源配置安装Docker,确保网络稳定(建议使用VPN)。接着下载并配置Docker二进制文件,创建Docker用户组并设置守护进程。随后拉取Debian 12镜像,安装系统必备工具,配置Ollama模型管理器,并最终部署和运行DeepSeek模型,提供API接口进行交互测试。
313 15
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
203 6
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
docker 是什么?docker初认识之如何部署docker-优雅草后续将会把产品发布部署至docker容器中-因此会出相关系列文章-优雅草央千澈
Docker 是一个开源的容器化平台,允许开发者将应用程序及其依赖项打包成标准化单元(容器),确保在任何支持 Docker 的操作系统上一致运行。容器共享主机内核,提供轻量级、高效的执行环境。本文介绍如何在 Ubuntu 上安装 Docker,并通过简单步骤验证安装成功。后续文章将探讨使用 Docker 部署开源项目。优雅草央千澈 源、安装 Docker 包、验证安装 - 适用场景:开发、测试、生产环境 通过以上步骤,您可以在 Ubuntu 系统上成功安装并运行 Docker,为后续的应用部署打下基础。
102 8
docker 是什么?docker初认识之如何部署docker-优雅草后续将会把产品发布部署至docker容器中-因此会出相关系列文章-优雅草央千澈
docker容器为啥会开机自启动
通过配置适当的重启策略,Docker容器可以在主机系统重启后自动启动。这对于保持关键服务的高可用性和自动恢复能力非常有用。选择适合的重启策略(如 `always`或 `unless-stopped`),可以确保应用程序在各种情况下保持运行。理解并配置这些策略是确保Docker容器化应用可靠性的关键。
73 17

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等