端口映射
当使用 -P 标记时,随机映射一个宿主机的端口到内部容器开放的网络端口。
当使用 -p 标记时,需要指定一个宿主服务器端口到内部容器中需要映射的端口。
eg:
-p 8010:8080
-p 51001-51010:51001-51010
网络类型
none
挂在这个网络下的容器除了 lo,没有其他任何网卡。容器创建时,可以通过 —network=none 指定使用 none 网络。
docker run -it --rm --network=none busybox
host
连接到 host 网络的容器共享 Docker host 的网络栈,容器的网络配置与 host 完全一样。使用 host 网络,容器和宿主机共用 host 网络,当启动服务时应该避免端口冲突。可以通过 —network=host 指定使用 host 网络。
docker run -it --network=host alpine /bin/sh
Bridge
Docker Daemon启动后默认创建 docker0 网桥,起初 docker0 启动时网桥上没有任何端口,
自定义网络
创建网络
# 不指定网络驱动时默认创建的bridge网络docker network create my-bridge
docker network create -d bridge my-bridge
docker network create -d bridge --subnet 172.10.0.0/24 --gateway 172.10.0.1 my-bridge
-d bridge表示自定义网络的驱动为bridge
—subnet 172.10.0.0/24
—gateway 172.10.0.1分别指定网段和网关
查看所有网络
docker network lsWARNING: Error loading config file: /Users/dh/.docker/config.json: EOFNETWORK ID NAME DRIVER SCOPE3372b4e0587f bridge bridge local6aa487329049 host host local1e2f55fcb30b my-bridge bridge local74293d532b75 none null local3df7fcb2e8c5 yjctshare_default bridge local
查看内部信息
$ docker network inspect my-bridge[{"Name": "my-bridge","Id": "1e2f55fcb30bbe75b8d3c46e684e1d4dd76242ebea39487d9ff7477818ee1f95","Created": "2021-09-16T17:34:40.6187891Z","Scope": "local","Driver": "bridge","EnableIPv6": false,"IPAM": {"Driver": "default","Options": {},"Config": [{"Subnet": "172.18.0.0/16","Gateway": "172.18.0.1"}]},"Internal": false,"Attachable": false,"Ingress": false,"ConfigFrom": {"Network": ""},"ConfigOnly": false,"Containers": {},"Options": {},"Labels": {}}]
删除网络
移除指定的网络docker network rm my-bridge
连接和断开容器到自定义网桥
1.对于正要启动的新容器
docker create --network my-bridge *** --name my-container my-image:latestdocker run --network my-bridge *** --name my-container my-image:latestdocker run = docker create + docker start .
2.对于正在运行的容器,如下命令
docker network connect my-bridge my-container
docker network disconnect my-bridge my-container
互连
不在一个网桥内,两个容器的互连--link <容器名>
docker run --name container1 -p8080:8080 -d --link container2 images:latest
docker run -itd -v /root/***/product/:/app/product/ -e TZ="Asia/Shanghai" -p 51004:8955 -h eventgraph --link tcjy-tag --link tcjy-subject --link tcjy-event --name eg-containe eg-image:20211020
eg-containe是总服务出口,tcjy-tag,tcjy-event,tcjy-subject 是子服务。中就可以直接使用 tcjy-event(容器名)作为ip访问了
url_extra = "http://tcjy-event:8080/***/predict"url_judge = "http://tcjy-event:8080/***/secondpredict"url_subject = "http://tcjy-subject:8080/***/subject"url_tag = "http://tcjy-tag:8080/***/tag"
--link <name>:<alias> 设置别名,mysqlDB是mysql的别名
$docker run --name mysql-go --link mysql:mysqlDB baxiang/mysql-go
tips:
查看端口占用
netstat -lnp|grep :80
