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通了

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值