Docker学习--使用网络

222 阅读2分钟

一、外部访问容器

  可以通过-P或-p参数指定端口映射,来让外部也可以访问容器里的应用。

1、使用-P参数时,Docker会随机一个49000 - 49900的端口到内部容器开放的网络端口

docker run -d -P training/webapp python app.py

2、使用-p <HostPort>:<ContainerPort>格式将本地端口映射到容器的端口:

docker run -d -p 5000:5000 training/webapp python app.py

3、使用-p <IP>:<HostPort>:<ContainerPort>格式指定映射使用一个特定地址:

docker run -d -p 127.0.0.1:5000:5000 training/webapp python app.py

4、使用-p <IP>::<ContainerPort>绑定localhost的任意端口到容器的指定端口上,本地主机会自动分配一个端口:

docker run -d -p 127.0.0.1::5000 training/webapp python app.py

5、使用udp指定udp端口

docker run -d -p 127.0.0.1:5000:5000/udp trainging/webapp python app.py

6、可以使用docker port来查看映射端口配置

docker port <Container> <ContainerPort>

7、可以使用-p来绑定多个端口

docker run -d -p 5000:5000 -p 5001:5001 training/webapp python app.py

8、可以使用docker inspect获取容器内部变量

docker inspet -f "{{ .State.Pid }}" <Container>

9、可以使用--rm来标记容器,标记的容器在终止后会立即删除,--rm和-d不能同时使用

docker run -rm -p 5000:5000 training/webapp python app.py


二、容器互联

  可以使用--link参数让容器之间安全的进行交互

1、先创建一个数据库容器

docker run -d --name db training/postgres

2、删除之前创建的web容器

docker rm -f web

3、创建一个新的web容器,并将它连接到db容器

docker run -d -P --name web --link db:db training/webapp python app.py

  其中,--link的参数格式为:--link name:aliasname代表要链接的容器的名称,alias是这个连接的别名。

4、Docker通过两种方式为容器公开连接信息

  • 环境变量
  • 更新/etc/hosts文件

  可以使用env命令来查看web容器的环境变量

docker run --rm --name web2 --link db:db training/webapp env

  也可以查看/etc/hosts文件

docker run -t -i --rm --link db:db training/webapp /bin/bash
cat /etc/hosts