Docker容器的基本网络命令

时间:2020-03-05 15:25:23  来源:igfitidea点击:

Docker是一个开源项目,它提供了一个开放平台,可作为轻量级容器打包,运送和运行任何应用程序。
它不受语言支持,框架或者打包系统的限制,并且可以从小型家用计算机到高端服务器的任何位置,任何时间运行。
它使它们成为部署和扩展Web应用程序,数据库和后端服务的重要构建块,而无需依赖特定的堆栈或者提供程序。
Docker旨在用于网络,因为它已逐渐用于数据中心,ISP和更多网络服务器中。

因此,这是一些可用于管理Docker容器的基本联网命令。

1.查找Docker接口

Docker默认情况下会创建一个名为docker0的网桥接口,该接口基本上与外界连接。
运行的docker容器直接与网桥接口docker0连接。
默认情况下,docker将IP地址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.映射Expose端口

要将在Dockerfile中为容器配置的公开端口映射到高端口,我们只需要在docker命令后加上-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地址分配给容器,在本教程中,我们需要创建一个名为bro的新桥接口。
要分配所需的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 Daemon知道它。

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

其中桥接接口将在docker容器中分配IP地址,其后是bridge ip subnet。

6.将一个容器链接到另一个

我们可以使用Docker将一个容器与另一个容器连接。
我们可以在不同的容器上运行不同的应用程序,并相互连接或者链接。
链接允许容器相互连接,并将有关一个容器的信息安全地传输到另一个容器。
为此,我们将使用--link标志。
首先,我们将使用标志--name,以便于表示运行/postgres镜像。

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

完成后,我们将把training/webapp与我们先前创建的容器db链接起来,形成一个名为web的新容器。

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