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的欢迎页面