Docker入门之网络Network篇

端口映射
默认容器在外部默认是不可访问的.
比如进入到容器里面才可以操作.
这对于提供网络请求的应用就不大又好了.
比如我们常见的Nginx.
如果想让容器可被访问.
这就需要使用-P参数分配端口.

docker run -d -P nginx

这里Docker给随机分配了一个端口32768:
在这里插入图片描述
通过浏览器访问这个断就就可以看到Nginx的欢迎页了.
在这里插入图片描述
如果是使用的歌云服务器需要注意的是要开放端口:
如果想让Docker分配指定的端口可以使用-p参数:

docker run -d -p 80:80 nginx

80::80左边的80是宿主机的端口,右边的80 是容器内的端口.
在这里插入图片描述
这里我们再了解一个–name参数,它可以指定容器的NAME,这个NAME可以在跟其他容器互联的时候非常有用.

docker run -it --name nginx nginx /bin/bash

接着再开一个窗口启动一个MySQL容器:

docker run -it --name mysql /bin/bash

在这里插入图片描述
默认的Nginx和M有SQL容器中很多常用的命令都没有:
比如ifconfig和ping;有个叫busybox正好就包含了这些命令.
这里在Nginx和MySQL镜像中分别安装busybox:

apt update
apt install busybox

busybox的使用非常简单,比如要使用ifconfig查看这两个容器的ip:

/bin/busybox ifconfig

在这里插入图片描述
在这里插入图片描述
互相ping ip也是通的:
在这里插入图片描述
但是这个ip是在容器创建后我们才知道的.
而Nginx容器中我们可能需要先填写MySQL的ip,这就成了先有鸡还是先有蛋的问题.
那如果我们能像使用localhost这个关键字一样来使用刚定义的nginx和mysql容器.那么问题就迎刃而解了,当然我们ping的时候会发现是不通的.
在这里插入图片描述
容器互联
Nginx是需要对外提供服务的,而MySQL一般不向外提供服务,但是Nginx需要能访问MySQL容器,而且需要通过容器name来访问,这时候就需要容器之间互联了,我们可以创建一个网络,把这些需要互联的容器放到一个网络中.
查看网络
查看网络列表:

docker network ls

在这里插入图片描述
默认已经有了3个网络.
创建网络
创建一个测试网络:

docker network create test

在这里插入图片描述
删除之前的nginx和mysql容器,这时候就可以使用容器名了.

docker rm -f nginx
docker rm -f mysql

接着创建自带网络的容器:

docker run -it --name nginx --network test nginx /bin/bash
docker run -it --name mysql --network test mysql /bin/bash

在这里插入图片描述
愉快地ping通了

扫描二维码关注公众号,回复: 8981585 查看本文章
发布了69 篇原创文章 · 获赞 12 · 访问量 7338

猜你喜欢

转载自blog.csdn.net/weixin_43291459/article/details/103438571