基础的 Docker 容器网络命令
各位好,今天我们将学习一些 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 命令。
# ip a
2. 得到 Docker 容器的 ip 地址
如我们上面读到的,docker 在宿主机中创建了一个叫 docker0 的网桥接口。在我们创建一个新的 docker 容器时,它自动被默认分配了一个在该子网范围内的 ip 地址。因此,要检测运行中的 Docker 容器的 ip 地址,我们需要进入一个正在运行的容器并用下面的命令检查 ip 地址。首先,我们运行一个新的容器并进入其中。如果你已经有一个正在运行的容器,你可以跳过这个步骤。
# docker run -it ubuntu
现在,我们可以运行 ip a 来得到容器的 ip 地址了。
# ip a
3. 映射暴露的端口
要映射配置在 Dockerfile 的暴露端口到宿主机的高位端口,我们只需用下面带上-P 标志的命令。这会打开 docker 容器的随机端口并映射到 Dockerfile 中定义的端口。下面是使用-P 来打开/暴露定义的端口的例子。
# docker run -itd -P httpd
上面的命令会映射容器的端口到 httpd 容器的 Dockerfile 中定义的 80 端口上。我们用下面的命令来查看正在运行的容器暴露的端口。
# docker ps
并且可以用下面的 curl 命令来检查。
# curl http://localhost:49153
4. 映射到特定的端口上
我们也可以映射暴露端口或者 docker 容器端口到我们指定的端口上。要实现这个,我们用-p 标志来定义我们所需的端口。这里是我们的一个例子。
# docker run -itd -p 8080:80 httpd
上面的命令会映射(宿主机的)8080 端口到(容器的)80 上。我们可以运行 curl 来检查这点。
# curl http://localhost:8080
5. 创建自己的网桥
要给容器创建一个自定义的 IP 地址,在本篇中我们会创建一个名为 br0 的新网桥。要分配需要的 ip 地址,我们需要在运行 docker 的宿主机中运行下面的命令。
# stop docker.io
# ip link add br0 type bridge
# ip addr add 172.30.1.1/20 dev br0
# ip link set br0 up
# docker -d -b br0
创建完 docker 网桥之后,我们要让 docker 的守护进程知道它。
# echo 'DOCKER_OPTS="-b=br0"' >> /etc/default/docker
# service docker.io start
到这里,桥接后的接口将会分配给容器在桥接子网内的新 ip 地址。
6. 链接到另外一个容器上
我们可以用 Docker 将一个容器连接到另外一个上。我们可以在不同的容器上运行不同的程序,并且相互连接或链接。链接允许容器间相互连接并从一个容器上安全地传输信息给另一个容器。要做到这个,我们可以使用--link 标志。首先,我们使用--name 标志来标示 training/postgres 镜像。
# docker run -d --name db training/postgres
完成之后,我们将容器 db 与 training/webapp 链接来形成新的叫 web 的容器。
# docker run -d -P --name web --link db:db training/webapp python app.py
总结
Docker 网络很神奇也好玩,我们可以对 docker 容器做很多事情。我们可以把玩这些简单而基础的 docker 网络命令。docker 的网络是非常先进的,我们可以用它做很多事情。如果你有任何的问题、建议、反馈请在下面的评论栏写下来以便于我们我们可以提升或者更新文章的内容。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论