美文网首页
Docker 网络基础配置一(端口映射)

Docker 网络基础配置一(端口映射)

作者: 平头哥2 | 来源:发表于2019-03-04 13:33 被阅读0次

大量的互联网应用服务包含多个服务组件,这往往需要多个容器之间通过网络通信进行相互配合。Docker 目前提供了映射容器端口到宿主主机和容器互联机制来为容器提供网络服务。

Docker的四种网络模式

1. host模式 :
    docker run 使用 --net=host指定
    docker使用的网络实际上和宿主机一样
2. container模式:
    使用 --net=container:container_id/container_name
    多个容器使用共同的网络,看到的ip是一样的。
3. none 模式
    使用 --net=none指定
    这种模式下,不会配置任何网络。
4. bridge模式
    使用 --net=bridge指定,默认模式,不会指定
    此模式会为每个容器分配一个独立的network namespace

端口映射实现访问容器

外部网络访问容器 :外部的用户要访问容器,先将容器的ip映射出去,然后客户利用宿主机的ip来访问

[root@30c1fec5df6a /]# [root@langzi01 ~]# docker run -d -P training/webapp python app.py
[root@langzi01 ~]# docker ps -l
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                     NAMES
4986deb00c32        training/webapp     "python app.py"     2 minutes ago       Up 2 minutes        0.0.0.0:32768->5000/tcp   musing_haibt

通过docker ps查看发现 32768 端口映射到了容器的 5000 端口。此时访问主机的 32768 端口就可以访问容器内 web 应用提供的内容

通过docker logs查看容器信息

[root@langzi01 ~]# docker logs -f musing_haibt
* Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)

映射所有接口的地址:

使用 hostPort:containerPort 格式将本地的 5000 端口映射到容器的 5000 端口,可以执行如下命令:

[root@langzi01 ~]# docker run -d -p 5000:5000 training/webapp python app.py
ab2c757be1b4515b37859704cc5ca67af00190d8a067093dba2fecb92f65ae3d
[root@langzi01 ~]# docker ps -l
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                    NAMES
ab2c757be1b4        training/webapp     "python app.py"     5 seconds ago       Up 3 seconds        0.0.0.0:5000->5000/tcp   eloquent_kilby

此时默认会绑定本地所有接口上的所有地址(如果主机有多个 IP,那么每个 IP 的 5000 端口都映射到了容器的 5000 端口)。

多次使用 -p 参数可以绑定多个端口:

[root@langzi01 ~]# docker run -d -p 5001:5001 -p 3000:8000 training/webapp python app.py
8081850a70fd7e76fb34a8e205ef9f315ffb0f5028eded4630b7763c3a4c2816
[root@langzi01 ~]# docker ps -l
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                                                      NAMES
8081850a70fd        training/webapp     "python app.py"     4 seconds ago       Up 3 seconds        5000/tcp, 0.0.0.0:5001->5001/tcp, 0.0.0.0:3000->8000/tcp   jovial_ptolemy

映射指定地址到指定的端口:

可以使用 ip:hostPort:containerPort 格式的参数指定映射使用一个特定地址,比如 localhost 地址 127.0.0.1:

[root@langzi01 ~]# docker run -d -p 127.0.0.1:5002:5002 training/webapp python app.py
7f9341d8a64ca56cae2c7d47fbaf7327542e0ca0ef1b4b215b683b9e005c5d46
[root@langzi01 ~]# docker ps -l
CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS              PORTS                                NAMES
7f9341d8a64c        training/webapp     "python app.py"     About a minute ago   Up About a minute   5000/tcp, 127.0.0.1:5002->5002/tcp   trusting_euler

映射指定地址到指定的任意端口:

使用 ip::containerPort 格式的参数可以绑定 localhost 的任意端口到容器的 5000 端口,本地主机会自动分配一个端口:

[root@langzi01 ~]# docker run -d -p 127.0.0.1::5000 training/webapp python app.py
ba45085521a63529bb353fa3e926eb7d9b38f7df8b3332740b163f61d7627620

查看映射端口配置

