Docker 网络模式

Docker网络模式概述


Docker使用Linux桥接,在宿主机虚拟一个Docker容器网桥(docker0),Docker启动一个容器时会根据Docker网桥的网段分配给容器一个IP地址,称为Container-IP, 同时Docker网桥是 每个容器的默认网关。因为在同一宿主机内的容器都接入同一个网桥,这样容器之间就能够通过容器的Container-IP直接通信。

docker 网桥是宿主机虚拟出来的,并不是真实存在的网络设备,外部网络是无法寻址到的,这也意味着外部网络无法直接通过Container-IP 访问到容器。如果容器希望外部访问能够访问到,可以通过映射容器端口到宿主机(端口映射),即docker run 创建容器时候,通过 -p 或者 -P 参数来启用。访问容器的时候,就通过 [宿主机IP]:[容器端口]访问容器

为容器创建端口映射

方法一:

随机映射端口(从32768开始)docker   run   -d   --name   为容器指定名称   -P   镜像

方法二:

指定映射端口docker   run   -d   --name   为容器指定名称   -p   宿主机端口:容器内端口   镜像

#使用nginx镜像创建容器,名称为web1 ,随机映射端口
[root@localhost ~]# docker run -d --name web1 -P stevelugyq/nginx
f4e83d54c76efac3ae28674dc748841fd1c6410e70b337cc5695ac010ac6053
#使用nginx镜像创建容器,名称为web2,将容器内的80端口映射到宿主机的42399端口
[root@localhost ~]# docker run -d --name web2 -p 42399:80 stevelugyq/nginx
42dfd334e7973ea2eb39a24a5b0eca22f24c83b19d135789ba14b38a7a182912
root@localhost ~]# docker ps -a
CONTAINER ID   IMAGE              COMMAND                  CREATED              STATUS              PORTS                                     NAMES
42dfd334e797   stevelugyq/nginx   "/docker-entrypoint.…"   5 seconds ago        Up 4 seconds        0.0.0.0:42399->80/tcp, :::42399->80/tcp   web2
f4e83d54c76e   stevelugyq/nginx   "/docker-entrypoint.…"   About a minute ago   Up About a minute   0.0.0.0:49154->80/tcp, :::49154->80/tcp   web1
#访问
[root@localhost ~]# curl http://192.168.109.133:49154
[root@localhost ~]# curl http://192.168.109.133:42399



Welcome to nginx!



Welcome to nginx!

If you see this page, the nginx web server is successfully ins

你可能感兴趣的:(docker,网络,容器)