Docker-Docker网络与通讯

 

1:Docker容器之间的Link

使用场景:比如container1运行的是Mysql;container2运行的是Tomcat;container1和container2肯定是需要相互通信的

1.1:创建一个container命名为demo1

docker run -it --name demo1 centos

 

1.2:创建另外一个container命名为demo2并且link到demo1

注意要想demo2 link到demo1必须保证demo1是UP状态

docker run -it --name=demo2 --link=demo1 centos

  

1.3:查看demo1和demo2的IP

[root@anndy ~]# docker ps 
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
c51314d325a3        centos              "/bin/bash"         2 minutes ago       Up 2 minutes                            demo2
94f6f73069b2        centos              "/bin/bash"         6 minutes ago       Up 3 minutes                            demo1
[root@anndy ~]# 
[root@anndy ~]# 
[root@anndy ~]# docker inspect 94f6f73069b2

Demo1的IP

Demo2的IP

1.4:交互式进入demo2

注意:demo2 link到demo1 demo2可以联通demo1,是单向的;demo1无法访问demo2

docker exec -it c51314d325a3 /bin/sh

ping demo1和demo2的IP或者直接demo1都可以ping通

 

 相反我们进入demo1去pingdemo2是ping不通的

 

2:Docker容器的端口映射

场景:比如创建一个web容器,这个容器需要对外提供访问的端口(我们知道docker容器的IP跟本地的IP是不一样的 所有我们需要将docker容器的端口先映射到本地IP的端口上),我们以nginx为例子延时

2.1:准备工作

docker pull nginx #下载nginx docker镜像
docker run -d --name web nginx  #创建nginx容器 并且命名为web

注意:这里有个坑 如果是 docker run -d --name=web nginx则运行不起来

查看运行了那些容器 我们发现nginx默认的端口是80端口

 

2.2:查看连接在bridge上的两个容器的信息

默认是连接上bridge的 如果有指定那就另当别论了

docker network inspect bridge

 

本地输入 curl http://172.17.0.3可以打印出nginx的欢迎页面

2.3:docker容器nginx端口映射到本地端口

1:停止并删除之前的nginx容器

docker stop web
docker rm web

2:后台运行nginx容器 并且将容器命名为web 并将该docker容器的80端口映射到本地的80端口

docker run -d --name web -p 80:80 nginx

 现在我们去查看docker ps发现port多了这个

3:检查是否映射成功 curl http://127.0.0.1 可以拉取出来nginx的欢迎页面的html源码

4:公网访问也可以看到nginx的欢迎页面

 

猜你喜欢

转载自blog.csdn.net/hujyhfwfh2/article/details/83867320