Docker学习七:网络基础

来源:互联网 发布:新手学什么编程语言 编辑:程序博客网 时间:2024/05/18 11:36

       Docker支持映射容器端口到宿主机和容器互联机制来为容器提供网络服务。


一、端口映射

       1、外部访问容器应用。使用-P和-p参数来指定端口映射。当使用-P标记时,Docker会随机映射一个49000 ~ 49900的端口至容器内部开放的网络端口。

[root@localhost /]# docker run -d -p 5000:5000 -v /opt/data/registry:/tmp/registry registryc38f487f9a534b539129a6a8c1791839491708d7dd7f0048d1d3f60c449ce65e
       可以使用docker ps查看容器映射关系。

[root@localhost /]# docker ps -lCONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMESc38f487f9a53        registry            "/entrypoint.sh /etc/"   2 hours ago         Up 2 hours          0.0.0.0:5000->5000/tcp   berserk_khorana
       可以通过docker logs命令来查看应用信息。

[root@localhost /]# docker logs -f berserk_khoranatime="2017-10-30T05:48:08Z" level=warning msg="No HTTP secret provided - generated random secret. This may cause problems with uploads if multiple registries are behind a load-balancer. To provide a shared secret, fill in http.secret in the configuration file or set the REGISTRY_HTTP_SECRET environment variable." go.version=go1.7.6 instance.id=7ea175ab-5bc0-42da-b4e2-8444d684ba64 version=v2.6.2 time="2017-10-30T05:48:08Z" level=info msg="redis not configured" go.version=go1.7.6 instance.id=7ea175ab-5bc0-42da-b4e2-8444d684ba64 version=v2.6.2


       2、映射所有接口地址。使用hostPort:containerPort格式将本地的5000端口映射到容器的5000端口,可以多次使用-p来映射多个端口。

[root@localhost /]# docker run -d -p 5000:5000 -p 4000:8080 registry

       3、映射到指定地址的指定端口。

[root@localhost /]# docker run -d -p 127.0.0.1:5000:5000 -p 4000:8080 registry

       4、映射到指定地址的任意端口。

[root@localhost /]# docker run -d -p 127.0.0.1::5000 -p 4000:8080 registry


       5、查看映射的端口信息。

[root@localhost /]# docker port berserk_khorana 50000.0.0.0:5000


二、容器互联通信

       1、自定义容器名。在执行docker run 的时候用--name为容器自定义名称,可以同时使用--rm标记,则容器终止后会自动删除,但是--rm和-d参数不能同时使用。

[root@localhost /]# docker run --rm -it -p 58080:8080 --name bvrfis centos:7 /root/run.sh


       2、容器互联。使用--link参数可以实现容器间的互联。

       创建新的数据容器:

[root@localhost /]# docker run -d --name db mysql:5
       新建web容器,并将它连接到db容器:

[root@localhost /]# docker run -d -P --name web --link db:db tomcat:7 /bin/bash
       此时db和web容器建立互联关系。--link参数的格式为--link name:alias,其中name是要连接的容器名称,alias是这个连接的别名。

       Docker为2个容器建立了一个安全隧道,而且不需要映射他们的端口到宿主机上,也不用在启动的时候用-p和-P来标记端口,避免暴露数据库端口到外部网络上。