6 docker网络基础配置
一、从外部访问容器应用1、端口映射实现访问容器
root@docker-test:~# docker run -d -P training/webapp python app.py
61975c6a1981e829a7edb8e07d24c849aad7132c80e14338e6aaab4d12d25021
root@docker-test:~# docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
61975c6a1981 training/webapp:latest "python app.py" 8 seconds ago Up 7 seconds 0.0.0.0:32783->5000/tcp furious_pasteur
大写的-P。会随机映射一个49000-49900的端口至容器内部开放的网络端口
小写的-p,则指定固定端口
上面的ps -l看出,本地的32783端口被映射到了容器的5000端口,访问宿主机的32783端口即可访问容器内web应用提供界面
通过我宿主机的IP地址进行访问 http://192.168.89.130:32783/
2、通过docker logs查看应用的信息
root@docker-test:~# docker logs -f furious_pasteur
* Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
192.168.89.1 - - "GET / HTTP/1.1" 200 -
192.168.89.1 - - "GET /favicon.ico HTTP/1.1" 404 -
192.168.89.1 - - "GET / HTTP/1.1" 200 -
3、映射所有接口地址
将本地的5000端口映射到容器的5000端口
docker run -d -p 5000:5000 training/webapp python app.py #此时会绑定本地所有接口上的所有地址
4、映射到指定地址的指定端口
docker run -d -p 192.168.89.130:5000:5000 training/webapp python app.py
5、映射到指定地址的任意端口
docker run -d -p 192.168.89.130::5000 training/webapp python app.py
6、查看映射端口配置
root@docker-test:~#
root@docker-test:~# docker port testweb
5000/tcp -> 0.0.0.0:32782
root@docker-test:~# docker port web
5000/tcp -> 0.0.0.0:32781
root@docker-test:~# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
61975c6a1981 training/webapp:latest "python app.py" 14 minutes ago Up 14 minutes 0.0.0.0:32783->5000/tcp furious_pasteur
235a7f166a79 training/webapp:latest "/bin/bash" 33 minutes ago Up 33 minutes 0.0.0.0:32782->5000/tcp testweb
6c498fba9a26 training/webapp:latest "/bin/bash" 40 minutes ago Up 40 minutes 0.0.0.0:32781->5000/tcp web
39d71abc194d ubuntu:latest "/bin/bash" About an hour ago Up About an hour db2
593de70961a0 ubuntu:latest "/bin/bash" About an hour ago Up About an hour db1
a6a32f7838ee ubuntu:latest "/bin/bash" About an hour ago Up About an hour dbdata
root@docker-test:~# docker port 61975c6a1981
5000/tcp -> 0.0.0.0:32783
root@docker-test:~#
二、自定义容器命名
1、自定义容器命名
root@docker-test:~# docker run -d -P --name web training/webapp python app.py#使用--name选项
2、查看设定后的命名
root@docker-test:~# docker ps -l
3、使用inspect查看指定容器ID的容器的名字
root@docker-test:~# docker inspect -f "` `.`Name `" 382b382521b5
二、容器互联(实现容器间通信)
使用--link参数可以让容器之间安全的进行交互
创建一个新的数据库容器进行演示
1、创建并运行数据库容器,名称为db
root@docker-test:~# docker run -d --name db training/postgres #如本地没有training/postgres镜像,则会自动从docker hub搜索到镜像并下载
2、创建完成之后查看一下
root@docker-test:~# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
19f67a71ac16 training/postgres:latest "su postgres -c '/us 2 minutes ago Up 2 minutes 5432/tcp db
3、然后创建一个新的web容器,并将它连接到db容器
root@docker-test:~# docker run -d -P --name web --link db:db training/webapp python app.py
3ac18b1df0d487c99b0f07e2fd273c53ad7b6f5beb29b830985c89fd6df40241
4、查看创建的两个docker容器(web容器和db容器)
root@docker-test:~# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3ac18b1df0d4 training/webapp:latest "python app.py" 6 seconds ago Up 4 seconds 0.0.0.0:32769->5000/tcp web
651b10778678 training/postgres:latest "su postgres -c '/us 2 minutes ago Up 2 minutes 5432/tcp db
页:
[1]