基础的 Docker 容器网络命令

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

各位好,今天我们将学习一些Docker容器的基础命令。Docker 是一个开源项目,提供了一个可以打包、装载和运行任何应用的轻量级容器的开放平台。它没有语言支持、框架和打包系统的限制,从小型的家用电脑到高端服务器,在何时何地都可以运行。它可以使部署和扩展web应用程序、数据库和后端服务像搭积木一样容易,而不依赖特定技术栈或提供商。Docker适用于网络环境,它正应用于数据中心、ISP和越来越多的网络服务。

因此,这里有一些你在管理Docker容器的时候会用到的一些命令。

1. 找到Docker接口

Docker默认会创建一个名为docker0的网桥接口作为连接外部世界的基础。运行中的docker容器直接连接到网桥接口docker0。默认上,docker会分配172.17.42.1/16给docker0,它是所有运行中的容器ip地址的子网。找到Docker接口的ip地址非常简单。要找出docker0网桥接口和连接到网桥上的docker容器,我们可以在安装了docker的终端或者shell中运行ip命令。


 
 
  1. # ip a

Docker Interface

Docker Interface

2. 得到Docker容器的ip地址

如我们上面读到的,docker在宿主机中创建了一个叫docker0的网桥接口。在我们创建一个新的docker容器时,它自动被默认分配了一个在该子网范围内的ip地址。因此,要检测运行中的Docker容器的ip地址,我们需要进入一个正在运行的容器并用下面的命令检查ip地址。首先,我们运行一个新的容器并进入其中。如果你已经有一个正在运行的容器,你可以跳过这个步骤。


 
 
  1. # docker run -it ubuntu

现在,我们可以运行ip a来得到容器的ip地址了。


 
 
  1. # ip a

Docker Container IP

Docker Container IP

3. 映射暴露的端口

要映射配置在Dockerfile的暴露端口到宿主机的高位端口,我们只需用下面带上-P标志的命令。这会打开docker容器的随机端口并映射到Dockerfile中定义的端口。下面是使用-P来打开/暴露定义的端口的例子。


 
 
  1. # docker run -itd -P httpd

Mapping Expose Port

Mapping Expose Port

上面的命令会映射容器的端口到 httpd 容器的 Dockerfile 中定义的80端口上。我们用下面的命令来查看正在运行的容器暴露的端口。


 
 
  1. # docker ps

并且可以用下面的curl命令来检查。


 
 
  1. # curl http://localhost:49153

Curl Exposed Port

Curl Exposed Port

4. 映射到特定的端口上

我们也可以映射暴露端口或者docker容器端口到我们指定的端口上。要实现这个,我们用-p标志来定义我们所需的端口。这里是我们的一个例子。


 
 
  1. # docker run -itd -p 8080:80 httpd

上面的命令会映射(宿主机的)8080端口到(容器的)80上。我们可以运行curl来检查这点。


 
 
  1. # curl http://localhost:8080

Mapping Specific Port

Mapping Specific Port

5. 创建自己的网桥

要给容器创建一个自定义的IP地址,在本篇中我们会创建一个名为br0的新网桥。要分配需要的ip地址,我们需要在运行docker的宿主机中运行下面的命令。


 
 
  1. # stop docker.io
  2. # ip link add br0 type bridge
  3. # ip addr add 172.30.1.1/20 dev br0
  4. # ip link set br0 up
  5. # docker -d -b br0

Creating Bridge Interface

Creating Bridge Interface

创建完docker网桥之后,我们要让docker的守护进程知道它。


 
 
  1. # echo 'DOCKER_OPTS="-b=br0"' >> /etc/default/docker
  2. # service docker.io start

Adding Interface to Docker

Adding Interface to Docker

到这里,桥接后的接口将会分配给容器在桥接子网内的新ip地址。

6. 链接到另外一个容器上

我们可以用Docker将一个容器连接到另外一个上。我们可以在不同的容器上运行不同的程序,并且相互连接或链接。链接允许容器间相互连接并从一个容器上安全地传输信息给另一个容器。要做到这个,我们可以使用--link标志。首先,我们使用--name标志来标示training/postgres镜像。


 
 
  1. # docker run -d --name db training/postgres

Running db Container

Running db Container

完成之后,我们将容器db与training/webapp链接来形成新的叫web的容器。


 
 
  1. # docker run -d -P --name web --link db:db training/webapp python app.py

linking two containers

linking two containers

总结

Docker网络很神奇也好玩,我们可以对docker容器做很多事情。我们可以把玩这些简单而基础的docker网络命令。docker的网络是非常先进的,我们可以用它做很多事情。

如果你有任何的问题、建议、反馈请在下面的评论栏写下来以便于我们我们可以提升或者更新文章的内容。谢谢! 玩得开心!:-)

原文发布时间为:2015-06-11

本文来自云栖社区合作伙伴“Linux中国”


目录
相关文章
|
12天前
|
运维 Cloud Native 虚拟化
一文吃透云原生 Docker 容器,建议收藏!
本文深入解析云原生Docker容器技术,涵盖容器与Docker的概念、优势、架构设计及应用场景等,建议收藏。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
一文吃透云原生 Docker 容器,建议收藏!
|
4天前
|
Kubernetes Linux 开发者
深入探索容器化技术——Docker 的实战应用
深入探索容器化技术——Docker 的实战应用
27 5
|
8天前
|
运维 Cloud Native 云计算
云原生之旅:Docker容器化实战
本文将带你走进云原生的世界,深入理解Docker技术如何改变应用部署与运维。我们将通过实际案例,展示如何利用Docker简化开发流程,提升应用的可移植性和伸缩性。文章不仅介绍基础概念,还提供操作指南和最佳实践,帮助你快速上手Docker,开启云原生的第一步。
|
6天前
|
关系型数据库 MySQL Java
【Docker最新版教程】一文带你快速入门Docker常见用法,实现容器编排和自动化部署上线项目
Docker快速入门到项目部署,MySQL部署+Nginx部署+docker自定义镜像+docker网络+DockerCompose项目实战一文搞定!
|
5天前
|
开发者 Docker Python
从零开始:使用Docker容器化你的Python Web应用
从零开始:使用Docker容器化你的Python Web应用
15 1
|
11天前
|
机器学习/深度学习 数据采集 Docker
Docker容器化实战:构建并部署一个简单的Web应用
Docker容器化实战:构建并部署一个简单的Web应用
|
9天前
|
运维 持续交付 虚拟化
深入解析Docker容器化技术的核心原理
深入解析Docker容器化技术的核心原理
30 1
|
11天前
|
JavaScript 开发者 Docker
Docker容器化实战:构建并部署一个简单的Web应用
Docker容器化实战:构建并部署一个简单的Web应用
|
11天前
|
持续交付 开发者 Docker
Docker容器化技术实战指南
Docker容器化技术实战指南
28 1
|
11天前
|
安全 Docker 微服务
深入理解Docker容器技术:从基础到实践
深入理解Docker容器技术:从基础到实践
下一篇
无影云桌面