关于Docker容器互联的初步实践

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介:

一、Docker容器之间的互联

Docker现在已经成为一种轻量级的虚拟化方案,在同一宿主机下,所有的容器都可以通过网桥进行互联。如果之前有docker的使用经验,可能已经习惯了使用--link来对容器进行互联。随着docker的逐步完善,强烈推荐大家使用网桥(bridge)来对容器进行互联。

二、实践过程

1.创建一个网络my-net:

[root@ChatDevOps ~]# docker network create my-net
71b42506de62797889372ea4a5270f905f79a19cf80e308119c02e529b89c94e
[root@ChatDevOps ~]# docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
3dec5cbb852e        bridge              bridge              local
6dd6dcfc2f26        host                host                local
71b42506de62        my-net              bridge              local
4c142a02cd6b        none                null                local

2.在创建docker容器的时候就指定桥接网络:

[root@ChatDevOps docker]# docker create -it --name d1 --network my-net -p 8080:80 ubuntu:14.04
4776b65db566f370cad5da3a9354a12c7e4f9badab53647b7e30e1e8f343ae3d
[root@ChatDevOps docker]# docker start d1
d1

在该命令中,docker create也可以用docker container create,二者等价。--name指定了容器的名称,--network指定了该容器的网络名称,桥接形式默认为网桥,-p或--publish指定了映射的端口。如果在这一步指定的网络没有预先被创建,那么这个容器时无法正常启动的。此时,可以为该容器创建网络后再次启动容器即可。

3.还可以在运行一个docker容器的时候指定一个已经创建好的网络:

[root@ChatDevOps docker]# docker run -it --name d2 --network my-net --publish 8081:80 ubuntu:14.04 /bin/bash
root@07fd516911d0:/# ping d1
PING d1 (172.18.0.2) 56(84) bytes of data.
64 bytes from d1.my-net (172.18.0.2): icmp_seq=1 ttl=64 time=0.115 ms
root@4776b65db566:/# ping d2
PING d2 (172.18.0.3) 56(84) bytes of data.
64 bytes from d2.my-net (172.18.0.3): icmp_seq=1 ttl=64 time=0.062 ms

通过容器名称即可ping通在同一网桥的容器。也可以直接ping其IP。

三、总结

1.在docker安装完成之后,docker容器有三个网络,如下:

[root@ChatDevOps ~]# docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
3dec5cbb852e        bridge              bridge              local
6dd6dcfc2f26        host                host                local
4c142a02cd6b        none                null                local

2.在同一网络中的所有容器网络都是互通的。
3.容器的网络配置中的dns配置可以在主机的/etc/docker/daemon.json文件进行配置,参照官方格式:

{
  "bip": "192.168.1.5/24",
  "fixed-cidr": "192.168.1.5/25",
  "fixed-cidr-v6": "2001:db8::/64",
  "mtu": 1500,
  "default-gateway": "10.20.1.1",
  "default-gateway-v6": "2001:db8:abcd::89",
  "dns": ["10.20.1.2","10.20.1.3"]
}

根据实际情况进行配置即可。

相关文章
|
21天前
|
Docker 容器
进入Docker容器中
进入Docker容器中
34 2
|
3天前
|
运维 Kubernetes Devops
构建高效自动化运维体系:DevOps与容器技术融合实践
【4月更文挑战第15天】 在当今快速发展的信息技术时代,传统的IT运维模式已难以满足业务敏捷性的需求。本文旨在探讨如何通过整合DevOps理念和容器技术来构建一个高效的自动化运维体系。文章将详细阐述DevOps的核心原则、容器技术的基础知识,以及两者结合的优势。此外,文中还将分享一系列实践经验,包括持续集成/持续部署(CI/CD)流程的搭建、微服务架构的应用,以及监控和日志管理策略的优化,以期帮助企业实现快速、可靠且安全的软件交付过程。
|
5天前
|
运维 Devops 持续交付
构建高效稳定的云基础设施:DevOps与容器化技术融合实践
【4月更文挑战第13天】 在当今快速迭代和持续部署的软件开发环境中,传统的IT运维模式已难以满足业务发展的需求。本文聚焦于如何通过融合DevOps理念与容器化技术,构建一个高效、稳定且易于管理的云基础设施。文章将探讨持续集成/持续交付(CI/CD)流程的优化、容器化技术的最佳实践、以及微服务架构下的应用管理,以期为企业提供一种改进运维效率、加速产品上市时间,同时保障系统稳定性的解决方案。
|
9天前
|
Linux Docker 容器
docker 容器常用命令
docker 容器常用命令
12 0
|
18天前
|
Kubernetes 网络协议 Docker
Docker 容器的DNS
Docker 容器的DNS
23 1
|
20天前
|
关系型数据库 MySQL Nacos
【深入浅出Nacos原理及调优】「实战开发专题」采用Docker容器进行部署和搭建Nacos服务以及“坑点”
【深入浅出Nacos原理及调优】「实战开发专题」采用Docker容器进行部署和搭建Nacos服务以及“坑点”
45 1
|
24天前
|
运维 Kubernetes 监控
构建高效稳定的云基础设施:DevOps与容器化技术融合实践
在当今云计算时代,企业追求敏捷性、可扩展性以及成本效益的云基础设施。本文将探讨如何通过DevOps文化与容器化技术的融合,打造一个既高效又稳定的运维环境。文章不仅阐述了DevOps和容器化技术各自的优势,还提供了一个具体的实施案例,展示了这种结合如何优化资源利用、提高部署速度并降低运维复杂性。
|
25天前
|
监控 数据可视化 虚拟化
Docker容器常用命令笔记分享
Docker容器常用命令笔记分享
50 2
|
1月前
|
Java Go 开发者
Docker容器技术简介及其与Go语言的结合点
【2月更文挑战第23天】本文首先概述了Docker容器技术的核心概念和优势,接着探讨了Go语言与Docker容器技术的结合点。通过阐述Docker的轻量级、可移植性和版本控制等特性,以及Go语言在容器化应用中的优势,本文旨在说明两者结合能够实现更高效、灵活的应用开发和部署。
|
1月前
|
Oracle 关系型数据库 数据库