[root@langzi01 ~]# docker port peaceful_franklin 5000
127.0.0.1:32769
[root@langzi01 ~]# docker port jovial_ptolemy 8000
0.0.0.0:3000

Docker 给已经创建并运行的容器添加端口映射

创建时没有添加端口映射,通过commit提交一个运行中的容器,重新运行镜像添加端口

[root@langzi01 ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
06f21b81bf7c        centos              "/bin/bash"         2 days ago          Up 2 days                               data03
127de2f57a5b        centos              "/bin/bash"         2 days ago          Up 2 days                               data02
2f5f9417b073        centos              "/bin/bash"         2 days ago          Up 2 days                               data01

#提交一个容器
[root@langzi01 ~]# docker commit -m "centos_with_httpd" -a "frankie" 2f5 centos_with_httpd:frankie
sha256:a78cc36474c845328fc44daf6bb3f1cc489a5c2a908061b07757d5990bdd0c77

[root@langzi01 ~]# docker images
REPOSITORY                  TAG                 IMAGE ID            CREATED             SIZE
centos_with_httpd           frankie             a78cc36474c8        9 seconds ago       312 MB
CONTAINER ID        IMAGE                       COMMAND             CREATED             STATUS              PORTS                    NAMES
67f671d4bf82        centos_with_httpd:frankie   "bash"              9 seconds ago       Up 8 seconds        0.0.0.0:5123->8000/tcp   lucid_almeida

[root@langzi01 ~]# docker run -itd -p 5123:80 centos_with_httpd:frankie bash
67f671d4bf82472a9e70f30d59fe161fb085a55005a95c6c1d9e4edb9bdff345
[root@langzi01 ~]# docker ps -l
CONTAINER ID        IMAGE                       COMMAND             CREATED             STATUS              PORTS                    NAMES
67f671d4bf82        centos_with_httpd:frankie   "bash"              9 seconds ago       Up 8 seconds        0.0.0.0:5123->80/tcp   lucid_almeida
 
[root@langzi01 ~]# docker exec -it 15d bash
[root@15dee97e8218 /]# /usr/sbin/httpd
[root@15dee97e8218 /]# curl 'localhost/hello.html'
Hello,World

在主机里面访问

[root@langzi01 ~]# curl '172.17.0.1:5123/hello.html'
Hello,World

查看容器的名字

[root@langzi01 ~]# docker inspect -f "{{ .Name }}" 15dee97e8218
/eager_agnesi

相关文章

  • Docker 网络基础配置一(端口映射)

    大量的互联网应用服务包含多个服务组件,这往往需要多个容器之间通过网络通信进行相互配合。Docker 目前提供了映射...

  • docker网络模式

    docker网络 使用网络 外部访问容器 -p/P端口映射参数 docker port查看当前端口映射 容器互联 ...

  • docker里面运行jupyter notebook

    <>为概念标记,在实际输入中不用输入这个 main step: 1,配置docker-主机 端口映射 docker...

  • Docker 小问题

    1. 更改端口映射,(例如,启动mysql是忘记配置端口映射) 方法1: 1.先停止容器 2.再停止docker ...

  • 5.Docker 网络管理

    查看docker网络 查看,创建,删除,docker网络 物理机和容器端口映射 练习1,通过ip 让两个容器通信 ...

  • Docker-端口映射

    Docker-端口映射 Docker端口映射 docker容器在启动的时候,如果不指定端口映射参数,在容器外部是无...

  • 容器连接

    网络端口映射$ docker run -d -P training/webapp python app.py-P ...

  • docker网络基础配置

    docker提供了映射容器端口到宿主主机和容器互联机制来为容器提供网络服务。本节讲解docker的网络功能,包括使...

  • Docker 一些命令

    Docker基础命令: -p: 端口映射 -d: 后台运行 ps: 查看当前正在运行的container ...

  • Docker管理-容器的网络映射

    1、容器的网络访问 2、容器的端口映射    A)docker container run -p hostPort...

网友评论

      本文标题:Docker 网络基础配置一(端口映射)

      本文链接:https://www.haomeiwen.com/subject/ruzbuqtx.html